KEMBAR78
Amazon EC2 Container Service 자세히 보기 - 김상필 (AWS 솔루션즈 아키텍트) | PDF
월간 웨비나
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	
  	
  	
  	
  	
  	
  	
  

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

  • 1.
    월간 웨비나 2015년 8월26일 금요일 | 오전 11시 http://aws.amazon.com/ko Amazon EC2 Container Service 자세히 보기
  • 2.
  • 3.
    v   Amazon EC2Container Service 자세히 보기 컨테이너 및 Docker 서비스 출시 및 What’s new 주요 구성요소 데모 시연 사용 패턴
  • 4.
    컨테이너란? •  운영체제 가상화 • 프로세스 격리 •  자동화 •  이미지 기반 Server   Guest  OS   Bins/Libs   Bins/Libs   App2  App1  
  • 6.
    v   손쉬운 사용,표준화, 상호운용성을 갖춘 컨테이너 •  컨테이너 기술은 이전부터 존재 (예 : LXC, Solaris Zones, BSD Jails) •  컨테이너는 단지 철제 상자가 아님 •  Docker를 사용하면, 로우-레벨 컨테이 너가 다음 장점을 갖게 됨 : -­‐  손쉬운 사용, 툴 -­‐  재사용 가능 컴포넌트 -­‐  현존하는 대부분 Linux 서버에서 구 동 : 물리, 가상, 클라우드, …
  • 7.
    컨테이너 기술의 장점 Portable • 이식성 장점 •  이미지 기반 배포, 버전 관리 •  어느 곳에서 운영하던 동일한 환 경 •  개발/테스트/운영 환경 동일Server   Guest  OS   Bins/Libs   Bins/Libs   App2  App1  
  • 8.
    컨테이너 기술의 장점 Flexible • 유연성 •  이미지 기반으로 배포되는 컨테 이너는 클린하고, 재사용 가능한 모듈화 환경 •  마이크로서비스를 통해 어플리케 이션을 작은 단위로 분할하고, 복 잡성 줄이고, 신속하게 개발하는 것을 가능하게 함 Server   Guest  OS   Bins/Libs   Bins/Libs   App2  App1  
  • 9.
    컨테이너 기술의 장점 Fast • 도커 이미지는 가볍다. •  개발, 빌드, 배포하는 과정이 빠 르게 이루어진다. Server   Guest  OS   Bins/Libs   Bins/Libs   App2  App1  
  • 10.
    컨테이너 기술의 장점 Efficient • 필요한 리소스만을 배포 •  OS kernel & libs 를 공유하여 사 용하기 때문에 어플리케이션이 배포하는 것만을 배포 Server   Guest  OS   Bins/Libs   Bins/Libs   App2  App1  
  • 11.
    컨테이너 배포 형태 기본 이미지   Ruby   Redis   Logger   App   개발자  IT  운영   패치  유틸리티  
  • 12.
    +   •  손쉬운배포 •  환경의 신뢰성 •  대규모 환경 관리의 용이성 •  자동화 •  분산 애플리케이션 많은 고객이 Docker를 AWS에서 구동하는 이유
  • 13.
    v   컨테이너 사용사례 •  손쉬운 애플리케이션 배포 •  애플리케이션 라이프 사이클 •  지속적 통합 (Continuous Integration) •  지속적 배포 (Continuous Delivery) •  플랫폼 서비스 (PaaS) •  분산 애플리케이션 구성 •  분산 애플리케이션 확장
  • 14.
    v   Amazon EC2Container Service 자세히 보기 컨테이너 및 Docker 서비스 출시 및 What’s new 주요 구성요소 데모 시연 사용 패턴
  • 15.
    v   Amazon EC2Container 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 인스턴스 비용만 발생
  • 16.
    v   모든 규모의클러스터를 손쉽게 관리 •  별도 실행 없음 •  전체 상태 관리 •  컨트롤 및 모니터링 •  대규모 확장
  • 17.
    v   유연한 컨테이너배치 •  어플리케이션 •  배치 작업 •  복수 스케줄러
  • 18.
    v   AWS 서비스와함께 사용되도록 설계 •  Elastic Load Balancing •  Elastic Block Store •  Virtual Private Cloud •  IAM •  CloudTrail
  • 19.
    v   확장 가능 • 전체 API 제공 •  오픈소스 에이전트 •  커스텀 스케줄러
  • 20.
    v   Amazon EC2Container Service 자세히 보기 컨테이너 및 Docker 서비스 출시 및 What’s new 주요 구성요소 데모 시연 사용 패턴
  • 21.
    v   주요 구성요소 •  Container Instance •  Cluster •  Task Definitions •  Tasks •  Service Container   Instance   Container   Instance   …   Container   Instance   Cluster   Task   defini3on   Task   Service  
  • 22.
    v   Amazon EC2인스턴스 Docker 데몬 Amazon ECS 에이전트 AMI 제공 주요 구성 요소: Container Instance
  • 23.
    v   지역 단위 자원풀 Container 인스턴스들의 그룹 최소에서 시작, 동적 확장 주요 구성 요소: Clusters
  • 24.
    주요 구성 요소:Task Definitions Container   Instance   Schedule   Shared  data  volume   PHP  App   Time  of  day  App  
  • 25.
    !!!!!!!{! "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
  • 26.
    주요 구성 요소: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  
  • 27.
    [! {! "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! }!
  • 28.
    v   작업의 단위 연관된컨테이너들의 그룹 컨테이너 인스턴스에서 실행 주요 구성 요소: Tasks
  • 29.
    주요 구성 요소:Tasks Good for short-lived containers, e.g. batch jobs
  • 30.
    주요 구성 요소:Services Good for long-running applications and services  
  • 31.
    v   Long running애플리케이션 •  로드 밸런싱 •  상태 관리 •  스케일-업 및 스케일-다운 •  업데이트 관리
  • 32.
    v   •  컨테이너간 트래픽을 로드 밸런싱 •  건강하지 않은 컨테이너의 자동 회복 •  서비스의 탐지 ElasHc  Load  Balancing   주요 구성 요소: Services
  • 33.
    v   스케일-업 및스케일-다운 ElasHc  Load  Balancing   주요 구성 요소: Services
  • 34.
    v   신규 버전배포 ElasHc  Load  Balancing   주요 구성 요소: Services
  • 35.
    v   Amazon EC2Container Service 자세히 보기 컨테이너 및 Docker 서비스 출시 및 What’s new 주요 구성요소 데모 시연 사용 패턴
  • 92.
    v   Amazon EC2Container Service 자세히 보기 컨테이너 및 Docker 서비스 출시 및 What’s new 주요 구성요소 데모 시연 사용 패턴
  • 93.
    서비스를 기동하고 싶어요.   전형적인 사용 패턴
  • 94.
    Run  Instances   Amazon  EC2   Docker  및 ECS 에이전 트를 지원하는 커스 텀 AMI  사용.     Default  클러스터에 인스턴스를 등록   전형적인 사용 패턴
  • 95.
    Create  Task  DefiniHon   Containers를 위한 자 원 요구사항을 선언   전형적인 사용 패턴
  • 96.
    Create  Service   Services를위한 자원 요구사항을 선언   X  5   ElasHc  Load  Balancing   전형적인 사용 패턴
  • 97.
  • 98.
    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
  • 99.
    여러분의 피드백을 기다립니다! • 공식 블로그: http://aws.amazon.com/ko/blogs/korea •  한국어 공식 소셜 미디어 @AWSKorea   AmazonWebServices.ko   AWSKorea   AWSKorea