21
Blox Docker 클러스터링에 ECS만으로는 부족하셨다고요?

Blox — Docker 클러스터링에 ECS만으로는 부족하셨다고요?

Embed Size (px)

Citation preview

Page 1: Blox — Docker 클러스터링에 ECS만으로는 부족하셨다고요?

BloxDocker�클러스터링에�ECS만으로는�부족하셨다고요?

Page 2: Blox — Docker 클러스터링에 ECS만으로는 부족하셨다고요?

유은총 • 2015년부터 Spoqa에서 근무 • 2011년부터 Amazon Web Services 사용 중 • 2년째 Amazon ECS 사용 중 • AWS, React, Python, Rust, etc……

2

발표자

Page 3: Blox — Docker 클러스터링에 ECS만으로는 부족하셨다고요?

3

EC2ContainerService

Page 4: Blox — Docker 클러스터링에 ECS만으로는 부족하셨다고요?

• 간단한 사용법 • AWS가 클러스터 관리를 해줍니다

• 클러스터 유지에 드는 추가 비용 0 • 다른 AWS 서비스와 통합

• ECS 서비스를 ELB/ALB에 연결 • IAM task/service role

• 자유도 (vs AWS Elastic Beanstalk) • 클러스터 구성요소는 그냥 EC2 인스턴스 • AutoScaling Group 등 기존의 EC2 관리 노하우를 활용 가능

4

괜찮은 해결책

Page 5: Blox — Docker 클러스터링에 ECS만으로는 부족하셨다고요?

• 그다지 Docker-native하지 않은 환경 • 경직된 스케쥴링 구성

• 기본 배포 타입인 service는 고정된 갯수의 task를 유지하는 정도로만 동작 • service에 task definition을 커스터마이징할 여지가 아예 없음 • StartTask API가 있긴 하지만 너무 저수준

• 자유도 부족 • AWS가 뭔가 기능을 추가해 줄 때까지 손가락 빨고 기다려야 함

5

하지만

Page 6: Blox — Docker 클러스터링에 ECS만으로는 부족하셨다고요?

6

Page 7: Blox — Docker 클러스터링에 ECS만으로는 부족하셨다고요?

7

쉬운 설치

Page 8: Blox — Docker 클러스터링에 ECS만으로는 부족하셨다고요?

8

?

Page 9: Blox — Docker 클러스터링에 ECS만으로는 부족하셨다고요?

• 네 아닙니다

9

좀 이상한데요 이거 AWS 제품 아닌가요

Page 10: Blox — Docker 클러스터링에 ECS만으로는 부족하셨다고요?

10

Page 11: Blox — Docker 클러스터링에 ECS만으로는 부족하셨다고요?

• 네 아닙니다 • https://blox.github.io/ • Netflix가 서비스 인프라를 AWS로 이전하는 과정에서 탄생

11

좀 이상한데요 이거 AWS 제품 아닌가요

Page 12: Blox — Docker 클러스터링에 ECS만으로는 부족하셨다고요?

• daemon-scheduler • cluster-state-service

• 이게 전부에요? • 네

12

좋아요 그럼 이걸로 뭘 할 수 있죠?

Page 13: Blox — Docker 클러스터링에 ECS만으로는 부족하셨다고요?

• 한 컨테이너 인스턴스당 하나의 태스크를 실행 • 컨테이너 인스턴스가 추가되거나 제거되어도 그에 맞춰 반응 • 분명히 기존의 ECS에는 없던 스케쥴링 방법

13

daemon-scheduler

Page 14: Blox — Docker 클러스터링에 ECS만으로는 부족하셨다고요?

• 클러스터 상태 변경 이벤트를 수신하면서 현재 상태를 추적 • 다른 Blox 컴포넌트의 백엔드로 동작

14

cluster-state-service

Page 15: Blox — Docker 클러스터링에 ECS만으로는 부족하셨다고요?

Blox 자체보는 Blox를 가능하게 하는 것에 주목할 필요가 있습니다.

15

겨우 이게 다인가요?

Page 16: Blox — Docker 클러스터링에 ECS만으로는 부족하셨다고요?

• 컨테이너 인스턴스 및 태스크의 상태 변경을 CloudWatch Events로 발송 • 다양한 방법으로 클러스터 상태를 추적 가능

• AWS Lambda, Amazon SQS, Amazon Kinesis Stream 등 • 현재 클러스터 상태가 어떤지 알려면 계속해서 이벤트 스트림을 읽고 있었어야 함

• Blox의 cluster-state-service가 이 역할을 담당

16

ECS Event Stream

Page 17: Blox — Docker 클러스터링에 ECS만으로는 부족하셨다고요?

• 이런 기능들을 ECS에 직접 추가할 수도 있었겠지만 • 다양한 비지니스 요구사항을 직접 ECS에 추가하기엔 요구사항이 너무 다양함 • 필요한 기능을 ECS가 추가해주길 기다리는 건 너무 오래 걸림

• 대신 ECS를 커스터마이즈할 수 있는 충분한 API를 주고 • 구체적으로 필요한 기능 구현은 커뮤니티에 맡기려는 것으로 보임

17

의의

Page 18: Blox — Docker 클러스터링에 ECS만으로는 부족하셨다고요?

18

로드맵

Page 19: Blox — Docker 클러스터링에 ECS만으로는 부족하셨다고요?

• daemon-scheduler와 cluster-state-service는 일종의 예제 또는 기반 인프라 • 커스텀 스케쥴러 또는 추가 기능 등을 만들고 싶어하는 사람이 참조하기 위함 • 오픈 소스 https://github.com/blox/blox

19

전망

Page 20: Blox — Docker 클러스터링에 ECS만으로는 부족하셨다고요?

이제 직접 도전해보세요!

20

Docker 클러스터링에 ECS로는 부족하셨다고요?

Page 21: Blox — Docker 클러스터링에 ECS만으로는 부족하셨다고요?

서울�본사�서울특별시 강남구 테헤란로 420 하이리빙 빌딩 9층 TEL 02-544-6463 FAX 02-544-6460

부산�지사�부산광역시 부산진구 부전동 426-7 신동아오피스텔 1007호 TEL 02-544-6463 FAX 02-544-6460

주식회사 스포카

SEOUL·BUSAN·TOKYO

도쿄�지사�⊩151-0053 東京都渋谷区代々木1-21-12ヤマ

ノ26ビル 3F

TEL 03-6869-3610