개요: 회사 프로젝트에 backend 디렉토리와 functions 디렉토리를 따로 관리함. 둘 다 api를 관리하는 디렉토리인데, 왜 따로 관리하는지 궁금해짐
backend와 functions 디렉토리 둘 다 서버에 배포되는 통칭 백엔드 기능이다.
하지만 서버에 배포도 따로 진행하고, 그런 부분들이 궁금해져서 알아봄.
우선, backend는 App Engine 플랫폼을 이용하여 함수가 올라가고, functions는 Cloud Functions 플랫폼을 이용함(둘 다 GCP 플랫폼에서 제공하는 서버기능)
그렇다면 Cloud Functions과 App Engine이란?
Cloud Functions
- 서버리스 이벤트 기반 함수 (서버리스란: 관리, 비용의 부담을 줄이고, 서버 스케일이 자동으로 조정되어 트래픽 변화에 쉽게 대응할 수 있게 하는 서비스)
- 이벤트 기반의 코드로, HTTP 요청, Cloud Storeage 이벤트 등 다양한 이벤트에 반응하여 실행될 수 있는 서비스
- 함수가 필요할 때마다 자동으로 스케일 되며, 트래픽이 증가하면 자동으로 더 많은 인스턴스가 생성되 사용자들에게 불편함을 제공하지 않음
이벤트 기반의 코드라는게 중요한데, Cloud Functions는 한 인스턴스에서 뭔가가 실행된다면, Cloud Functions는 하나의 인스턴스만 실행된다.
- 예시) A B C 인스턴스가 존재 A가 동작한다면?
- Cloud Function에선, 함수마다 따로 배포, 등록하므로 A가 동작하면, 동작에 대한 서버 트래픽 A만 잡아먹음
- A 함수만 켜지고, 실행되고 응답하는 시스템
- 단점으론 매 번 함수가 호출 될 떄 마다 A함수를 켜는 시간이 듬 (그래서 자주동작하지 않고, 이벤스 함수만 따로 관리하는듯)
App Engine
- 서버리스 서버로, 트래픽에 자동으로 대응하고 인프라 관리가 따로 없음
- 장기 실행 애플리케이션: 웹 애플리케이션, Restful API등을 호스팅 할 수 있고, 지속적인 요청 처리가 가능함
- 추가적으로 빠른 배포도 지원
App Engine은 일반적인 서버와 비슷하게 동작하지만 서버리스로 트래픽 대처에 용이함
그리고 Cloud Functions와 동작적인 부분에서 큰 차이를 보자면
- 예시) A B C 인스턴스가 존재 A가 동작한다면?
- App Engine에선, A가 동작하더라도, A B C 전부를 갖는 서버가 켜짐
- 장점으론, A가 자주동작 또는, B, C도 함께 자주동작 하는 api라면, 지속적인 요청 처리가 가능하고, 빠른 처리가 가능함
결론: Cloud Functions는 단기적이고, 자주 이용되지 않는 이벤트 함수를 등록하여 리소스를 효율적으로 활용 가능하고 App Engine은 장기적이고, 자주 이용되는 함수를 등록하여 리소스를 효율적으로 활용 가능하다.
댓글