본문 바로가기
Network/Server

[Cloud] Google app engine에 대하여

by 며루치꽃 2021. 7. 5.

Q. Google App Engine?

Google App Engine이란 Google 인프라스트럭쳐를 이용하여 원하는 웹 어플리케이션 등을 쉽게 개발 / 배포 / 관리 할 수 있는 Cloud Computing을 지원하는 서버리스 플랫폼입니다.

HTTP / HTTPS 요청을 처리하는 서비스로서 아마존 웹서비스(AWS)와 유사합니다.

하지만, Google App Engine은 완전 관리형 서비스, AWS는 일부 관리형 서비스로 나뉩니다.

 

 

Google App Engine 공식 홈페이지 : https://cloud.google.com/appengine

 

App Engine 애플리케이션 플랫폼  |  Google Cloud

Google App Engine을 사용하면 앱 개발자가 완전 관리형 서버리스 플랫폼에서 원하는 프로그래밍 언어로 확장 가능한 웹 및 모바일 백엔드를 구축할 수 있습니다.

cloud.google.com

Q. 서버리스(Serverless)? 

개발자가 서버를 관리할 필요 없이 애플리케이션을 빌드하고 실행할 수 있도록 하는 클라우드 네이티브 개발 모델

개발자는 배포를 위해 코드를 컨테이너에 패키징만 하면 되고, 클라우드 제공업체가 서버 인프라에 대한 프로비저닝, 유지 관리, 스케일링 등의 일상적인 작업을 처리합니다.

 

Q. 프로비저닝?

프로비저닝은 IT 인프라를 설정하는 프로세스입니다. 또한 사용자와 시스템에서 사용할 수 있도록, 데이터와 리소스에 대한 액세스를 관리하는 데 필요한 단계를 지칭하기도 합니다. 프로비저닝과 설정은 각기 다른 작업이지만, 둘 다 배포 프로세스의 단계에 포함되며 일단 프로비저닝이 완료되어야 설정 단계를 진행할 수 있습니다. 

 

서버 프로비저닝

서버 프로비저닝은 필요한 리소스를 기반으로 네트워크에서 사용될 서버를 설정하는 프로세스입니다. 

새로운 시스템을 생성한 후 가동 상태로 만드는 데 필요한 모든 작업은 물론, 해당 시스템에 대해 원하는 상태를 정의하는 작업도 포함됩니다.

서버 프로비저닝은 데이터센터에 물리적 하드웨어 설치, 소프트웨어 설치 및 설정, 운영 체제 및 애플리케이션 포함, 미들웨어와 네트워크 및 스토리지 연결로 이루어집니다. 

 

프로비저닝을 자동화하는 방법

과거 IT 인프라 프로비저닝은 물리적 서버의 설정부터 하드웨어를 원하는 상태로 설정하는 것까지 보통 수동으로 이루어졌으며, 추가 용량을 원하는 경우 하드웨어를 더 주문해서 도착할 때까지 기다리고 나서야 설정과 프로비저닝 작업을 진행할 수 있었습니다. 

하지만 오늘날 인프라는 소프트웨어에 정의되어 있는 경우가 많으며 가상화 컨테이너 덕분에 프로비저닝 프로세스 속도를 높이면서도 하드웨어 프로비저닝과 관리를 빈번하게 진행할 필요가 없어졌습니다.프로비저닝은 자동화를 통해 처리할 수도 있습니다.

 

스케일 아웃 (Scale Out) 과 스케일 업 (Scale Up)

스케일 아웃 (Scale Out)

'스케일 아웃'이란 서버의 대수를 늘려 전체 처리 능력을 향상시키는 방법이다. 수평 스케일(Horizontal Scale)이라고 부르기도 한다. 서버의 가상화 기능을 사용하고 하나의 케이스 내에서 가상으로 복수 서버를 구축해 스케일 아웃과 동등한 효과를 제공할 수도 있다. 이러한 방식은 스케일 위드인 또는 가상 스케일 아웃 이라고 부르기도 한다.

스케일 아웃의 경우 서버 한 대가 장애로 다운 되더라도 다른 서버로 서비스 제공이 가능하다는 장점이 있다. 각 서버에 걸리는 부하를 균등하게 분배해주는 '로드밸런싱'이 필수적으로 동반되어야 한다.

 

개개의 처리가 단순하지만 다수의 처리를 동시 병행적으로 필요로 하는 경우에 적합하다.  또한 데이터 정합성(데이터의 모순없이 일관되게 일치함) 유지에 대한 요건이 어렵지 않은 경우에 적합하다. 주로 웹 서버나 데이터가 읽기 전용인 검색엔진 데이터 분석 처리, VOD(주문형비디오) 서비스, 일부의 과학기술 계산, 메일 서버나 게시판 등의 애플리케이션 등의 운영에 사용된다.

 

스케일 업 (Scale Up)

'스케일 업'은 서버 자체를 증강하여 처리 능력을 향상시키는 방법이다. 수직 스케일(Vertical Scale)이라고 부르기도 한다. 주로 CPU나 RAM 등을 추가하거나 그 외의 부품을 고성능으로 교환하는 방법을 의미한다.

스케일 업의 경우 한 대의 서버에 모든 부하가 집중되므로 장애 시 해당 서비스에 큰 영향을 줄 수 있는 위험성이 있다.


애플리케이션 서버에서는 스케일 아웃이 가능하지만 빈번히 갱신이 발생하는 OLTP(On-Line Transaction Processing) 데이터베이스에는 정합성(데이터의 모순없이 일관되게 일치함) 유지를 위해 스케일 업이 적합하다.

Google App Engine의 장점

관리의 용이성

같은 서비스를 EC2를 사용해 구축한다고 하면 Elastic Load Balancer + Auto Scaling Group + EC2 + Route53 설정 등을 해줘야하고 추가적으로 배포도 신경 써줘야 하며, 앱이 죽었는지 살았는지 Health Check도 필요합니다. 하지만 구글 앱 엔진은 이런게 필요없습니다. Load Balancer와 Scaling 설정은 스스로 혹은 간단한 옵션으로 관리하며 인스턴스가 죽으면 자동으로 해당 인스턴스를 자동으로 재시작합니다.

 

확장의 용이성

트래픽이 많은 인프라를 직접 관리할 필요 없이 트래픽이 많은 웹 어플리케이션을 구축할 수 있습니다. 

 

무중단 서비스

내부적으로 Blue Green Deployment를 구현, 새로운 앱을 배포하면 앱 엔진 내부에서 새로운 앱을 배포 후 라우팅을 새로운 앱으로 돌립니다.

 

가격 책정

장비 사용에 대한 기존의 호스팅 비용 청구 방식이 아닌 스토리지 / 네트워크 트래픽 / CPU / 서비스에 대한 비용 청구 방식

 

  • 참고

- 구글 앱 엔진: https://dev.wisedog.net/2018/04/22/introduce-google-cloud-app-engine-1/

- 서버리스 : https://www.redhat.com/ko/topics/cloud-native-apps/what-is-serverless

 

댓글