62
클라우드 환경 개발 플랫폼 및 Docker의 이해 ㈜오픈소스컨설팅 2014. 08. 28 최 지 웅([email protected])

[오픈소스컨설팅]오픈소스 클라우드 개발플랫폼_및_Docker의_이해_v1

Embed Size (px)

DESCRIPTION

클라우드 플랫폼 상의 개발 형태인 PaaS에 대한 내용과 Docker의 기본적인 컨셉에 대한 소개를 합니다.

Citation preview

Page 1: [오픈소스컨설팅]오픈소스 클라우드 개발플랫폼_및_Docker의_이해_v1

클라우드 환경 개발 플랫폼 및 Docker의 이해

㈜오픈소스컨설팅

2014. 08. 28

최 지 웅([email protected])

Page 2: [오픈소스컨설팅]오픈소스 클라우드 개발플랫폼_및_Docker의_이해_v1

2 - Internal Use Only -

Index

오픈소스 클라우드 개발 플랫폼 - PaaS I

Docker 소개 II

Page 3: [오픈소스컨설팅]오픈소스 클라우드 개발플랫폼_및_Docker의_이해_v1

3 - Internal Use Only -

모바일 확산

기존의 기업 모델의 변화, 수많은 스타트업의 등장, 린스타트업

Page 4: [오픈소스컨설팅]오픈소스 클라우드 개발플랫폼_및_Docker의_이해_v1

4 - Internal Use Only -

트렌드 변화

Mobile

클라우드

소셜

빅데이터

모바일(스마트폰) 에 의한 데이터, 애플케이션, 엔터프라이즈 아키텍처 변화

Page 5: [오픈소스컨설팅]오픈소스 클라우드 개발플랫폼_및_Docker의_이해_v1

5 - Internal Use Only -

클라우드 컴퓨팅 환경으로의 변화

1990 2010 2000

Web IT Enterprise IT Cloud IT

전용 Network

Appliance HW

License SW

확장성

Open API

고집적화

Open Source SW

Platform화

IOPS 예측 가능 IOPS 예측 불가

교환망/전송망 중심

IP망(Shared Network)

내부전용(Silo)

Service용(외부판매) 구축형, Manual

Commodity HW

종량제, 자동화

Expert only Everyone

사용

환경

H

W/S

W

Netw

ork

표준화/통합화

CDN

소용량 Data 대용량 Data

System Network 중요 App에서 Network 이슈 없음

Data Traffic

210X ↑

SDN

Page 6: [오픈소스컨설팅]오픈소스 클라우드 개발플랫폼_및_Docker의_이해_v1

6 - Internal Use Only -

클라우드 컴퓨팅 서비스

• SaaS : 소프트웨어를 서비스로 제공하며, 사용료 지불 방식에 따라 서비스 비용을 지불, 표준화된

애플리케이션 프로세스 제공 (Salesforce.com, MS Office Live 등)

• PaaS : 애플리케이션 개발과 조합 가능한 플랫폼 제공(SW 개발환경)(Google Apps 등)

• IaaS : 서버, 스토리지, 네트워크 등 인프라 자원을 사용량 기반으로 제공,

기본 스토리지와 컴퓨팅 능력을 제공(CPU, Disk 등)(Amazon EC2, S3 등)

계산자원 가상화 스토리지 가상화 네트워크 가상화 애플리케이션

IaaS SaaS PaaS

Software as-a-Service Platform as-a-Service Infrastructure as-a-Service

Salaesforce, MS Office Live Google App Engine, MS Azure, AWS Amazon EC2/S3, BlueLock

프레임워크, API 제공 애플리케이션 제공

Page 7: [오픈소스컨설팅]오픈소스 클라우드 개발플랫폼_및_Docker의_이해_v1

7 - Internal Use Only -

가상화 전환 – 개발/테스트/운영

시스템SW 확장

OS

Multi-App 환경

App App App

OS

x86 서버 아키텍처

App 장애/간섭, 선택/Hang

사용률

Virtualization

가상화 환경

OS

App

OS

App

OS

App

고성능 H/W 단일 OS, 다중 애플리케이션

단일 H/W, OS, 애플리케이션

파티셔닝, 캡슐화, 격리

서버 사용률 개선, 서버 즉시 확장 등의 IT 자원의 효율화

서버 통합을 통한 TCO 절감, 유연성 및 확장성의 제고라는 다양한 효용성 제공

운영체제, 네트워크, 스토리지 등의 다양한 가상화 종류

즉시성 제공 – 새로운 서버 생성에 10분을 넘기지 않음

Page 8: [오픈소스컨설팅]오픈소스 클라우드 개발플랫폼_및_Docker의_이해_v1

8 - Internal Use Only -

클라우드 서비스 환경

Page 9: [오픈소스컨설팅]오픈소스 클라우드 개발플랫폼_및_Docker의_이해_v1

9 - Internal Use Only -

소프트웨어 개발환경의 변화

1세대 (Language) : OS 위에 컴파일러를 사용한 개발언어 중심으로 어플리케이션을 개발하던 세대. 이때는 개발자의

선택에 따라 모든 것을 정할 수 있었지만, 각각을 setting 해줘야 한다.

2세대(Library) : 공통 라이브러리들을 분리하면서, 라이브러리를 사용한 개발세대로 돌입했다. 개발자들은 자주

사용되는 함수(그래프, UI, 계산)등을 매번 구현할 필요없이 라이브러리를 사용하여 쉽게 개발할 수 있게 되었다. 하지만

개발환경 테스팅 환경이 필요하다.

3세대(Framework) : 공통 라이브러리와 함께 다양한 패턴 등이 발전하며, 공통 개발방식을 찾아내어, 개발을 좀 더

유연하게 효율적으로 할 수 있는 방법들을 찾기 시작했다. 이렇게 만들어진 프레임워크를 통해 DB Access 분리,

Testing, 개발환경 등을 구축할 수 있게 되었다.

4세대(Platform) : 플랫폼으로 발전하면서 개발은 더욱 쉬워졌다. 각 벤더사에서 ALM 및 라이선스까지 관리해주며, App

Store를 사용하여, 활성화 시켰다. 하지만 App은 플랫폼에 의존하게 되었다.

5세대(Cloud) : 클라우드 PaaS의 발전으로 하드웨어까지 통합하여 제공하게 되었다. 하드웨어, DB, WAS등도 선택할

필요가 없어졌다.

Page 10: [오픈소스컨설팅]오픈소스 클라우드 개발플랫폼_및_Docker의_이해_v1

10 - Internal Use Only -

플랫폼 개발 환경의 변화

PaaS 환경

1.업무 개발 계획 수립 2.예산 산정 3.코드 개발 4.테스트 5.실행 6. 자동 확장

1.업무 개발 계획 수립 2.예산 산정 3.VM 생성 요청 4.대기 5.framework/appserver 설치 6.테스트 툴 설치 7.테스트 툴 시험 8.코드 개발 9.운영 VM 구성 10.코드 업로드 11.실행 12.요구에 따라 운영VM 추가요청 13.대기 14.새로운 VM에 운영환경 구성 15.기타 작업

가상화 환경

1.업무 개발 계획 수립 2.예산 산정 3.하드웨어 구매 요청 4.대기 5.하드웨어 구매 6.하드웨어 설치 7.OS 설치 8.OS 패치 적용 9.사용자 계정 생성 10.framework/appserver 설치 11.테스트 툴 설치 12.테스트 툴 시험 13.코드 개발 14.운영 서버 구성 15.코드 업로드 16.실행 17.요구에 따라 새로운 서버 구매 18.대기 19.새로운 서버 구성 20.기타 작업

물리적인 환경

기존의 개발환경 시스템 구성에 상당한 시간을 애플리케이션 개발에 집중하는 것이 가능

Page 11: [오픈소스컨설팅]오픈소스 클라우드 개발플랫폼_및_Docker의_이해_v1

11 - Internal Use Only -

서비스 관점에서의 클라우드 플랫폼

권한별 사용자를 위한 셀프서비스 포털 제공

출처: DataNet - http://pdf.datanet.co.kr/207/207114.PDF

Page 12: [오픈소스컨설팅]오픈소스 클라우드 개발플랫폼_및_Docker의_이해_v1

12 - Internal Use Only -

PaaS(Platform as as Service)

클라우드 공급자에 의해 지원되는 프로그래밍 언어, 라이브러리, 서비스, 툴들 을 이용하여 생성된 애플리케이션이나 인프라 사용자에 의해 생성된 애플리케이션을 배포할 수 있는 능력(기술). 사용자는 네트워크, 서버, OS 같은 클라우드 인프라스트럭처를 관리하거나 컨트롤하지 않으나 배포 제어 가능.

– NIST -

자료 : NIST’s Cloud Cube Model

특징 설명

확장성 사용자가 언제나 필요한만큼의 리소스를 할당받을 수 있도록 서비스 제공

서비스 중심 인프라스트럭처 서비스 관점으로 구성한 플랫폼 서비스 카탈로그 형태 제공

셀프 서비스

사용자가 포털을 통해 서비스 카탈로그에서 필요한 리소스를 선택하고 라이프 사이클 서비스를 제공

자동 프로비저닝

환경

요청된 서비스에 따라 운영체제, 네트워크, 스토리지, 시스템 소프트웨어까지 자동화된 프로비저닝 제공. 서비스 회수를 위한 디-프로비저닝 환경

가상화 빠르고 유연한 프로비저닝과 효율성을 위한 가상화 환경 제공

과금 사용량만큼의 과금 정책을 사용

Page 13: [오픈소스컨설팅]오픈소스 클라우드 개발플랫폼_및_Docker의_이해_v1

13 - Internal Use Only -

PaaS 특장점

개발환경 접근용이 : 클라우드 기반 환경

개발시간 및 비용 절감 : 개발시스템,S/W 구매/도입/설치 등의 절차 불필요

개발 편이성 : 손쉬운 애플리케이션 설치 자동화

확장성 : 개발자별 사용 패키지 추가 및 배포 용이

개발 환경 및 개발 프레임워크 표준화 용이 : 표준화 버전 적용

소스 코드 관리 용이

배포 편리 : 빌드, 배포툴 기본 제공

개발자단에서의 제어와 배포를 할 수 있는 DevOps 가능

멀티테넌시, 공유, 셀프서비스, 유연성, 자동 프로비저닝, 확장성 등의 기능 제공

Page 14: [오픈소스컨설팅]오픈소스 클라우드 개발플랫폼_및_Docker의_이해_v1

14 - Internal Use Only -

PaaS를 통한 DevOps 환경

DevOps는 소프트웨어 개발자들과 IT 종사자들 사이의 의사소통, 협업, 융합을 강조한 소프트웨어 개발 방법론이며, 소프트웨어 개발과 IT 운영간의

상호 의존관계에 대한 산물이다. DevOps 는 조직에서 소프트웨어 상품과 서비스를 신속히 생산하는 것에 도움이 되는 것을 목적으로 한다.

- Wikipedia –

Best Practice

자동화된 빌드와 릴리즈

자동화된 인프라스트럭처와 시스템 프로비저닝

DevOps 팀간의 일관된 도구 사용

설정과 같은 코드는 어플리케이션 코드와 분리

공유가 가능한 버전 관리 도구 보유

감사시 릴리스 추적 가능(요구사항에서 운영까지)

모델화된 수명주기

Page 15: [오픈소스컨설팅]오픈소스 클라우드 개발플랫폼_및_Docker의_이해_v1

15 - Internal Use Only -

클라우드 환경의 소프트웨어 개발

소프트웨어 라이프사이클 영역의 클라우드 사용률 조사

소프트웨어 운영 환경의 as-a-Service 영역

When asked which cloud-based services they use in software production, the top two answers were PaaS and IaaS. This is not a surprise based on market perceptions, but it is surprising that PaaS is being used by 58% of respondents while slightly fewer are using IaaS (52%).

This shows just how far PaaS has come in the last few years, offering more choices and flexibility than ever before. Based on these results,

organizations seem to be very interested in the fast development speeds that PaaS can enable.

출처: Dzone 2014 Cloud Platform Report, 2014.03

Page 16: [오픈소스컨설팅]오픈소스 클라우드 개발플랫폼_및_Docker의_이해_v1

16 - Internal Use Only -

PaaS 제공자

Page 17: [오픈소스컨설팅]오픈소스 클라우드 개발플랫폼_및_Docker의_이해_v1

17 - Internal Use Only -

PaaS 솔루션 제공자

DotCloud Java, Ruby, Perl, Python, PHP 등 다양한 언어, 프레임 워크, DB를 지원하는 PaaS

Heroku Salesforce.com에서 제공하는 서비스로 Ruby와 Node.js에 대응한 PaaS. Git 등과 연계하여 자체 애플 리케이션을 배포

Cloud Foundry vm ware 제공하는 PaaS. Spring (Java), Rails와 Sinatra (Ruby), Node.js와 Grails와 같은 프레임 워크와 MySQL, Redis, MongoDB 등의 DB를 지원

Google App Engine Google의 PaaS. Python과 Java를 지원

Windows Azure 마이크로소프트 PaaS. Windows 환경, SQL Server와 각종 언어에 대응.

OpenShift Red Hat에서 제공하는 PaaS. Java, Python, PHP, Ruby 및 Spring, Seam, Weld, CDI, Rails, Rack, Symfony, Zend Framework, Twisted, Django, Java EE와 같은 프레임워크를 지원

Page 18: [오픈소스컨설팅]오픈소스 클라우드 개발플랫폼_및_Docker의_이해_v1

18 - Internal Use Only -

CloudBees

항 목 내 용

특징 운영 환경에서의 애플리케이션 라이프사이클과 구동을 위한 개발, 디플로이 프로세스를 자동화. Jenkins를 사용하여 개발팀과 DevOps 팀이 지속적 통합을 수행할 수 있는 기반 환경을 제공

장점

• PaaS 전체 라이프사이클 제공 • 지속적 통합을 위한 Jenkins 서비스 제공 • 고사양의 JVM 기반 런타임 운영 환경 제공 • 모바일 및 백엔드 서비스 통합 기능 지원 • APM, DBaaS, SaaS 개발툴과 네트워크를 통한 확장 가능

지원언어 Java, PHP, JavaScript, Groovy, Clojure, Scala

무료영역 5개의 애플리케이션, 월당 300분의 빌드시간

서비스 영역

Application Containers App Server-as-a-Service Integration PaaS(ESB-as-a-Service) Database-as-a-Service

고객사 Netflix, ChooseDigital, Groupe Adeo, Bullhorn Inc., Viridity Energy, Lose It

Page 19: [오픈소스컨설팅]오픈소스 클라우드 개발플랫폼_및_Docker의_이해_v1

19 - Internal Use Only -

Stackato

항 목 내 용

특징 Cloud Foundry와 Docker를 지원하는 상용 PaaS 서비스 제공하며, 애플리케이션 미들웨어로써 클라우드 인프라스트럭처 상에서 수행. 런타임, 웹 프레임워크, 데이터 및 메시징 서비스에 필요한 설정을 자동화 해줌. 관리자는 사용자 권한, 애플리케이션 컴포넌트, 스케일링과 메모리를 웹 인터페이스와 CLI를 통해 제공

장점

• Cloud Foundry, Docker를 포함하는 오픈 소스 기술 구현 • 프라이빗, 퍼블릭, 하이브리드 클라우드 IaaS 환경 지원 • 서비스, 클러스터 노드, 사용자, 모니터링을 제공하는 콘솔 제공 • 무중단 서비스 기능 제공 • 기존의 애플리케이션을 쉽게 마이그레이션 가능

지원언어 Java, Ruby, Python, Perl, PHP, JavaScript, Go, Groovy, Clojure, Scala, HTML/XML, Erlang, Haskell

무료영역 애플리케이션 4GB 메모리 제한

서비스 영역

Routing, Queuing, & Scheduling System Application Containers App Server-as-a-Service Database-as-a-Service

고객사 HP, Mozilla, MTN Communications, ExactTarget, Cisco, Nelnet

Page 20: [오픈소스컨설팅]오픈소스 클라우드 개발플랫폼_및_Docker의_이해_v1

20 - Internal Use Only -

Pivotal CF

항 목 내 용

특징 Pivotal CF라는 이름의 Cloud Foundry 기반의 엔터프라이즈 PaaS. 다운타임없이 확장하고 디플로이 가능하도록 서비스를 제공하며, 빅데이터 프레임워크를 통합한 첫번째 PaaS 서비스

장점

• 프로비저닝과 바인딩된 아파치 하둡 상에 애플리케이션을 구동하는 통합 플랫폼 제공 • 리눅스 상의 모든 프레임워크와 언어를 확장할 수 있는 유연한 런타임 서비스 제공 • Pivotal One 서비스로의 자동화된 프로비저닝과 바인딩 - Pivotal HD, Pivotal RabbitMQ and Pivotal

MySQL • IaaS와 통합된 PaaS를 제공하고, vSphere 프라이빗 클라우드에 디플로이 가능

지원언어 Java, Ruby, JavaScript, Groovy

무료영역 Pivotal CF: Trial 90일 사용 가능 Pivotal Web Services (run.pivotal.io): Trial 60일 사용 가능

서비스 영역 Routing, Queuing & Scheduling System, Application Containers, App Server-as-a-Service, Database-as-a-Service

고객사 Warner Music, GE, Verizon

Page 21: [오픈소스컨설팅]오픈소스 클라우드 개발플랫폼_및_Docker의_이해_v1

21 - Internal Use Only -

Apache Stratos

항 목 내 용

특징 대표적인 오픈소스 PaaS 솔루션으로 Tomcat 서버, MySQL, PHP 컨테이너 자원을 공유하고 확장하는 서비스제공. 사용량, 자동화된 리소스 관리, 모니터링, 빌링을 포함하는 컴포넌트 제공하며, IaaS 서비스와 통합 가능

장점 • Cloud-native architecture • 확장형 카트리지 모델 • Amazon EC2, OpenStack 또는 vCloud에 디플로이 가능

지원언어 Java, PHP

무료영역 오픈 소스

서비스 영역 Routing, Queuing & Scheduling System, Application Containers

고객사 Cisco, Boeing

Page 22: [오픈소스컨설팅]오픈소스 클라우드 개발플랫폼_및_Docker의_이해_v1

22 - Internal Use Only -

Google App Engine

항 목 내 용

특징 구글 인프라스트럭처상에 애플리케이션을 디플로이하기 위한 PaaS 솔루션. 자동 스케일링, 로드밸런싱, 스토리지와 구글 클라우드 서비스와 통합 가능. 개발을 위한 무료 SDK를 제공하며 다양한 언어를 제공

장점

• 스토리지 저장 데이터에 대한 쿼리, 소팅, 트랜잭션 제공 • 자동 스케일링 및 로드 밸런싱 기능 지원 • 요청 범위를 벗어나는 작업을 수행하기 위한 비동기 태스크 큐 서비스 제공 • 특정 시간에 이벤트를 처리하는 스케줄 태스크 • 구글 클라우드 서비스 및 API와 통합 가능

지원언어 Java, Python, PHP, Go

무료영역 무료 애플리케이션의 경우 무료 서비스

서비스 영역 Application Containers, App Server-as-a-Service

고객사 Rovio, Khan Academy, blossom.io, Snapchat

Page 23: [오픈소스컨설팅]오픈소스 클라우드 개발플랫폼_및_Docker의_이해_v1

23 - Internal Use Only -

Heroku

항 목 내 용

특징 사용자의 프로젝트에 적합한 기술을 신속하게 반복하고 채택하는 데 필요한 도구를 제공. 개발, 운영 영역에서 인프라스트럭처에 대한 고민없이 클라우드 서비스 제공자에서 제공하는 기능을 그대로 사용할 수 있음

장점

• 100 개 이상의 애드온 서비스를 제공하는 광범위한 라이브러리 제공 • 애플리케이션을 컴파일하기 위한 빌드 팩 모음 제공 • 소스로부터 특정 설정을 분리하고 관리 가능 • 임시 명령을 수행하기 위한 임시 인스턴스 환경 제공

지원언어 Java, Ruby, Python, JavaScript, Clojure, Scala

무료영역 각 애플리케이션당 512M 메모리, 1개의 Postgres DB

서비스 영역 Object Stroage, Routing, Queuing & Scheduling System, Application Containers, App Server-as-a-Service, Database-as-a-Service, Mobile Backend-as-a-Service (MBaaS)

고객사 Facebook, ASICS, MailChimp, GitHub

Page 24: [오픈소스컨설팅]오픈소스 클라우드 개발플랫폼_및_Docker의_이해_v1

24 - Internal Use Only -

오픈소스 클라우드 개발 플랫폼 조사

대부분의 클라우드 사용자들이 IaaS, PaaS 영역의

클라우드 서비스를 활용하여 개발, 테스팅, 디플로이를

수행

CloudFoundary, OpenShift 양대산맥

클라우드를 통한 생산성, 품질 향상이 이루어짐

자체 환경 구축과 클라우드의 차이점은 극명하게 나타남

Page 25: [오픈소스컨설팅]오픈소스 클라우드 개발플랫폼_및_Docker의_이해_v1

25 - Internal Use Only -

CLOUD FOUNDRY vs OPENSHIFT

구분 Cloud Foundary OpenShift

아키텍처 작은 단위의 여러 개의 컴포넌트로 구성 2 개의 주요 컴포넌트로 구성

소스 저장구조 하나의 소스 저장 구조로 구성 다수의 소스 저장 구조로 구성

PaaS 설치 • BOSH 툴를 통한 설치 • IaaS 환경 필수적임

• 리눅스/가상머신을 통한 설치 • IaaS 환경이 선택적임

App 설치 컴파일 형태의(WAR) 저장 및 배포 소스코드 형태의 저장 및 배포

로드밸런싱 로드밸런싱 기능(Router) 내장 서비스(HA Proxy)를 통한 로드밸런싱

멀티테넌시 DEA 및 데이터 단위 멀티테넌시 Node 단위 멀티테넌시

확장성 Buildpack을 통한 서비스 확장 Cartridge를 통한 서비스 확장

출처: 오픈소스 PaaS 분석 종합 - 서보국, 2014.07

각 기능 단위의 주요 차이점 요약

Page 26: [오픈소스컨설팅]오픈소스 클라우드 개발플랫폼_및_Docker의_이해_v1

26 - Internal Use Only -

CLOUD FOUNDRY vs OPENSHIFT

Health Manager

Messaging(NATS)

Service Broker

DEA(Application Execution)

여러 컴포넌트의 조합

브로커(Broker)

노드(Node)

2개의 큰 단위 컴포넌트로 구성

기능항목으로 비슷하나 내부적인 아키텍처 구현 방법은 상이함

Page 27: [오픈소스컨설팅]오픈소스 클라우드 개발플랫폼_및_Docker의_이해_v1

27 - Internal Use Only -

CLOUD FOUNDRY vs OPENSHIFT

출처: 오픈소스 PaaS 분석 종합 - 서보국, 2014.07

구성 컴포넌트의 비교 맵핑

Page 28: [오픈소스컨설팅]오픈소스 클라우드 개발플랫폼_및_Docker의_이해_v1

28 - Internal Use Only -

CLOUD FOUNDRY vs OPENSHIFT

웹 애플리케이션 배포 방식의 차이

출처: 오픈소스 PaaS 분석 종합 - 서보국, 2014.07

Page 29: [오픈소스컨설팅]오픈소스 클라우드 개발플랫폼_및_Docker의_이해_v1

29 - Internal Use Only -

멀티테넌시 아키텍처

출처: 오픈소스 PaaS 분석 종합 - 서보국, 2014.07

공유 데이터 vs 자체 보유 데이터베이스

Page 30: [오픈소스컨설팅]오픈소스 클라우드 개발플랫폼_및_Docker의_이해_v1

30 - Internal Use Only -

PaaS 개발 환경에 대한 선택 조건

기업의 개발 문화, 라이프 사이클

사용의 편의성, 디버깅, 테스트, 확장성, 품질 관리

IaaS-like? SaaS-like?

서비스 vs 소프트웨어

운영환경 vs 개발환경 – 대용량 처리 트랜잭션

보안, 장애에 대한 대응

Page 31: [오픈소스컨설팅]오픈소스 클라우드 개발플랫폼_및_Docker의_이해_v1

31 - Internal Use Only -

Index

오픈소스 클라우드 개발 플랫폼 - PaaS I

Docker 소개 II

Page 32: [오픈소스컨설팅]오픈소스 클라우드 개발플랫폼_및_Docker의_이해_v1

32 - Internal Use Only -

컨테이너 기반 플랫폼

Docker, Containers, and the Future of Application Delivery

Page 33: [오픈소스컨설팅]오픈소스 클라우드 개발플랫폼_및_Docker의_이해_v1

33 - Internal Use Only -

Docker에 대하여

>50,000 pulls

>4,000 github stars

>100 컨트리뷰터

>150 개의 관련 프로젝트

• UIs, mini-PaaS, 원격 데스크탑

1000 개 이상의 docker 적용 애플리케이션

• Memcached, Redis, Node.js…

Jenkins, Travis, Chef, Puppet, Vagrant and

OpenStack과 통합

고객: Ebay, Uber, Mozilla, Cloudflare, and Rackspace,

Google

Page 34: [오픈소스컨설팅]오픈소스 클라우드 개발플랫폼_및_Docker의_이해_v1

34 - Internal Use Only -

Docker에 대하여

dotCloud 내부 프로젝트로 시작 (2013.01)

python -> go

docker는 현재 다음 기술들로 구현됨

• LinuX Containers

• Control Groups & Namespaces

• AUFS(ver1. Another Union FS, ver 2. Advanced Multi Layered Unification File System)

docker는 어디서나 실행되는 경량화되고, 이식 가능한 컨테이너로 응용프로그램의 배포를 자동화하는 오픈소스 엔진

docker is an open-source engine that automates the deployment of any application as a lightweight, portable, self sufficient container that will run virtually anywhere.

Page 35: [오픈소스컨설팅]오픈소스 클라우드 개발플랫폼_및_Docker의_이해_v1

35 - Internal Use Only -

개발, 테스트, QA, 배포

Static website

Web frontend

User DB

Queue Analytics DB

Background workers

API endpoint

nginx 1.5 + modsecurity + openssl + bootstrap 2

postgresql + pgv8 + v8

hadoop + hive + thrift + OpenJDK

Ruby + Rails + sass + Unicorn

Redis + redis-sentinel

Python 3.0 + celery + pyredis + libcurl + ffmpeg + libopencv + nodejs + phantomjs

Python 2.7 + Flask + pyredis + celery + psycopg + postgresql-client

Development VM

QA server

Public Cloud

Disaster recovery

Contributor`s laptop

Production Servers

Mu

ltip

licit

y o

f St

acks

M

ult

iplic

ity

of

har

dw

are

envi

ron

men

ts Production Cluster

Customer Data Center

Do

services an

d ap

ps in

teract ap

pro

priately?

Can

I migrate sm

oo

thly an

d q

uickly?

Page 36: [오픈소스컨설팅]오픈소스 클라우드 개발플랫폼_및_Docker의_이해_v1

36 - Internal Use Only -

시스템 개발 구성의 악몽 – N x N Matrix

Static website

Web frontend

Background

workers

User DB

Analytics DB

Queue

Developme

nt VM QA Server

Single Prod

Server

Onsite

Cluster

Public

Cloud

Contributor’

s laptop

Customer

Servers

? ? ? ? ? ? ?

? ? ? ? ? ? ?

? ? ? ? ? ? ?

? ? ? ? ? ? ?

? ? ? ? ? ? ?

? ? ? ? ? ? ?

Page 37: [오픈소스컨설팅]오픈소스 클라우드 개발플랫폼_및_Docker의_이해_v1

37 - Internal Use Only -

1960년대 화물 운송

Mu

ltip

licit

y o

f G

oo

ds

Mu

ltip

ilici

ty o

f m

eth

od

s fo

r tr

ansp

ort

ing/

sto

rin

g

Do

I wo

rry abo

ut

ho

w go

od

s interact

(e.g. co

ffee

be

ans

next to

spice

s)

Can

I transp

ort q

uickly

and

smo

oth

ly (e

.g. from

bo

at to train

to

truck)

Page 38: [오픈소스컨설팅]오픈소스 클라우드 개발플랫폼_및_Docker의_이해_v1

38 - Internal Use Only -

운송 또한 N x N Matrix

? ? ? ? ? ? ?

? ? ? ? ? ? ?

? ? ? ? ? ? ?

? ? ? ? ? ? ?

? ? ? ? ? ? ?

? ? ? ? ? ? ?

Page 39: [오픈소스컨설팅]오픈소스 클라우드 개발플랫폼_및_Docker의_이해_v1

39 - Internal Use Only -

화물 운송 해결책 M

ult

iplic

ity

of

Go

od

s M

ult

iplic

ity

of

met

ho

ds

for

tran

spo

rtin

g/s

tori

ng

Do

I wo

rry abo

ut

ho

w go

od

s interact

(e.g. coffee

be

ans

next to

spices)

Can

I transp

ort

qu

ickly and

smo

oth

ly (e.g. fro

m b

oat to

train

to tru

ck)

적재, 하적, 운반을 먼 거리까지 효율적으로 수행하고 여러 곳으로 이동 될 수 있음(배->기차->컨테이너 트럭->목적지)

모든 상품이 적재될 수 있는 표준 컨테이너이며, 최종 목적지까지 봉인 유지

Page 40: [오픈소스컨설팅]오픈소스 클라우드 개발플랫폼_및_Docker의_이해_v1

40 - Internal Use Only -

N x N의 문제 해결

Page 41: [오픈소스컨설팅]오픈소스 클라우드 개발플랫폼_및_Docker의_이해_v1

41 - Internal Use Only -

복합 운송 컨테이션 생태계 활성화

90%의 모든 화물에 표준 컨테이너 안에 실려 운송

배에 선적, 하적시 시간과 비용, 도난 및 파손을 크게 줄임

최종 제품의 화물 운송 비용을 감소시킴 (from >25% to <3%) – 글로벌화 가능

5000대의 화물 운송성이 연간 2억개의 컨테이너를 수송 중

Page 42: [오픈소스컨설팅]오픈소스 클라우드 개발플랫폼_및_Docker의_이해_v1

42 - Internal Use Only -

코드를 위한 컨테이너 운송 시스템

Static website Web frontend User DB Queue Analytics DB

Development

VM QA server Public Cloud Contributor’s

laptop

Mu

ltip

licit

y o

f St

acks

M

ult

iplic

ity

of

har

dw

are

en

viro

nm

en

ts

Production

Cluster Customer

Data Center

Do

services an

d ap

ps i

nteract ap

pro

priately?

Can

I migrate sm

oo

thly an

d q

uickly

가상화된 모든 하드웨어 플랫폼에서 표준 기법을 사용하여 운영

모든 애플리케이션을 가볍고 이식 가능한 형태로 캡슐화하여 컨테이너에 탑재

Page 43: [오픈소스컨설팅]오픈소스 클라우드 개발플랫폼_및_Docker의_이해_v1

43 - Internal Use Only -

보다 단순한 개발 운영을 가능케 함

Static website Web frontend User DB Queue Analytics DB

Development

VM QA server Public Cloud Contributor’s

laptop

Mu

ltip

licit

y o

f St

acks

M

ult

iplic

ity

of

har

dw

are

en

viro

nm

en

ts

Production

Cluster Customer

Data Center

Do

services an

d ap

ps i

nteract ap

pro

priately?

Can

I migrate sm

oo

thly an

d q

uickly

운영자: 한 번 설정으로 모든 플랫폼에 적용 가능

개발자: 한 번의 빌드로 다양한 환경에서 실행

Page 44: [오픈소스컨설팅]오픈소스 클라우드 개발플랫폼_및_Docker의_이해_v1

44 - Internal Use Only -

시스템 소프트웨어가 설치된 Live CD?

Live CD, USB를 통한 운영체제 부팅

하지만 운영체제 자체가 RO(Read Only)

메모리에 하나의 운영체제만 로딩, 복수 개의 서버 불가

32 core, 128G 메모리 시스템을 하나의 OS로 처리?

Page 45: [오픈소스컨설팅]오픈소스 클라우드 개발플랫폼_및_Docker의_이해_v1

45 - Internal Use Only -

개발 vs 운영 관점

App A

Bins/ Libs

App A’

Bins/ Libs

App B

Bins/ Libs

서버

운영체제

DEVELOPMENT FOCUS ------------------------------------- APPS, CODE, DEPENDENCIES (LIBRARIES), DATA, AND PACKAGING

OPERATIONS FOCUS --------------------------------- MONITORING, NETWORK CONFIGURATION, REMOTE ACCESS, AND LOGGING

Code

Test

Deploy

Monitor

Page 46: [오픈소스컨설팅]오픈소스 클라우드 개발플랫폼_및_Docker의_이해_v1

46 - Internal Use Only -

방법1 – 일반적인 개발환경 구성

정의:

• 전통적으로 개발해온 환경

• 필요한 리소스를 계정을 통해 정의하고

시스템을 관리

단점:

• 20년 이상 사용해온 시스템 관리 기법

• 서로 다른 사용자, 관리 부분에 대한

부담감 증가 Re

du

ce #

ro

ws

via

po

licy

Page 47: [오픈소스컨설팅]오픈소스 클라우드 개발플랫폼_및_Docker의_이해_v1

47 - Internal Use Only -

방법2 – 런타임 프로비저닝 환경 구성

Reduce # Columns via Chef/Puppet/etc.

정의:

• Chef/Puppet과 같은 개발/운영환경

구성에 필요한 머신을 런타임시에

프로비저닝

단점:

• Chef/Puppet은 시스템 프로비저닝의

강력한 도구

• 애플리케이션 혹은 소프트웨어 버전

업그레이드시 지속적인 버전 변경작업

필요

• 기업 외부에서 사용하기 어려움(보안)

Page 48: [오픈소스컨설팅]오픈소스 클라우드 개발플랫폼_및_Docker의_이해_v1

48 - Internal Use Only -

방법3 – 하드웨어 가상화

정의:

• 각 애플리케이션을 위한 가상 머신을

생성하는 방법

단점:

• 현재 가장 많이 사용하는 방법(서버

통합, 가상화)

• 비용 및 시간이 많이 필요

• 하이퍼바이저 환경에 따른 상이한 가상

머신

• 소프트웨어 버전 변경시 새로 템플릿

구성해야 하는 번거로움(Chef 혼용

가능)

Page 49: [오픈소스컨설팅]오픈소스 클라우드 개발플랫폼_및_Docker의_이해_v1

49 - Internal Use Only -

Foreman, PXEBoot, DNS 등

현재 - 가상화 기반 운영 관리 프로세스(1/2)

1

서버 입고 부팅과 함께 OS 설치 및 구성

2

Hypervisor

3 하이퍼바이저 등록

VM Pool VM Pool

4

VM 기본 템플릿

OS 컨트롤러 리포지토리

패치 관리 컨트롤러

VM

5 가상머신 생성 6 소프트웨어 설치/패치 관리

7 VM 할당 및 사용

복잡한 입고, 시스템 관리, 처리 프로세스를 사용

Page 50: [오픈소스컨설팅]오픈소스 클라우드 개발플랫폼_및_Docker의_이해_v1

50 - Internal Use Only -

현재 - 가상화 기반 운영 관리 프로세스(2/2)

Middleware

③ 소프트웨어 분배

⑤ OS deployment

② Compliance 위반 검사

배포서버

Control Server

배포 서버

⑥ Report

스위치

스토리지

조작 지시

상황 표시

① Inventory 수집

④ 패치 분배

⑦ Provisioning

소프트웨어 설치/제거

공개 및 상용 소프트웨어 제어

여러 서버로 에이전트/HTTP 동시 다운로드 설치 대상 서버 제어

OS이미지를 네트워크 경유로 배포 설치

에이전트 설치 및 구성정보 수집 OS 설정의 규정 위반 여부 검출

네트워크나 스토리지 장비 등에 대한 다양한 프로비저닝 기능

모든 변경이력・구성정보 등의 표준 report와 custom report

프로비저닝에 대한 자동화 프로세스를 중앙 관리 서버를 기준으로 진행

Page 51: [오픈소스컨설팅]오픈소스 클라우드 개발플랫폼_및_Docker의_이해_v1

51 - Internal Use Only -

Like git, github

vagrant@ienvyou:~$

Pulling repository centos

539c0211cd76: Downloading 61.8 MB/98.56 MB (63%)

~/workspace/usergrid-stack-origin:~$ git pull origin master

remote: Counting objects: 291, done.

remote: Compressing objects: 100% (121/121), done.

remote: Total 210 (delta 79), reused 170 (delta 42)

Receiving objects: 100% (210/210), 48.34 KiB, done.

Resolving deltas: 100% (79/79), completed with 38 local

objects.

From github.com:apigee/usergrid-stack

Git처럼 내가 필요한 그리고 업데이트된 항목만 받아볼 수 없을까?

Page 52: [오픈소스컨설팅]오픈소스 클라우드 개발플랫폼_및_Docker의_이해_v1

52 - Internal Use Only -

Containers vs VMs

App A

Hypervisor (Type 2)

Host OS

Server

Guest OS

Bins/ Libs

App A’

Guest OS

Bins/ Libs

App B

Guest OS

Bins/ Libs

App A

Docker

Host OS

Server

Bins/Libs

App A

Bins/Libs

App B

App B

App B

App B

VM

Container

컨테이너가 분리되었지만, OS를 공유하고 바이너리/라이브러리를 사용

Guest OS

Guest OS

Page 53: [오픈소스컨설팅]오픈소스 클라우드 개발플랫폼_및_Docker의_이해_v1

53 - Internal Use Only -

경량화 모델

Bins/ Libs

App A

Original App (No OS to take up space, resources, or require restart)

App Δ

B

ins/

App A

Bins/ Libs

App A’

Guest OS

Bins/ Libs

Modified App Union file system allows us to only save the diffs Between container A and container A’ VMs

애플리케이션, 소프트웨어 변경시 새로운 복제 서버(템플릿)를 생성하여 구동/배포시켜야 함.

App A

Guest OS

Bins/ Libs

Copy of App

No OS. Can Share bins/libs

App A

Guest OS

Guest OS

VMs Containers

Page 54: [오픈소스컨설팅]오픈소스 클라우드 개발플랫폼_및_Docker의_이해_v1

54 - Internal Use Only -

Docker 기본 처리 로직

Source Code Repositor

y

Dockerfile For A

Docker Engine

Docker Container

Image Registry

Build

Docker

Host 2 OS 2 (Linux)

Contain

er A

Contain

er B

Contain

er C

Contain

er A

Push

Search Pull

Run

Host 1 OS (Linux)

Page 55: [오픈소스컨설팅]오픈소스 클라우드 개발플랫폼_및_Docker의_이해_v1

55 - Internal Use Only -

단순한 업데이트

Docker Engine

Docker

Container Image

Registry

Docker Engine

Push

Update

Bins/ Libs

App A

Ap

p Δ

B

ins/

Base Container

Image

Host is now running A’’

Container Mod A’’

Ap

p Δ

B

ins/

Bins/ Libs

App A

B

ins/

Bins/ Libs

App A’’

Host running A wants to upgrade to A’’. Requests update. Gets only diffs

Container Mod A’

Page 56: [오픈소스컨설팅]오픈소스 클라우드 개발플랫폼_및_Docker의_이해_v1

56 - Internal Use Only -

컨테이너 프로세스에 의한 성능

가상 머신이 아닌 Native를 직접 활용하므로 실제 베어메탈에 가까운 성능을 보임

프로세스들은 고립되어 있지만, host위에서 직접 실행

CPU performance

• native performance ( 거의 차이 없음 )

Memory performance

• a few % shaved off for (optional) accounting

Network performance

• 작은(small)의 오버헤드 발생

항목 방법 호스트 Docker

CPU sysbench 1 0.9931

Memory sysbench seq

1(r) 0.9999

1(w) 0.9759

sysbench rnd

1(r) 1.0056

1(w) 0.9807

Disk dd 1 0.9716

Network iperf 1 0.7889

출처: Docker, lightweight linux container, Deview 2013 김영찬

Page 57: [오픈소스컨설팅]오픈소스 클라우드 개발플랫폼_및_Docker의_이해_v1

57 - Internal Use Only -

일반적인 빌드/배포

개발 테스트 git

repository CI

Jenkins

Development Server

Staging Server

Production Server

개발, 스테이징, 운영에 대한 CI를 활용하여 라이프라이클 적용

Page 58: [오픈소스컨설팅]오픈소스 클라우드 개발플랫폼_및_Docker의_이해_v1

58 - Internal Use Only -

다양한 빌드/배포 방식

JENKINS CI

RPM Repo

DEV Hosts STG Hosts PRD Hosts

Version Management Build and Reporting Automated Installation

SVN (SRC)

Develpoer PC

SVN JENKINS

CI

Developer Admin

Verification

SVN

Deploy Request RPM Build

Proceed RPM REPO

SERVICE HOST Install

Update Manager

애플리케이션 코드와 운영 환경 소프트웨어에 대한 별도 패키징 및 디플로이

Page 59: [오픈소스컨설팅]오픈소스 클라우드 개발플랫폼_및_Docker의_이해_v1

59 - Internal Use Only -

Docker를 활용한 통합 배포

개발 테스트 git

repository

git clone and

docker build

Development Server

Staging Server

Production Server

Test Container

Docker Container

Image Registry

환경설정을 docker container에 포함하기 때문에 어디서나 동일하게 동작

애플리케이션 코드와 구동 환경을 항상 일치시킴

Page 60: [오픈소스컨설팅]오픈소스 클라우드 개발플랫폼_및_Docker의_이해_v1

60 - Internal Use Only -

요약

기존의 개발 방식에서 벗어난 새로운 형태의 개발, 운영 방식 등장함

가상화를 통한 서버 운용성 증대를 위한 노력이 진행됨 - IaaS

개발에 집중할 수 있는 기반 환경을 마련 – PaaS(Platform as a Service)

필요한 요소 기능만을 조립하여 하나의 컨테이너를 생성하고 서비스를 제공 – Docker

VM vs Container

• 별도의 분리된 영역이 아닌 상호 의존 관계

• VM: 하드웨어 리소스의 구성 단위를 할당하는데 가장 유용

• Container: 소프트웨어 전달 단위로서 프로세스로 작동되므로, 매우 가볍고 빠름

Page 61: [오픈소스컨설팅]오픈소스 클라우드 개발플랫폼_및_Docker의_이해_v1

61 - Internal Use Only -

참고자료

Introducing DZone's 2014 Cloud Platform Research Report : http://java.dzone.com/articles/introducing-dzones-2014-cloud

Docker , lightweight linux container – Deview 2013, 김영찬

Portable, lightweight, & interoperable Docker containers across Red Hat solutions - Jérôme Petazzoni, Docker, Inc

Docker, Containers, and the Future of Application Delivery – Docker, Inc

Page 62: [오픈소스컨설팅]오픈소스 클라우드 개발플랫폼_및_Docker의_이해_v1

62 - Internal Use Only -

OPEN

SHARE

CONTRIBUTE

ADOPT

REUSE