본문 바로가기
GCP

Cloud Functions와 App Engine은 왜 따로 쓰이나

by 갈잃자 2024. 8. 21.

개요: 회사 프로젝트에 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가 동작한다면?

  1. Cloud Function에선, 함수마다 따로 배포, 등록하므로 A가 동작하면, 동작에 대한 서버 트래픽 A만 잡아먹음
  2. A 함수만 켜지고, 실행되고 응답하는 시스템
  3. 단점으론 매 번 함수가 호출 될 떄 마다 A함수를 켜는 시간이 듬 (그래서 자주동작하지 않고, 이벤스 함수만 따로 관리하는듯)

 

App Engine

  • 서버리스 서버로, 트래픽에 자동으로 대응하고 인프라 관리가 따로 없음
  • 장기 실행 애플리케이션: 웹 애플리케이션, Restful API등을 호스팅 할 수 있고, 지속적인 요청 처리가 가능함
  • 추가적으로 빠른 배포도 지원

App Engine은 일반적인 서버와 비슷하게 동작하지만 서버리스로 트래픽 대처에 용이함

그리고 Cloud Functions와 동작적인 부분에서 큰 차이를 보자면

- 예시) A B C 인스턴스가 존재 A가 동작한다면?

  1. App Engine에선, A가 동작하더라도, A B C 전부를 갖는 서버가 켜짐
  2. 장점으론, A가 자주동작 또는, B, C도 함께 자주동작 하는 api라면, 지속적인 요청 처리가 가능하고, 빠른 처리가 가능함

 

결론: Cloud Functions는 단기적이고, 자주 이용되지 않는 이벤트 함수를 등록하여 리소스를 효율적으로 활용 가능하고 App Engine은 장기적이고, 자주 이용되는 함수를 등록하여 리소스를 효율적으로 활용 가능하다.

댓글