수업을 듣고 배운 내용과 연습한 내용을 정리하였습니다
개인 공부 후 자료를 남기기 위한 목적임으로 내용 상에 오류가 있을 수 있습니다.
잘못된 부분이 있거나 질문사항은 댓글로 남겨주시면 성심성의껏 답변해드리겠습니다. 감사합니다!
교재 <구글 클라우드 플랫폼 인 액션> 를 읽고 주요 내용을 메모했습니다.
[ 실습 ]
* App Engine
[ 이론 ]
* 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의 마이크로서비스 아키텍처와 관련된 자세한 내용
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
* App Engine Flexible
cloud.google.com/appengine/docs/flexible?hl=ko
요약
- 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 |
댓글