Docker기반 분산 플랫폼

27
Docker기반 분산 플랫폼 Docker Korea 3# Meetup 정성현 [email protected] 1

Transcript of Docker기반 분산 플랫폼

Page 1: Docker기반 분산 플랫폼

Docker기반 분산 플랫폼 Docker Korea 3# Meetup 정성현 [email protected]

1

Page 2: Docker기반 분산 플랫폼

2 About Me

Mobigen(빅데이터 회사)에서 2년차 개발자 안드로이드어플(Mobizen) 만드는 회사 아닙니다. 주 관심 분야: Hadoop, Docker, Spark 등등..

정성현 [email protected]

Page 3: Docker기반 분산 플랫폼

분산 플랫폼의 필요성 기존 데이터 처리 패턴

3

급속히 증가하는 데이터 처리량

-  스마트폰의 대중화로 인한 데이터 증가 -  단일 DBMS의 Scale-up 한계 -  메모리 기반 통계처리(기계학습) 요구

수집 가공 분석 결과

Page 4: Docker기반 분산 플랫폼

분산 플랫폼의 필요성 기존 데이터 처리 패턴

4

급속히 증가하는 데이터 처리량

-  스마트폰의 대중화로 인한 데이터 증가 -  단일 DBMS의 Scale-up 한계 -  메모리 기반 통계처리(기계학습) 요구

수집 가공 분석 결과

분산환경 도입의 필요성

Page 5: Docker기반 분산 플랫폼

새로운 시스템을 도입하기에는 예산 부족

기존 시스템의 문제점 기존 시스템의 문제점

5

Page 6: Docker기반 분산 플랫폼

기존 시스템을 분산환경에서 Scale-out하기 위해서는 code-level의 변경 필요

시스템 종속관계나 민감한 데이터로 인한 Public 환경으로의 Migration 어려움

새로운 시스템을 도입하기에는 예산 부족

기존 시스템의 문제점 기존 시스템의 문제점

6

Page 7: Docker기반 분산 플랫폼

기존 시스템을 분산환경에서 Scale-out하기 위해서는 code-level의 변경 필요

시스템 종속관계나 민감한 데이터로 인한 Public 환경으로의 Migration 어려움

기존 시스템의 문제점 기존 시스템의 문제점

7

Page 8: Docker기반 분산 플랫폼

기존 시스템을 분산환경에서 Scale-out하기 위해서는 code-level의 변경 필요

당시 시스템을 개발했던 사람은 이미 다른 회사 사람

시스템 종속관계나 민감한 데이터로 인한 Public 환경으로의 Migration 어려움

기존 시스템의 문제점 기존 시스템의 문제점

8

Page 9: Docker기반 분산 플랫폼

기존 시스템을 분산환경에서 Scale-out하기 위해서는 code-level의 변경 필요

당시 시스템을 개발했던 사람은 이미 다른 회사 사람

시스템 종속관계나 민감한 데이터로 인한 Public 환경으로의 Migration 어려움

새로운 시스템을 도입하기에는 예산 부족

기존 시스템의 문제점 기존 시스템의 문제점

9

Page 10: Docker기반 분산 플랫폼

최소한의 수정으로 기존시스템에  늘어나는 데이터를 처리가능한 Scale-­‐out  기능을 확보하자  

Page 11: Docker기반 분산 플랫폼

Docker 도입 배경

- Docker Registry를 이용하여 Application이미지를 관리하고 손쉽게 배포 Docker Registry

-  YARN Resource Manager를 이용한 Resource Scheduling -  YARN에서 Resource(CPU, Memory)를 Docker container에 할당

YARN (Yet Another Resource Negotiator)

-  Docker container를 이용하여 추가적인 요청(또는 Event)이 있을 때 Docker 이미지를 이용하여 동일한 기능을 갖는 container를 추가적으로 실행하여 Scale-out

-  가상화된 Application의 성능 저하 없이 native수준의 성능을 확보할 수 있다.

Docker Container

Page 12: Docker기반 분산 플랫폼

Lavender 대용량 로그 분석 플랫폼

12

Management Application

Cluster

Monitoring Application Status Cluster Resource

Search Query

Analysis

Provisioning Software

Page 13: Docker기반 분산 플랫폼

Lavender 개발프로세스

13

•  APPLICATION 실행관련 설정파일과 WORK DIRECTORY를 패키징

•  빌드된 BUNDLE을 REPOSITORY에 저장

•  기존 환경과 동일한 환경에서 APPLICATION 개발

•  운용환경의 독립적 개발

DEVELOPMENT

BUILD

•  BUNDLE을 플랫폼에 등록 •  이미지를 각 노드에 배포

DEPLOY

•  BUNDLE 이미지로 부터 APPLICATION 실행

•  APPLICATION 자원/상태 모니터링

LAUNCH

Page 14: Docker기반 분산 플랫폼

Bundle Write here your great subtitle here.

14

$ lavender bundle build ${CONFIG_FILE} ${OUTPUT_DIR}

개발이 완료된 Application working directory에서 bundle build 수행

FILESYSTEM

CONFIGURATIONS 실행에 필요한 설정등을 함께 패키징 ( resource, network, environment variables ..)

$ docker build –t ${TAG} ${PROJECT_DIR}

Page 15: Docker기반 분산 플랫폼

YARN Docker container에 자원 할당

15

1. 사용자가 원하는 Spec(CPU core, Memory)의 자원을 ResourceManager에 요청 2. ResourceManager는 가용한 자원을 보유한 NodeManager에게 자원 할당을 요청 3. NodeManager는 요청한 자원에 대해 Container단위로 자원을 할당

Hadoop 2.x부터 도입 Container에 CPU, Memory단위로 자원 할당 및 회수

EX) 만약 YARN으로부터 CPU: 1 core, Memory: 1GB를 할당 받았다면 $ docker run --cpu-set 0 --memory 1024m ${IMAGE} ${COMMAND}

Page 16: Docker기반 분산 플랫폼

Application 실행 과정 YARN과 Docker을 이용한 Application의 실행 과정

16

Page 17: Docker기반 분산 플랫폼

Application 실행 과정 YARN

17

Page 18: Docker기반 분산 플랫폼

Application 실행 과정 Docker

18

Page 19: Docker기반 분산 플랫폼

Scale-out Docker container를 이용한 scale-out

19

수집 (Collect)

처리 (Process)

저장 (Store)

Page 20: Docker기반 분산 플랫폼

Scale-out Docker container를 이용한 scale-out

20

수집 (Collect)

처리 (Process)

저장 (Store)

트래픽이 증가함에 따라 처리과정의 과부하가 생기는 경우  

Page 21: Docker기반 분산 플랫폼

Scale-out Docker container를 이용한 scale-out

21

수집 (Collect)

처리 (Process)

저장 (Store)

과부하로 판단되는 부분의 수평적 증설(Scale-­‐out)을 통해 해결  

Page 22: Docker기반 분산 플랫폼
Page 23: Docker기반 분산 플랫폼
Page 24: Docker기반 분산 플랫폼
Page 25: Docker기반 분산 플랫폼
Page 26: Docker기반 분산 플랫폼
Page 27: Docker기반 분산 플랫폼

Q & A 지금은 인수시험 X, 긍정적인 마인드로 물어봐주세요^^