Amazon EC2 Container Service 자세히 보기 - 김상필 (AWS 솔루션즈 아키텍트)

Preview:

Citation preview

월간 웨비나 2015년 8월 26일 금요일 | 오전 11시

http://aws.amazon.com/ko

Amazon EC2 Container Service 자세히 보기

김상필, Solutions Architect sangpill@amazon.com

v  

Amazon EC2 Container Service 자세히 보기

컨테이너 및 Docker 서비스 출시 및 What’s new 주요 구성요소 데모 시연 사용 패턴

컨테이너란?

• 운영체제 가상화 • 프로세스 격리 • 자동화 • 이미지 기반

Server  

Guest  OS  

Bins/Libs   Bins/Libs  

App2  App1  

v  

손쉬운 사용, 표준화, 상호운용성을 갖춘 컨테이너 •  컨테이너 기술은 이전부터 존재 (예 :

LXC, Solaris Zones, BSD Jails)

•  컨테이너는 단지 철제 상자가 아님 •  Docker를 사용하면, 로우-레벨 컨테이

너가 다음 장점을 갖게 됨 : -­‐  손쉬운 사용, 툴 -­‐  재사용 가능 컴포넌트 -­‐  현존하는 대부분 Linux 서버에서 구

동 : 물리, 가상, 클라우드, …

컨테이너 기술의 장점

Portable • 이식성 장점 • 이미지 기반 배포, 버전 관리 • 어느 곳에서 운영하던 동일한 환경

• 개발/테스트/운영 환경 동일 Server  

Guest  OS  

Bins/Libs   Bins/Libs  

App2  App1  

컨테이너 기술의 장점

Flexible • 유연성 • 이미지 기반으로 배포되는 컨테이너는 클린하고, 재사용 가능한 모듈화 환경

• 마이크로서비스를 통해 어플리케이션을 작은 단위로 분할하고, 복잡성 줄이고, 신속하게 개발하는 것을 가능하게 함

Server  

Guest  OS  

Bins/Libs   Bins/Libs  

App2  App1  

컨테이너 기술의 장점

Fast • 도커 이미지는 가볍다. • 개발, 빌드, 배포하는 과정이 빠르게 이루어진다.

Server  

Guest  OS  

Bins/Libs   Bins/Libs  

App2  App1  

컨테이너 기술의 장점

Efficient • 필요한 리소스만을 배포 • OS kernel & libs 를 공유하여 사용하기 때문에 어플리케이션이 배포하는 것만을 배포

Server  

Guest  OS  

Bins/Libs   Bins/Libs  

App2  App1  

컨테이너 배포 형태

기본 이미지  

Ruby  

Redis  

Logger  

App  

개발자  IT  운영  

패치  유틸리티  

+  

• 손쉬운 배포

• 환경의 신뢰성

• 대규모 환경 관리의 용이성

• 자동화

• 분산 애플리케이션

많은 고객이 Docker를 AWS에서 구동하는 이유

v  

컨테이너 사용 사례

•  손쉬운 애플리케이션 배포

•  애플리케이션 라이프 사이클

•  지속적 통합 (Continuous Integration)

•  지속적 배포 (Continuous Delivery)

•  플랫폼 서비스 (PaaS)

•  분산 애플리케이션 구성

•  분산 애플리케이션 확장

v  

Amazon EC2 Container Service 자세히 보기

컨테이너 및 Docker 서비스 출시 및 What’s new 주요 구성요소 데모 시연 사용 패턴

v  

Amazon EC2 Container Service 출시

•  2015년 4월 9일 정식 출시 •  신규 기능

•  서비스 스케줄러 •  로드 밸런싱 •  관리 콘솔 •  사설 저장소 (Private Repositories) •  데이터 볼륨 •  AWS CloudTrail 통합

•  지역 -  US East (Northern Virginia), US West (Oregon), US East (California) and EU West (Ireland), Asia Pacific (Tokyo), Asia Pacific (Sydney)

•  비용 - $0, EC2 인스턴스 비용만 발생

v  

모든 규모의 클러스터를 손쉽게 관리

• 별도 실행 없음

• 전체 상태 관리

• 컨트롤 및 모니터링

• 대규모 확장

v  

유연한 컨테이너 배치

• 어플리케이션

• 배치 작업

• 복수 스케줄러

v  

AWS 서비스와 함께 사용되도록 설계

•  Elastic Load Balancing

•  Elastic Block Store

•  Virtual Private Cloud

•  IAM

•  CloudTrail

v  

확장 가능

• 전체 API 제공

• 오픈소스 에이전트

• 커스텀 스케줄러

v  

Amazon EC2 Container Service 자세히 보기

컨테이너 및 Docker 서비스 출시 및 What’s new 주요 구성요소 데모 시연 사용 패턴

v  

주요 구성 요소

•  Container Instance

•  Cluster

•  Task Definitions

•  Tasks

•  Service

Container  Instance  

Container  Instance  

…  

Container  Instance  

Cluster  

Task  defini3on  

Task  

Service  

v  

Amazon EC2 인스턴스

Docker 데몬

Amazon ECS 에이전트

AMI 제공

주요 구성 요소: Container Instance

v  

지역 단위

자원 풀

Container 인스턴스들의 그룹

최소에서 시작, 동적 확장

주요 구성 요소: Clusters

주요 구성 요소: Task Definitions

Container  Instance  

Schedule  

Shared  data  volume  

PHP  App   Time  of  day  App  

!!!!!!!{! "environment": [],! "name": "simple-demo",! "image": "my-demo",! "cpu": 10,! "memory": 500,! "portMappings": [! {! "containerPort": 80,! "hostPort": 80! }! ],! "mountPoints": [! {! "sourceVolume": "my-vol",! "containerPath": "/var/www/my-vol"! }! ],! "entryPoint": [! "/usr/sbin/apache2",! "-D",! "FOREGROUND"! ],! "essential": true! },!

! !{! "name": "busybox",! "image": "busybox",! "cpu": 10,! "memory": 500,! "volumesFrom": [! {! "sourceContainer": "simple-demo"! }! ],! "entryPoint": [! "sh",! "-c"! ],! "command": [! "/bin/sh -c \"while true; do /bin/date > /var/www/my-vol/date; sleep 1; done\""! ],! "essential": false! }!

주요 구성 요소: Task Definitions

주요 구성 요소: Task Definitions !!!!!!{! "environment": [],! "name": "simple-demo",! "image": "my-demo",! "cpu": 10,! "memory": 500,! "portMappings": [! {! "containerPort": 80,! "hostPort": 80! }! ],! "mountPoints": [! {! "sourceVolume": "my-vol",! "containerPath": "/var/www/my-vol"! }! ],! "entryPoint": [! "/usr/sbin/apache2",! "-D",! "FOREGROUND"! ],! "essential": true! },!

[! {! "image": "mysql",! "name": "db",! "cpu": 10,! "memory": 500,! "essential": true,! "entryPoint": [! "/entrypoint.sh"! ],! "environment": [! {! "name": "MYSQL_ROOT_PASSWORD",! "value": "pass"! }! ],! "portMappings": []! }!]!

EssenHal  to  our  Task  

Create  and  mount  volumes  

Expose  port  80  in  container  to  port  80  on  host  

10  CPU  Units  (1024  is  full  CPU),  500  Megabytes  of  Memory  

[! {! "image": "tutum/wordpress-stackable",! "name": "wordpress",! "cpu": 10,! "memory": 500,! "essential": true,! "links": [! "db"! ],! "entryPoint": [! "/bin/sh",! "-c"! ],! "environment": [! …! ],! "portMappings": [! {! "containerPort": 80,! "hostPort": 80! }! ]! },! ]!

From  Docker  Hub  

Mount  volume  from  other  container  

Command  to  exec  

주요 구성 요소: Task Definitions ! !{!

"name": "busybox",! "image": "busybox",! "cpu": 10,! "memory": 500,! "volumesFrom": [! {! "sourceContainer": "simple-demo"! }! ],! "entryPoint": [! "sh",! "-c"! ],! "command": [! "/bin/sh -c \"while true; do /bin/date > /var/www/my-vol/date; sleep 1; done\""! ],! "essential": false! }!

v  

작업의 단위

연관된 컨테이너들의 그룹

컨테이너 인스턴스에서 실행

주요 구성 요소: Tasks

주요 구성 요소: Tasks

Good for short-lived containers, e.g. batch jobs

주요 구성 요소: Services

Good for long-running applications and services

 

v  

Long running 애플리케이션

• 로드 밸런싱

• 상태 관리

• 스케일-업 및 스케일-다운

• 업데이트 관리

v  

• 컨테이너 간 트래픽을 로드 밸런싱 • 건강하지 않은 컨테이너의 자동 회복 • 서비스의 탐지

ElasHc  Load  Balancing  

주요 구성 요소: Services

v  

스케일-업 및 스케일-다운

ElasHc  Load  Balancing  

주요 구성 요소: Services

v  

신규 버전 배포

ElasHc  Load  Balancing  

주요 구성 요소: Services

v  

Amazon EC2 Container Service 자세히 보기

컨테이너 및 Docker 서비스 출시 및 What’s new 주요 구성요소 데모 시연 사용 패턴

v  

Amazon EC2 Container Service 자세히 보기

컨테이너 및 Docker 서비스 출시 및 What’s new 주요 구성요소 데모 시연 사용 패턴

서비스를 기동하고 싶어요.  

전형적인 사용 패턴

Run  Instances  

Amazon  EC2  

Docker  및 ECS 에이전트를 지원하는 커스

텀 AMI  사용.    Default  클러스터에 인스턴스를 등록  

전형적인 사용 패턴

Create  Task  DefiniHon  Containers를 위한 자원 요구사항을 선언  

전형적인 사용 패턴

Create  Service  Services를 위한 자원

요구사항을 선언  

X  5  

ElasHc  Load  Balancing  

전형적인 사용 패턴

Describe  Service  

전형적인 사용 패턴

v  

다음 단계

• 제품 웹사이트 http://aws.amazon.com/ecs/

• 문서 - http://docs.aws.amazon.com/AmazonECS/latest/developerguide/

• 시작하기 - http://docs.aws.amazon.com/AmazonECS/latest/developerguide/ECS_GetStarted.html

여러분의 피드백을 기다립니다!

•  공식 블로그: http://aws.amazon.com/ko/blogs/korea

•  한국어 공식 소셜 미디어 @AWSKorea  

AmazonWebServices.ko  

AWSKorea  

AWSKorea              

Recommended