본문 바로가기
Cloud/Google Cloud Platform

GCP Fundamentals #6 - Storage in the Cloud

by HaningYa 2020. 5. 21.
728x90

 

[코스정보]

 

 

Cloud Engineering with Google Cloud 전문 자격증 | Coursera

Learn Cloud Engineering with Google Cloud 전문 자격증 from Google 클라우드. This program provides the skills you need to advance your career as a cloud engineer and recommends training to support your preparation for the industry-recognized Google Cloud ...

www.coursera.org


introduction to App Engine

app engine

  • 이전에 배운 GCP 의 compute infastructure인 Compute Engine 과 Kubernetes Engine은 application 을 돌릴 인프라를 선택할 수 있다는 것이였다.
  • 인프라에 대해서 신경 안쓰고 코드만 신경쓰고 싶을땐 App Engine을 사용하면 된다.
  • App Engine은 코드를 실행하기 위한 하드웨어와 네트워킹 인프라를 관리해 준다.
  • App Engine을 통해 코드를 배포하기 위해서는 코드만 작성하면 된다.
  • App Engine은 웹 어플리케이션과 NoSQL 디비, in-memory 캐싱, 로드 밸런싱, health check, logging, 사용자 인증 같은 기능들이 내장되어 있다.
  • App Engine 은 트레픽에 따라 자동으로 scale 된다.
  • 그래서 웹앱이나 모바일 백엔드로 적합하다.
  • 두가지 환경을 제공하는데 standard 와 flexible 이다.

  • App Engine은 길게 실행되는 배치 프로세스 보다는 웹어플리케이션에 적합하다.
  • App Engine은 application을 실행 하는것 뿐 만 아니라 다른 다양한 서비스들도 제공한다.

Google App Engine Standard Environment

 

App Engine : Standard

  • standard 환경은 보다 단순한 환경이다.
  • 간단한 배포 경험과 유연성 있는 환경을 제공해 준다.
  • 매일 무료 사용량을 제공해 준다. (적은 리소스 사용량의 앱은 공짜로 돌릴 수 도 있을 것이다.)

standard requirement

  • App Engine SDK 를 구글이 여러 언어를 통해 제공해 준다.
    - 실제로 배포하기 전에 미리 로컬하게 테스트 해 볼 수 있다.
  • SDK 는 또한 단순한 명령어를 제공해 준다.
  • 도대체 어떻게 실행되는 것인가 --> runtime
  • standard 환경에서는 구글이 제공하는 Runtime 을 사용한다.
  • 구글이 제공하는 Runtime 은 특정 버전의 Java, Python, PHP, GO 와 같은 환경을 제공한다.
  • Runtime 은 또한 App Engine API 를 지원하는 라이브러리를 포함할 수 있다.
  • 만약 다른 언어로 코딩하고 싶으면 standard 환경은 적합하지 않다. Flexible 환경을 고려해야 한다.
  • standard 환경은 Sandbox라고 불리는 곳에서 코드를 실행 하므로써 코드에 제약을 준다.
  • sandbox는 하드웨어, 운영체제, 서버 위치로 부터 독립적인 소프트웨어를 만들어 준다.
  • 이 sandbox의 능력이 App Engine이 scaleable 한 이유이다.
  • 몇가지 제약조건을 보자면 
    - 로컬 파일 시스템에 write 할 수 없고 데이터 베이스 서비스를 사용해야 한다.
    - 모든 request에는 60초 time out 이 있다.
    - 임의의 써드파티 소프트웨어를 설치 할 수 없다.
  • 이런 제약조건이 싫다면 flexible 환경을 선택해라

standard app engine example

  • 각각의 App Engine은 GCP 프로젝트 위에서 동작한다.
  • App Engine은자동으로 서버 인스턴스와 로드 밸런서를 provision한다.

Google App Engine Flexible Environment

flexible app engine

  • sandbox 대신에 app engine 이 돌아갈 container를 정의할 수 있게 해준다.
  • Google compute engine의 가상 환경의 도커 container 위에서 application이 실행되게 된다.
  • App Engine이 이러한 compute engine 들을 관리해 준다.
  • 관리란 health check, 복구를 뜻하며 어디에서 실행될지 지리적 위치도 선택 가능하다.
  • backward compatible 한 중요 OS 업데이트들도 자동으로 적용된다.
  • standard run time을 사용하면 flexible 환경의 앱은 data store 이나 memcached, task queues 등등에 엑세스 할 수 있다. 

comparison between standard and flexible enviorment of app engine

  • standard 환경은 더 빠르게 인스턴스를 만들 수 있지만 인프라에 대한 access는 제한된다.
    - 사용량이 거의 없을 경우 무료로 사용할 수 있다.
  • flexible 환경은 SSH를 통해 VM 에 access 할 수 있다. 그래서 local disk 를 사용할 수 있게 하며 써드 파티 S/W를 사용할 수 있다.
    -App Engine을 통하지 않고도 네트워크 콜을 할 수 있다.

App engine vs Kubernetes Engine

  • App Engine standard 환경은 application의 배포와 스케일링에 대한 서비스들을 사용하고 싶을 때 선택한다.
  • Kubernetes Engine은 주인이 쿠버네티스 전부에 대한 flexibility 를 가지고 싶을 때 선택한다.
  • App Engine Flexible 은 위 둘의 중간쯤에 위치한다.
  • App Engine 환경은 컨테이너를 최종 수단으로 취급하지만 Kubernetes Engine의 경우 컨테이너가 기본 구성 원칙이다.

  • App engine Flexible 환경은 ssh 를 통해 VM 에 접근이 가능하며 여러 언어를 사용할 수 있는 장점이 있다. 또한 지리적 위치도 정할 수 있다.

Google Cloud Endpoints and Apigee Edge

API 

  • API : Application Programming Interface
  • 코드 내부가 어떻게 동작하는 지 알 필요 없이 인터페이스를 통해 추상화 하는것
  • 인터페이스만 바뀌지 않는다면 코드 내부가 어떻게 바뀌든 상관없다.
  • 그런데 인터페이스를 바꿔야 한다면? 기능을 추가하거나 deprecate한다면?
  • API 를 version화 해야 한다.
  • API 를 사용하는 프로그램들은 사용하는 API 의 버전과 함께 호출해야 한다.
  • GCP 는 2가지 API 관리 툴을 제공한다. 비슷한 문제를 다른 방법으로 접근한다.

cloud endpoint

  • 예를 들어 백엔드를 개발하고 이것에 대한 API 를 제공하려고 할때 허가받은 개발자 만이 쓸 수 있게 하고 싶다. 
    쉽게 모니터링 하고 싶으며 로그 또한 남기고 싶다. 누가 API 를 호출하는 지 알고 싶다.
    --> Cloud Endpoints를 사용해라!

support client

  • 위와 같은 기능들을 제공해 주고 쉽게 프록시를 서비스 프론트단에 배포하고 관리할 수 있는 API 콘솔을 제공해 준다.

apigee app

  • Apigee Edge또한 비슷한 기능을 가지고 있는데 그 근본이 다르다.
  • Apigee Edge는 비즈니스적 문제, 예를 들어 사용량 제한, 애널리틱스와같은 문제에 집중했다.
  • Apigee Edge를 사용하는 업체들은 소프트웨어 제공 업체들이다.
  • Apigee Edge는 GCP 에 없어도 되기 때문에 legacy application을 조금씩 떼어서 마이크로서비스로 바꾸어 하나씩 옮길 수 있다.

실습 : GCP Fundamentals: Getting Started with App Engine

https://googlecoursera.qwiklabs.com/focuses/8298377?parent=lti_session

 

  • App Engine 은 하드웨어와 네트워크 인프라를 관리해 준다.
  • App Engine은 사용량이 적을 경우 무료로 사용할 수 있다.
  • Flexible이 가지는 장점 (standard에 비해)는 SSH 를 사용할 수 있고 로컬 저장소를 사용할 수 있으며 써드 파티 앱을 설치 할 수 있고 다양한 언어를 사용할 수 있다는 점이다.
  • Standard가 가지는 장점(Flexible에 비해)는 구글이 런타임 바이너리를 제공하며 깔끔하게 scaling을 할 수 있고 사용량이 적을 경우 공짜로 쓸 수 있다는 점이다.
  • API 에 대한 비즈니스 용도의 애널리틱스와 빌링이 서비스가 필요하면 Apigee Edge를 사용한다.
  • GCP를 통해 로깅과 모니터링을 하는 개발자들을 위한 API 는 cloud endpoints를 사용한다.
  • 하나씩 API 를 옮기고 싶을 떈 Apigee Edge를 사용한다.
728x90

댓글