본문 바로가기
  • 클라우드야 나랑 친해지자!
TIL (Today I Learned)

2021-02-08 : GCP

by 정민규 2021. 2. 8.
반응형

수업을 듣고 배운 내용과 연습한 내용을 정리하였습니다

개인 공부 후 자료를 남기기 위한 목적임으로 내용 상에 오류가 있을 수 있습니다.

 

잘못된 부분이 있거나 질문사항은 댓글로 남겨주시면 성심성의껏 답변해드리겠습니다. 감사합니다!


교재 <구글 클라우드 플랫폼 인 액션> 를 읽고 주요 내용을 메모했습니다.

 

 

[ 실습 ]

* App Engine

 

mingyucloud.tistory.com/26

 

App Engine : 완전 관리형 애플리케이션

수업을 듣고 배운 내용과 연습한 내용을 정리하였습니다 개인 공부 후 자료를 남기기 위한 목적임으로 내용 상에 오류가 있을 수 있습니다. 잘못된 부분이 있거나 질문사항은 댓글로 남겨주시

mingyucloud.tistory.com

 

[ 이론 ]

* Google App Engine : 완전 관리형 애플리케이션 ( CHAPTER 11. 371 p )

 

- Compute Engine은 저수준 인프라(VM)의 사례였지만,

App Engine은 애플리케이션을 배포하고 실행할 때 필요한 모든 작업을 통합하기 위해 완전히 관리되는 클라우드 컴퓨 팅 환경입니다.

 

- App Engine은 몇 가지 중요한 차이점이 있는 두 개의 개별 환경으로 구성됩니다.

1. 하나의 환경은 도커 컨테이너와 같은 오픈 소스 도구를 사용하여 구축된다.

2. 독점적인 기술을 사용하여 만들어지므로 앱을 자동으로 확장할 때 구글이 특별한 처리를 할 수 있다.

 

-> 두 환경의 개념은 같거나 유사하다. 이러한 개념을 다시 학습하지 않아도 환경 간에 전환할 수 있다.

-> 환경에 따라 자신에게 적합한 App Engine을 선택하여 사용한다.

 

 

* App Engine 개념

- 애플리케이션에 대해 더 자세히 이해하기 위해 애플리케이션, 서비스, 버전 및 인스턴스 등 네 가지 개념을 사용한다.

 

 

1. 애플리케이션

- App Engine을 사용하여 작업을 호스팅하는 기본 출발점은 최상위 애플리케이션이다.

- 코드의 컨테이너 역할을 하며, 여러 서비스에 분산할 수 있다.

 

2. 서비스

- App Engine의 서비스는 애플리케이션을 더 작고 관리하기 쉬운 부분으로 나눌 수 있는 방법을 제공한다.

- 마이크로서비스와 마찬가지로 다양한 공유 API에 대한 액세스를 공유하지만, 컴퓨팅의 독립적인 구성요소 역할을 한다.

 

App Engine의 마이크로서비스 아키텍처와 관련된 자세한 내용

cloud.google.com/appengine/docs/standard/python/microservices-on-app-engine?_ga=2.163236159.-28498064.1611797554

 

Google App Engine의 마이크로서비스 아키텍처  |  Python 2용 App Engine 표준 환경

Python 2.7/3 |자바 8/11 |PHP 5/7 |Ruby |Go 1.11 / 1.12+ |Node.js 마이크로 서비스란 애플리케이션 개발을 위한 아키텍처 스타일을 의미합니다. 마이크로서비스를 사용하면 대규모 애플리케이션을 각각 담당

cloud.google.com

 

3. 버전

- 버전 자체는 특정 시점의 스냅샷과 비슷하다.

 -> 서비스가 단일 디렉터리 내에 여러 코드로 구성된 경우 서비스 버전은 App Engine에 배포하기로 결정한 정확한 시       간에 해당 디렉터리의 코드와 일치한다.

 

 

4. 인스턴스

- App Engine Standard

 -> 가벼운 샌드 바스 내에서 애플리케이션을 실행할 수 있는 CPU 및 메모리의 추상적인 부분을 나타낸다.

 -> 애플리케이션에 전송되는 요청 수에 따라 자동으로 확장 및 축소된다.

 

- App Engine Flex

 -> Compute Engine 및 도커 컨테이너 위에 구축되어 Compute Engine 인스턴스를 사용하여 코드를 실행한다.

 -> Compute Engine VM이 켜지는 데 시간이 걸리기 때문에 Flex 애플리케이션에는 항상 하나 이상의 VM 인스턴스가        실행되어야 한다.

 -> 결과적으로 Flex 애플리케이션은 24시간 내내 비용을 요구하게 된다.

 

 

 

 

* App Engine Standard 에서 애플리케이션 빌드

- Compute Engine에서와 마찬가지로 전체 가상 시스템이 아닌 특수 샌드 박스 내에서 코드가 실행되는 완전 관리형 환경이다.

- 따라서 승인된 언어 중 하나를 사용하여 "Hello, world!" 애플리케이션을 빌드해야 한다.

 

방법

- python 코드를 작성 ----> main.py

- app.yaml 코드를 작성 ----> App Engine이 실행될 때 참조되는 파일

- $gcloud app deploy app.yaml --project [프로젝트ID]     // 배포

 

 

 

샌드박스(sandbox)는 보호가 필요한 어린아이들을 위해 모래통에서만 놀도록 하는데서 유래한 소프트웨어 보안 개발기법이다. 운영 환경이 저장소로부터 테스트되지 않은 코드 변경사항 및 전면적인 실험을 분리시키는 테스트 환경으로 웹 개발, 버전 관리를 포함한 소프트웨어 개발 환경에서 사용된다.

예를 들면, 악성 바이러스나 악성코드의 경우, 이들의 공격행위를 테스트할때, 실제 운영체계나 또는 파일 또는 이러한 시스템에 추가적인 악영향을 주거나 이를 감염시킬 수 없도록 하는 차단된 환경이 필요하게 된다.

이처럼 테스트를 위해 외부로의 연결점을 차단하거나 외부로부터의 접근 및 영향을 필터링 또는 차단할수있는 통제된 환경 내에서 프로그램을 동작시키는 것을 가리킨다.

 

- 출처 : 위키백과 -

 

 

 

 

 

* App Engine Standard

 

cloud.google.com/appengine/docs/standard?hl=ko

 

Google App Engine 표준 환경 문서  |  Google Cloud

App Engine 표준 환경은 Google의 인프라에서 실행되는 컨테이너 인스턴스를 기반으로 합니다. 컨테이너는 사용 가능한 여러 런타임 중 하나로 사전 구성됩니다. App Engine 표준 환경에서는 부하가 높

cloud.google.com

 

 

* App Engine Flexible

 

cloud.google.com/appengine/docs/flexible?hl=ko

 

Google App Engine 가변형 환경 문서  |  Google Cloud

App Engine은 개발자가 본연의 작업인 코드 작성에 집중할 수 있도록 합니다. Google Compute Engine을 기반으로 하는 App Engine 가변형 환경은 부하를 분산하면서 자동으로 앱을 확장하거나 축소합니다.

cloud.google.com

 

 

 

요약

  • App Engine은 애플리케이션에 필요한 오버헤드를 단순화하는 완전 관리형 클라우드 컴퓨팅 환경이다.
  • App Engine에는 제한된 환경인 Standard와 덜 제한적인 컨테이너 기반의 Flex라는 두 가지 환경이 있다.
  • App Engine Standard는 특정 언어 런타임을 제한하지만, App Engine Flex는 도커 컨테이너에서 표현할 수 있는 모든 것을 지원한다.
  • App Engine의 기본 개념은 많은 서비스를 포함할 수 있는 애플리케이션이다. 각 서비스는 동시에 실행할 수 있는 여러 버전을 포함할 수 있다.
  • 실행 중인 각 애플리케이션 버전 아래에는 가상화된 컴퓨팅 리소스가 있다.
  • App Engine의 주요 장점은 자동 스케일링 기능으로 대부분의 최신 애플리케이션의 요구사항을 충족하도록 구성할 수 있다.
  • App Engine Standard에는 런타임에 직접 제공되는 클라이언트 라이브러리에 ( 예 : 파이썬용 google.appengine.api.mamcache API)를 통해 액세스되는 특정한 관리 서비스 세트가 제공된다.
  • App Engine 가격은 기본 컴퓨팅 리소스의 시간별 소비량을 기반으로 한다. App Engine Flex의 경우 가격은 Compute Engine 인스턴스 가격 정책과 동일하다.

 

 

 

 

 

 

* Cloud Functions : 서버리스 애플리케이션 ( CHAPTER 12. 425p )

 

 

* 마이크로서비스란 무엇인가?

마이크로서비스 아키텍처는 애플리케이션의 조각을 느슨하게 결합하여(마이크로서비스라고 함) 유지하는 애플리케이션을 빌드하고 조립하는 방법이다. 각 마이크로서비스는 독자적으로 작동할 수 있지만, 전통적인 애플리케이션은 서로 얽혀 있는 많은 부분을 가지며, 독립적으로 실행할 수 없다.

 

 

 

마이크로서비스(microservice)는 애플리케이션을 느슨하게 결합된 서비스의 모임으로 구조화하는 서비스 지향 아키텍처(SOA) 스타일의 일종인 소프트웨어 개발 기법이다. 마이크로서비스 아키텍처에서 서비스들은 섬세(fine-grained)하고 프로토콜은 가벼운 편이다. 애플리케이션을 더 조그마한 여러 서비스로 분해할 때의 장점은 모듈성을 개선하고 애플리케이션의 이해, 개발, 테스트를 더 쉽게 해주고 애플리케이션 침식에 더 탄력적으로 만들어 준다. 규모가 작은 자율적인 팀들이 팀별 서비스를 독립적으로 개발, 전개, 규모 확장을 할 수 있게 함으로써 병렬로 개발할 수 있게 한다. 또, 지속적인 리팩터링을 통해 개개의 서비스 아키텍처가 하나로 병합될 수 있게 허용한다. 마이크로서비스 기반 아키텍처는 지속적 배포와 전개(디플로이)를 가능케 한다.

 

- 출처 : 위키백과 -

 

 

 

일반적인 하나로 된(monolithic) 애플리케이션에 비해 가장 큰 이점 중 하나는 각 서비스가 다른 서비스와 느슨하게 결합된다는 것이다. 각 마이크로서비스가 자체적으로 실행될 수 있기 때문에 개발(특히 테스트)이 작고 제한적이어서 새로운 팀 구성원이 더욱 빠르게 작업에 참여할 수 있다.

또한, 각 부분을 다른 부분과 분리하면 배포가 훨씬 간단해진다. 각 부분은 사전에 정해진 기능을 수행하기 때문에, 내부적으로 구현되는 부분은 해당 서비스가 그 기능을 수행한다면 중요하지 않다.

 

 

 

반응형

'TIL (Today I Learned)' 카테고리의 다른 글

2021-02-15 : AWS  (0) 2021.02.15
2021-02-09 : GCP  (0) 2021.02.09
2021-02-05 : GCP  (0) 2021.02.05
2021-02-04 : GCP  (0) 2021.02.04
2021-02-02  (0) 2021.02.02

댓글