SlideShare a Scribd company logo

Private PaaS with Docker, spring cloud and mesos

A tutorial for Implementing a private PaaS with docker, spring cloud (netflix OSS) and mesosphere's DC/OS. Including docker swarm.

1 of 225
Download to read offline
Micro-services
Architecture
PaaS
Multi-tenancy
DevOps
도커와 스프링클라우드 그리고 메소스를
통한 Private	
  PaaS	
  와 MSA	
  구축
장진영
uEngine.org
(jyjang@uengine.org)
1
강의에 앞서
• 설치
• Docker for	
  windows
• HTTPie è curl
• pip
• Python
• Apache	
  maven & Intelli-­‐J	
  	
  è Spring	
   Cloud
• Java
• Npm è Front-­‐end	
  server
• Node.js
• 소스
• http://github.com/TheOpenCloudEngine/uEngine5-­‐base
2
강의에 앞서
3
Back	
  Channel	
  – 질문 주세요
Agenda
•성공적 서비스 구축의 필요한 기술 - 2시간
•퍼블릭 워크로드 분산 엔진 – 블루믹스 (클라우드 파운드리) 의 분석 - 2시간
• 앱 디플로이
• 자동 확장 설정
• 데브옵스 설정 통한 빌드
• 무정지 재배포
•프라이빗 PaaS 구축 하기 - 5시간
• 아키텍처 설명
• 구성요소별 설명 - 1시간
• 설치 방법 및 실습 – Docker, SWARM, Spring Cloud
• 사용법 시나리오
•마이크로 서비스 아키텍처 기반 애플리케이션 샘플링 ㅡ BPM as a Service
• 요구사항 설명
• 소프트웨어 구성 ㅡ 여러개의 서비스로 분리된 프로젝트
• api 이해 - hateoas 의 이해
• 프론트엔드 기술
• merge by front-end, Oauth 2.0
• 멀티테넌시 데이터의 연동
• 실습: 소스빌드, zuul server, eureka server 구성통한 로컬 개발 환경의 구성
• 실습: httpie 통한 api navigation, hybind 통한 navigation, vuejs 통한 화면 바인딩
•데브옵스 시나리오 - 2시간
• 애플리케이션 등록시 자동 개발기 배포
• 개발기에서 스테이징, 운영기의 무정지 재배포
• 새버전의 발생 ㅡ 테스트 자동화와 격리 배포
• 톨러런트 서비스 ㅡ 디도스 공격 자동 대처, 서킷 브레이크
4
Agenda
•성공적 서비스 구축의 필요한 기술 - 2시간
•퍼블릭 워크로드 분산 엔진 – 블루믹스 (클라우드 파운드리) 의 분석 - 2시간
• 앱 디플로이
• 자동 확장 설정
• 데브옵스 설정 통한 빌드
• 무정지 재배포
•프라이빗 PaaS 구축 하기 - 5시간
• 아키텍처 설명
• 구성요소별 설명 - 1시간
• 설치 방법 및 실습 – Docker, SWARM, Spring Cloud
• 사용법 시나리오
•마이크로 서비스 아키텍처 기반 애플리케이션 샘플링 ㅡ BPM as a Service
• 요구사항 설명
• 소프트웨어 구성 ㅡ 여러개의 서비스로 분리된 프로젝트
• api 이해 - hateoas 의 이해
• 프론트엔드 기술
• merge by front-end, Oauth 2.0
• 멀티테넌시 데이터의 연동
• 실습: 소스빌드, zuul server, eureka server 구성통한 로컬 개발 환경의 구성
• 실습: httpie 통한 api navigation, hybind 통한 navigation, vuejs 통한 화면 바인딩
•데브옵스 시나리오 - 2시간
• 애플리케이션 등록시 자동 개발기 배포
• 개발기에서 스테이징, 운영기의 무정지 재배포
• 새버전의 발생 ㅡ 테스트 자동화와 격리 배포
• 톨러런트 서비스 ㅡ 디도스 공격 자동 대처, 서킷 브레이크
5
성공적 서비스의 정의
• Economist Intelligence 에 의한 국제적 조사
• (293개 기업 CIO, 조사국가: 미국 39%, 영국 31%, 호주 30%)에 의하면,
• 서비스의 제공 방식의 변화로 가장 많은 40% 로 대답한 것은 바로 ‘구독형 서
비스(Subscription Service)’의 도입
6
Ad

Recommended

비대면 MSA / CNA 강의 - Contactless Microservices Architecture Learning
비대면 MSA / CNA 강의 - Contactless Microservices Architecture Learning비대면 MSA / CNA 강의 - Contactless Microservices Architecture Learning
비대면 MSA / CNA 강의 - Contactless Microservices Architecture LearninguEngine Solutions
 
Process Oriented Architecture
Process Oriented ArchitectureProcess Oriented Architecture
Process Oriented ArchitectureuEngine Solutions
 
Open Cloud Engine PaaS Snapshots
Open Cloud Engine PaaS SnapshotsOpen Cloud Engine PaaS Snapshots
Open Cloud Engine PaaS SnapshotsuEngine Solutions
 
designing, implementing and delivering microservices with event storming, spr...
designing, implementing and delivering microservices with event storming, spr...designing, implementing and delivering microservices with event storming, spr...
designing, implementing and delivering microservices with event storming, spr...uEngine Solutions
 
Event Storming and Implementation Workshop
Event Storming and Implementation WorkshopEvent Storming and Implementation Workshop
Event Storming and Implementation WorkshopuEngine Solutions
 
Event storming based msa training commerce example add_handson_v3
Event storming based msa training commerce example add_handson_v3Event storming based msa training commerce example add_handson_v3
Event storming based msa training commerce example add_handson_v3uEngine Solutions
 
유엔진 오픈소스 클라우드 플랫폼 (uEngine Microservice architecture Platform)
유엔진 오픈소스 클라우드 플랫폼 (uEngine Microservice architecture Platform)유엔진 오픈소스 클라우드 플랫폼 (uEngine Microservice architecture Platform)
유엔진 오픈소스 클라우드 플랫폼 (uEngine Microservice architecture Platform)uEngine Solutions
 

More Related Content

What's hot

마이크로서비스 개요
마이크로서비스 개요마이크로서비스 개요
마이크로서비스 개요Younghun Yun
 
Microservice Architecture
Microservice ArchitectureMicroservice Architecture
Microservice ArchitectureYoonsung Jung
 
모바일 개발 트랜드
모바일 개발 트랜드모바일 개발 트랜드
모바일 개발 트랜드Terry Cho
 
Event storming based msa training commerce example
Event storming based msa training commerce exampleEvent storming based msa training commerce example
Event storming based msa training commerce exampleuEngine Solutions
 
소프트웨어 개발 트랜드 및 MSA (마이크로 서비스 아키텍쳐)의 이해
소프트웨어 개발 트랜드 및 MSA (마이크로 서비스 아키텍쳐)의 이해소프트웨어 개발 트랜드 및 MSA (마이크로 서비스 아키텍쳐)의 이해
소프트웨어 개발 트랜드 및 MSA (마이크로 서비스 아키텍쳐)의 이해Terry Cho
 
SK플래닛_README_마이크로서비스 아키텍처로 개발하기
SK플래닛_README_마이크로서비스 아키텍처로 개발하기SK플래닛_README_마이크로서비스 아키텍처로 개발하기
SK플래닛_README_마이크로서비스 아키텍처로 개발하기Lee Ji Eun
 
객체지향프로그래밍 특강
객체지향프로그래밍 특강객체지향프로그래밍 특강
객체지향프로그래밍 특강uEngine Solutions
 
From event storming to spring cloud implementation
From event storming to spring cloud implementationFrom event storming to spring cloud implementation
From event storming to spring cloud implementationuEngine Solutions
 
MSA 전략 2: 마이크로서비스, 어떻게 구현할 것인가?
MSA 전략 2: 마이크로서비스, 어떻게 구현할 것인가?MSA 전략 2: 마이크로서비스, 어떻게 구현할 것인가?
MSA 전략 2: 마이크로서비스, 어떻게 구현할 것인가?VMware Tanzu Korea
 
마이크로서비스 아키텍처와 DevOps 기술 - Amazon 사례를 중심으로 (윤석찬)
마이크로서비스 아키텍처와 DevOps 기술 - Amazon 사례를 중심으로 (윤석찬)마이크로서비스 아키텍처와 DevOps 기술 - Amazon 사례를 중심으로 (윤석찬)
마이크로서비스 아키텍처와 DevOps 기술 - Amazon 사례를 중심으로 (윤석찬)Amazon Web Services Korea
 
OCE - Cno 2014 private sector oriented open paas oce
OCE - Cno 2014 private sector oriented open paas   oceOCE - Cno 2014 private sector oriented open paas   oce
OCE - Cno 2014 private sector oriented open paas oceuEngine Solutions
 
마이크로 서비스 아키텍쳐 소개 및 구현 방법
마이크로 서비스 아키텍쳐 소개 및 구현 방법마이크로 서비스 아키텍쳐 소개 및 구현 방법
마이크로 서비스 아키텍쳐 소개 및 구현 방법Young Soo Lee
 
[SW 아키텍처 컨퍼런스] 클라우드 아키텍처 개론
[SW 아키텍처 컨퍼런스] 클라우드 아키텍처 개론[SW 아키텍처 컨퍼런스] 클라우드 아키텍처 개론
[SW 아키텍처 컨퍼런스] 클라우드 아키텍처 개론Alex Hahn
 
MSA 전략 1: 마이크로서비스, 어떻게 디자인 할 것인가?
MSA 전략 1: 마이크로서비스, 어떻게 디자인 할 것인가?MSA 전략 1: 마이크로서비스, 어떻게 디자인 할 것인가?
MSA 전략 1: 마이크로서비스, 어떻게 디자인 할 것인가?VMware Tanzu Korea
 
Event storming based msa training commerce example v2
Event storming based msa training commerce example v2Event storming based msa training commerce example v2
Event storming based msa training commerce example v2uEngine Solutions
 
4시간 안에 끝내는 AWS 클라우드 전환 및 운영 환경 구성_최지웅_오픈소스컨설팅
4시간 안에 끝내는 AWS 클라우드 전환 및 운영 환경 구성_최지웅_오픈소스컨설팅4시간 안에 끝내는 AWS 클라우드 전환 및 운영 환경 구성_최지웅_오픈소스컨설팅
4시간 안에 끝내는 AWS 클라우드 전환 및 운영 환경 구성_최지웅_오픈소스컨설팅Open Source Consulting
 
2013 빅데이터 및 API 기술 현황과 전망- 윤석찬
2013 빅데이터 및 API 기술 현황과 전망- 윤석찬2013 빅데이터 및 API 기술 현황과 전망- 윤석찬
2013 빅데이터 및 API 기술 현황과 전망- 윤석찬Channy Yun
 
마이크로서비스 아키텍처로 개발하기
마이크로서비스 아키텍처로 개발하기마이크로서비스 아키텍처로 개발하기
마이크로서비스 아키텍처로 개발하기Jaewoo Ahn
 
SLiPP 스터디 - MSA
SLiPP 스터디 - MSASLiPP 스터디 - MSA
SLiPP 스터디 - MSADaekwon Kang
 
Micro Service Architecture(MSA) 탐방기
Micro Service Architecture(MSA) 탐방기Micro Service Architecture(MSA) 탐방기
Micro Service Architecture(MSA) 탐방기jbugkorea
 

What's hot (20)

마이크로서비스 개요
마이크로서비스 개요마이크로서비스 개요
마이크로서비스 개요
 
Microservice Architecture
Microservice ArchitectureMicroservice Architecture
Microservice Architecture
 
모바일 개발 트랜드
모바일 개발 트랜드모바일 개발 트랜드
모바일 개발 트랜드
 
Event storming based msa training commerce example
Event storming based msa training commerce exampleEvent storming based msa training commerce example
Event storming based msa training commerce example
 
소프트웨어 개발 트랜드 및 MSA (마이크로 서비스 아키텍쳐)의 이해
소프트웨어 개발 트랜드 및 MSA (마이크로 서비스 아키텍쳐)의 이해소프트웨어 개발 트랜드 및 MSA (마이크로 서비스 아키텍쳐)의 이해
소프트웨어 개발 트랜드 및 MSA (마이크로 서비스 아키텍쳐)의 이해
 
SK플래닛_README_마이크로서비스 아키텍처로 개발하기
SK플래닛_README_마이크로서비스 아키텍처로 개발하기SK플래닛_README_마이크로서비스 아키텍처로 개발하기
SK플래닛_README_마이크로서비스 아키텍처로 개발하기
 
객체지향프로그래밍 특강
객체지향프로그래밍 특강객체지향프로그래밍 특강
객체지향프로그래밍 특강
 
From event storming to spring cloud implementation
From event storming to spring cloud implementationFrom event storming to spring cloud implementation
From event storming to spring cloud implementation
 
MSA 전략 2: 마이크로서비스, 어떻게 구현할 것인가?
MSA 전략 2: 마이크로서비스, 어떻게 구현할 것인가?MSA 전략 2: 마이크로서비스, 어떻게 구현할 것인가?
MSA 전략 2: 마이크로서비스, 어떻게 구현할 것인가?
 
마이크로서비스 아키텍처와 DevOps 기술 - Amazon 사례를 중심으로 (윤석찬)
마이크로서비스 아키텍처와 DevOps 기술 - Amazon 사례를 중심으로 (윤석찬)마이크로서비스 아키텍처와 DevOps 기술 - Amazon 사례를 중심으로 (윤석찬)
마이크로서비스 아키텍처와 DevOps 기술 - Amazon 사례를 중심으로 (윤석찬)
 
OCE - Cno 2014 private sector oriented open paas oce
OCE - Cno 2014 private sector oriented open paas   oceOCE - Cno 2014 private sector oriented open paas   oce
OCE - Cno 2014 private sector oriented open paas oce
 
마이크로 서비스 아키텍쳐 소개 및 구현 방법
마이크로 서비스 아키텍쳐 소개 및 구현 방법마이크로 서비스 아키텍쳐 소개 및 구현 방법
마이크로 서비스 아키텍쳐 소개 및 구현 방법
 
[SW 아키텍처 컨퍼런스] 클라우드 아키텍처 개론
[SW 아키텍처 컨퍼런스] 클라우드 아키텍처 개론[SW 아키텍처 컨퍼런스] 클라우드 아키텍처 개론
[SW 아키텍처 컨퍼런스] 클라우드 아키텍처 개론
 
MSA 전략 1: 마이크로서비스, 어떻게 디자인 할 것인가?
MSA 전략 1: 마이크로서비스, 어떻게 디자인 할 것인가?MSA 전략 1: 마이크로서비스, 어떻게 디자인 할 것인가?
MSA 전략 1: 마이크로서비스, 어떻게 디자인 할 것인가?
 
Event storming based msa training commerce example v2
Event storming based msa training commerce example v2Event storming based msa training commerce example v2
Event storming based msa training commerce example v2
 
4시간 안에 끝내는 AWS 클라우드 전환 및 운영 환경 구성_최지웅_오픈소스컨설팅
4시간 안에 끝내는 AWS 클라우드 전환 및 운영 환경 구성_최지웅_오픈소스컨설팅4시간 안에 끝내는 AWS 클라우드 전환 및 운영 환경 구성_최지웅_오픈소스컨설팅
4시간 안에 끝내는 AWS 클라우드 전환 및 운영 환경 구성_최지웅_오픈소스컨설팅
 
2013 빅데이터 및 API 기술 현황과 전망- 윤석찬
2013 빅데이터 및 API 기술 현황과 전망- 윤석찬2013 빅데이터 및 API 기술 현황과 전망- 윤석찬
2013 빅데이터 및 API 기술 현황과 전망- 윤석찬
 
마이크로서비스 아키텍처로 개발하기
마이크로서비스 아키텍처로 개발하기마이크로서비스 아키텍처로 개발하기
마이크로서비스 아키텍처로 개발하기
 
SLiPP 스터디 - MSA
SLiPP 스터디 - MSASLiPP 스터디 - MSA
SLiPP 스터디 - MSA
 
Micro Service Architecture(MSA) 탐방기
Micro Service Architecture(MSA) 탐방기Micro Service Architecture(MSA) 탐방기
Micro Service Architecture(MSA) 탐방기
 

Similar to Private PaaS with Docker, spring cloud and mesos

[2017 AWS Startup Day] 서버리스 마이크로서비스로 일당백 개발조직 만들기
[2017 AWS Startup Day] 서버리스 마이크로서비스로 일당백 개발조직 만들기[2017 AWS Startup Day] 서버리스 마이크로서비스로 일당백 개발조직 만들기
[2017 AWS Startup Day] 서버리스 마이크로서비스로 일당백 개발조직 만들기Amazon Web Services Korea
 
[오픈소스컨설팅]오픈소스 클라우드 개발플랫폼_및_Docker의_이해_v1
[오픈소스컨설팅]오픈소스 클라우드 개발플랫폼_및_Docker의_이해_v1[오픈소스컨설팅]오픈소스 클라우드 개발플랫폼_및_Docker의_이해_v1
[오픈소스컨설팅]오픈소스 클라우드 개발플랫폼_및_Docker의_이해_v1Ji-Woong Choi
 
Open standard open cloud engine (3)
Open standard open cloud engine (3)Open standard open cloud engine (3)
Open standard open cloud engine (3)uEngine Solutions
 
Open standard open cloud engine for digital business process
Open standard open cloud engine for digital business process Open standard open cloud engine for digital business process
Open standard open cloud engine for digital business process uEngine Solutions
 
[OpenInfra Days Korea 2018] (Track 2) Microservice Architecture, DevOps 그리고 5...
[OpenInfra Days Korea 2018] (Track 2) Microservice Architecture, DevOps 그리고 5...[OpenInfra Days Korea 2018] (Track 2) Microservice Architecture, DevOps 그리고 5...
[OpenInfra Days Korea 2018] (Track 2) Microservice Architecture, DevOps 그리고 5...OpenStack Korea Community
 
서버학개론(백엔드 서버 개발자를 위한)
서버학개론(백엔드 서버 개발자를 위한)서버학개론(백엔드 서버 개발자를 위한)
서버학개론(백엔드 서버 개발자를 위한)수보 김
 
1711 azure-live
1711 azure-live1711 azure-live
1711 azure-live세준 김
 
오픈스택 기반 클라우드 서비스 구축 방안 및 사례
오픈스택 기반 클라우드 서비스 구축 방안 및 사례오픈스택 기반 클라우드 서비스 구축 방안 및 사례
오픈스택 기반 클라우드 서비스 구축 방안 및 사례SONG INSEOB
 
AWS 기반의 마이크로 서비스 아키텍쳐 구현 방안 :: 김필중 :: AWS Summit Seoul 20
AWS 기반의 마이크로 서비스 아키텍쳐 구현 방안 :: 김필중 :: AWS Summit Seoul 20AWS 기반의 마이크로 서비스 아키텍쳐 구현 방안 :: 김필중 :: AWS Summit Seoul 20
AWS 기반의 마이크로 서비스 아키텍쳐 구현 방안 :: 김필중 :: AWS Summit Seoul 20Amazon Web Services Korea
 
Deployment techniques for cloud native
Deployment techniques for cloud nativeDeployment techniques for cloud native
Deployment techniques for cloud nativeAlex Jeong
 
[오픈테크넷서밋2022] 국내 PaaS(Kubernetes) Best Practice 및 DevOps 환경 구축 사례.pdf
[오픈테크넷서밋2022] 국내 PaaS(Kubernetes) Best Practice 및 DevOps 환경 구축 사례.pdf[오픈테크넷서밋2022] 국내 PaaS(Kubernetes) Best Practice 및 DevOps 환경 구축 사례.pdf
[오픈테크넷서밋2022] 국내 PaaS(Kubernetes) Best Practice 및 DevOps 환경 구축 사례.pdfOpen Source Consulting
 
마이크로서비스를 위한 AWS 아키텍처 패턴 및 모범 사례 - AWS Summit Seoul 2017
마이크로서비스를 위한 AWS 아키텍처 패턴 및 모범 사례 - AWS Summit Seoul 2017마이크로서비스를 위한 AWS 아키텍처 패턴 및 모범 사례 - AWS Summit Seoul 2017
마이크로서비스를 위한 AWS 아키텍처 패턴 및 모범 사례 - AWS Summit Seoul 2017Amazon Web Services Korea
 
AWS Code 서비스 특집 - 아마존 DevOps와 CodeDeploy, CodePipeline (윤석찬)
AWS Code 서비스 특집 - 아마존 DevOps와 CodeDeploy, CodePipeline (윤석찬)AWS Code 서비스 특집 - 아마존 DevOps와 CodeDeploy, CodePipeline (윤석찬)
AWS Code 서비스 특집 - 아마존 DevOps와 CodeDeploy, CodePipeline (윤석찬)Amazon Web Services Korea
 
클라우드 컴퓨팅과 Daum의 사례- 윤석찬 (KREN 연구 협력 포럼, 2013)
클라우드 컴퓨팅과 Daum의 사례- 윤석찬 (KREN 연구 협력 포럼, 2013) 클라우드 컴퓨팅과 Daum의 사례- 윤석찬 (KREN 연구 협력 포럼, 2013)
클라우드 컴퓨팅과 Daum의 사례- 윤석찬 (KREN 연구 협력 포럼, 2013) Channy Yun
 
Intro to hpe helion stackato_paa_s
Intro to hpe helion stackato_paa_sIntro to hpe helion stackato_paa_s
Intro to hpe helion stackato_paa_sSeong-Bok Lee
 
[Td 2015]개발하기 바쁜데 푸시서버와 메시지큐는 있는거 쓸래요(김영재)
[Td 2015]개발하기 바쁜데 푸시서버와 메시지큐는 있는거 쓸래요(김영재)[Td 2015]개발하기 바쁜데 푸시서버와 메시지큐는 있는거 쓸래요(김영재)
[Td 2015]개발하기 바쁜데 푸시서버와 메시지큐는 있는거 쓸래요(김영재)Sang Don Kim
 
MSA(Service Mesh), MDA(Data Mesh), MIA(Inference Mesh) 기술동향 소개-박문기@메ᄀ...
MSA(Service Mesh), MDA(Data Mesh), MIA(Inference Mesh) 기술동향 소개-박문기@메ᄀ...MSA(Service Mesh), MDA(Data Mesh), MIA(Inference Mesh) 기술동향 소개-박문기@메ᄀ...
MSA(Service Mesh), MDA(Data Mesh), MIA(Inference Mesh) 기술동향 소개-박문기@메ᄀ...문기 박
 
[테크데이즈2015] 개발하기 바쁜데 푸시와 메시지큐는 있는거 쓸래요
[테크데이즈2015] 개발하기 바쁜데 푸시와 메시지큐는 있는거 쓸래요[테크데이즈2015] 개발하기 바쁜데 푸시와 메시지큐는 있는거 쓸래요
[테크데이즈2015] 개발하기 바쁜데 푸시와 메시지큐는 있는거 쓸래요Youngjae Kim
 
사례들로 알아보는 컨테이너, 언제 어떻게 쓰면 좋을까? – 김성수 AWS 솔루션즈 아키텍트, 허준 AWS 어카운트 매니저, 이창명 선데이토...
사례들로 알아보는 컨테이너, 언제 어떻게 쓰면 좋을까? – 김성수 AWS 솔루션즈 아키텍트, 허준 AWS 어카운트 매니저, 이창명 선데이토...사례들로 알아보는 컨테이너, 언제 어떻게 쓰면 좋을까? – 김성수 AWS 솔루션즈 아키텍트, 허준 AWS 어카운트 매니저, 이창명 선데이토...
사례들로 알아보는 컨테이너, 언제 어떻게 쓰면 좋을까? – 김성수 AWS 솔루션즈 아키텍트, 허준 AWS 어카운트 매니저, 이창명 선데이토...Amazon Web Services Korea
 
[오픈소스컨설팅]유닉스의 리눅스 마이그레이션 전략_v3
[오픈소스컨설팅]유닉스의 리눅스 마이그레이션 전략_v3[오픈소스컨설팅]유닉스의 리눅스 마이그레이션 전략_v3
[오픈소스컨설팅]유닉스의 리눅스 마이그레이션 전략_v3Ji-Woong Choi
 

Similar to Private PaaS with Docker, spring cloud and mesos (20)

[2017 AWS Startup Day] 서버리스 마이크로서비스로 일당백 개발조직 만들기
[2017 AWS Startup Day] 서버리스 마이크로서비스로 일당백 개발조직 만들기[2017 AWS Startup Day] 서버리스 마이크로서비스로 일당백 개발조직 만들기
[2017 AWS Startup Day] 서버리스 마이크로서비스로 일당백 개발조직 만들기
 
[오픈소스컨설팅]오픈소스 클라우드 개발플랫폼_및_Docker의_이해_v1
[오픈소스컨설팅]오픈소스 클라우드 개발플랫폼_및_Docker의_이해_v1[오픈소스컨설팅]오픈소스 클라우드 개발플랫폼_및_Docker의_이해_v1
[오픈소스컨설팅]오픈소스 클라우드 개발플랫폼_및_Docker의_이해_v1
 
Open standard open cloud engine (3)
Open standard open cloud engine (3)Open standard open cloud engine (3)
Open standard open cloud engine (3)
 
Open standard open cloud engine for digital business process
Open standard open cloud engine for digital business process Open standard open cloud engine for digital business process
Open standard open cloud engine for digital business process
 
[OpenInfra Days Korea 2018] (Track 2) Microservice Architecture, DevOps 그리고 5...
[OpenInfra Days Korea 2018] (Track 2) Microservice Architecture, DevOps 그리고 5...[OpenInfra Days Korea 2018] (Track 2) Microservice Architecture, DevOps 그리고 5...
[OpenInfra Days Korea 2018] (Track 2) Microservice Architecture, DevOps 그리고 5...
 
서버학개론(백엔드 서버 개발자를 위한)
서버학개론(백엔드 서버 개발자를 위한)서버학개론(백엔드 서버 개발자를 위한)
서버학개론(백엔드 서버 개발자를 위한)
 
1711 azure-live
1711 azure-live1711 azure-live
1711 azure-live
 
오픈스택 기반 클라우드 서비스 구축 방안 및 사례
오픈스택 기반 클라우드 서비스 구축 방안 및 사례오픈스택 기반 클라우드 서비스 구축 방안 및 사례
오픈스택 기반 클라우드 서비스 구축 방안 및 사례
 
AWS 기반의 마이크로 서비스 아키텍쳐 구현 방안 :: 김필중 :: AWS Summit Seoul 20
AWS 기반의 마이크로 서비스 아키텍쳐 구현 방안 :: 김필중 :: AWS Summit Seoul 20AWS 기반의 마이크로 서비스 아키텍쳐 구현 방안 :: 김필중 :: AWS Summit Seoul 20
AWS 기반의 마이크로 서비스 아키텍쳐 구현 방안 :: 김필중 :: AWS Summit Seoul 20
 
Deployment techniques for cloud native
Deployment techniques for cloud nativeDeployment techniques for cloud native
Deployment techniques for cloud native
 
[오픈테크넷서밋2022] 국내 PaaS(Kubernetes) Best Practice 및 DevOps 환경 구축 사례.pdf
[오픈테크넷서밋2022] 국내 PaaS(Kubernetes) Best Practice 및 DevOps 환경 구축 사례.pdf[오픈테크넷서밋2022] 국내 PaaS(Kubernetes) Best Practice 및 DevOps 환경 구축 사례.pdf
[오픈테크넷서밋2022] 국내 PaaS(Kubernetes) Best Practice 및 DevOps 환경 구축 사례.pdf
 
마이크로서비스를 위한 AWS 아키텍처 패턴 및 모범 사례 - AWS Summit Seoul 2017
마이크로서비스를 위한 AWS 아키텍처 패턴 및 모범 사례 - AWS Summit Seoul 2017마이크로서비스를 위한 AWS 아키텍처 패턴 및 모범 사례 - AWS Summit Seoul 2017
마이크로서비스를 위한 AWS 아키텍처 패턴 및 모범 사례 - AWS Summit Seoul 2017
 
AWS Code 서비스 특집 - 아마존 DevOps와 CodeDeploy, CodePipeline (윤석찬)
AWS Code 서비스 특집 - 아마존 DevOps와 CodeDeploy, CodePipeline (윤석찬)AWS Code 서비스 특집 - 아마존 DevOps와 CodeDeploy, CodePipeline (윤석찬)
AWS Code 서비스 특집 - 아마존 DevOps와 CodeDeploy, CodePipeline (윤석찬)
 
클라우드 컴퓨팅과 Daum의 사례- 윤석찬 (KREN 연구 협력 포럼, 2013)
클라우드 컴퓨팅과 Daum의 사례- 윤석찬 (KREN 연구 협력 포럼, 2013) 클라우드 컴퓨팅과 Daum의 사례- 윤석찬 (KREN 연구 협력 포럼, 2013)
클라우드 컴퓨팅과 Daum의 사례- 윤석찬 (KREN 연구 협력 포럼, 2013)
 
Intro to hpe helion stackato_paa_s
Intro to hpe helion stackato_paa_sIntro to hpe helion stackato_paa_s
Intro to hpe helion stackato_paa_s
 
[Td 2015]개발하기 바쁜데 푸시서버와 메시지큐는 있는거 쓸래요(김영재)
[Td 2015]개발하기 바쁜데 푸시서버와 메시지큐는 있는거 쓸래요(김영재)[Td 2015]개발하기 바쁜데 푸시서버와 메시지큐는 있는거 쓸래요(김영재)
[Td 2015]개발하기 바쁜데 푸시서버와 메시지큐는 있는거 쓸래요(김영재)
 
MSA(Service Mesh), MDA(Data Mesh), MIA(Inference Mesh) 기술동향 소개-박문기@메ᄀ...
MSA(Service Mesh), MDA(Data Mesh), MIA(Inference Mesh) 기술동향 소개-박문기@메ᄀ...MSA(Service Mesh), MDA(Data Mesh), MIA(Inference Mesh) 기술동향 소개-박문기@메ᄀ...
MSA(Service Mesh), MDA(Data Mesh), MIA(Inference Mesh) 기술동향 소개-박문기@메ᄀ...
 
[테크데이즈2015] 개발하기 바쁜데 푸시와 메시지큐는 있는거 쓸래요
[테크데이즈2015] 개발하기 바쁜데 푸시와 메시지큐는 있는거 쓸래요[테크데이즈2015] 개발하기 바쁜데 푸시와 메시지큐는 있는거 쓸래요
[테크데이즈2015] 개발하기 바쁜데 푸시와 메시지큐는 있는거 쓸래요
 
사례들로 알아보는 컨테이너, 언제 어떻게 쓰면 좋을까? – 김성수 AWS 솔루션즈 아키텍트, 허준 AWS 어카운트 매니저, 이창명 선데이토...
사례들로 알아보는 컨테이너, 언제 어떻게 쓰면 좋을까? – 김성수 AWS 솔루션즈 아키텍트, 허준 AWS 어카운트 매니저, 이창명 선데이토...사례들로 알아보는 컨테이너, 언제 어떻게 쓰면 좋을까? – 김성수 AWS 솔루션즈 아키텍트, 허준 AWS 어카운트 매니저, 이창명 선데이토...
사례들로 알아보는 컨테이너, 언제 어떻게 쓰면 좋을까? – 김성수 AWS 솔루션즈 아키텍트, 허준 AWS 어카운트 매니저, 이창명 선데이토...
 
[오픈소스컨설팅]유닉스의 리눅스 마이그레이션 전략_v3
[오픈소스컨설팅]유닉스의 리눅스 마이그레이션 전략_v3[오픈소스컨설팅]유닉스의 리눅스 마이그레이션 전략_v3
[오픈소스컨설팅]유닉스의 리눅스 마이그레이션 전략_v3
 

More from uEngine Solutions

이벤트스토밍과 BDD 를 혼합하여 소프트웨어 디자인과 테스트 자동화하기
이벤트스토밍과 BDD 를 혼합하여 소프트웨어 디자인과 테스트 자동화하기이벤트스토밍과 BDD 를 혼합하여 소프트웨어 디자인과 테스트 자동화하기
이벤트스토밍과 BDD 를 혼합하여 소프트웨어 디자인과 테스트 자동화하기uEngine Solutions
 
Safe cloud native transformation approaches
Safe cloud native transformation approachesSafe cloud native transformation approaches
Safe cloud native transformation approachesuEngine Solutions
 
microservice architecture public education v2
microservice architecture public education v2microservice architecture public education v2
microservice architecture public education v2uEngine Solutions
 
Distributed transanction in microservices
Distributed transanction in microservicesDistributed transanction in microservices
Distributed transanction in microservicesuEngine Solutions
 
From event storming to spring cloud implementation
From event storming to spring cloud implementationFrom event storming to spring cloud implementation
From event storming to spring cloud implementationuEngine Solutions
 
Bluemix paas 기반 saas 개발 사례
Bluemix paas 기반 saas 개발 사례Bluemix paas 기반 saas 개발 사례
Bluemix paas 기반 saas 개발 사례uEngine Solutions
 
Building multi tenancy enterprise applications - quick
Building multi tenancy enterprise applications - quickBuilding multi tenancy enterprise applications - quick
Building multi tenancy enterprise applications - quickuEngine Solutions
 
Building multi tenancy enterprise applications
Building multi tenancy enterprise applicationsBuilding multi tenancy enterprise applications
Building multi tenancy enterprise applicationsuEngine Solutions
 
아키텍트대회 유엔진-장진영-Sw공학표준을 기반한 alm
아키텍트대회 유엔진-장진영-Sw공학표준을 기반한 alm아키텍트대회 유엔진-장진영-Sw공학표준을 기반한 alm
아키텍트대회 유엔진-장진영-Sw공학표준을 기반한 almuEngine Solutions
 
성공적인 서비스로의 플랫폼 선택
성공적인 서비스로의 플랫폼 선택성공적인 서비스로의 플랫폼 선택
성공적인 서비스로의 플랫폼 선택uEngine Solutions
 
9 design factors for cloud applications
9 design factors for cloud applications9 design factors for cloud applications
9 design factors for cloud applicationsuEngine Solutions
 
Front-end architecture for cloud applications and Polymer
Front-end architecture for cloud applications and PolymerFront-end architecture for cloud applications and Polymer
Front-end architecture for cloud applications and PolymeruEngine Solutions
 
Open source apm scouter를 통한 관제 관리 jadecross 정환열 수석
Open source apm scouter를 통한 관제  관리 jadecross 정환열 수석Open source apm scouter를 통한 관제  관리 jadecross 정환열 수석
Open source apm scouter를 통한 관제 관리 jadecross 정환열 수석uEngine Solutions
 
클라우드 서비스운영 플랫폼 가루다 Open cloudengine_패스트캣_cto 송상욱
클라우드 서비스운영 플랫폼 가루다 Open cloudengine_패스트캣_cto 송상욱클라우드 서비스운영 플랫폼 가루다 Open cloudengine_패스트캣_cto 송상욱
클라우드 서비스운영 플랫폼 가루다 Open cloudengine_패스트캣_cto 송상욱uEngine Solutions
 
Io t에서 big data를 통합하는 통합 빅데이터 플랫폼 flamingo_클라우다인_김병곤 대표이사
Io t에서 big data를 통합하는 통합 빅데이터 플랫폼 flamingo_클라우다인_김병곤 대표이사Io t에서 big data를 통합하는 통합 빅데이터 플랫폼 flamingo_클라우다인_김병곤 대표이사
Io t에서 big data를 통합하는 통합 빅데이터 플랫폼 flamingo_클라우다인_김병곤 대표이사uEngine Solutions
 

More from uEngine Solutions (18)

이벤트스토밍과 BDD 를 혼합하여 소프트웨어 디자인과 테스트 자동화하기
이벤트스토밍과 BDD 를 혼합하여 소프트웨어 디자인과 테스트 자동화하기이벤트스토밍과 BDD 를 혼합하여 소프트웨어 디자인과 테스트 자동화하기
이벤트스토밍과 BDD 를 혼합하여 소프트웨어 디자인과 테스트 자동화하기
 
Microservice coding guide
Microservice coding guideMicroservice coding guide
Microservice coding guide
 
Safe cloud native transformation approaches
Safe cloud native transformation approachesSafe cloud native transformation approaches
Safe cloud native transformation approaches
 
microservice architecture public education v2
microservice architecture public education v2microservice architecture public education v2
microservice architecture public education v2
 
Distributed transanction in microservices
Distributed transanction in microservicesDistributed transanction in microservices
Distributed transanction in microservices
 
From event storming to spring cloud implementation
From event storming to spring cloud implementationFrom event storming to spring cloud implementation
From event storming to spring cloud implementation
 
Micro service architecture
Micro service architectureMicro service architecture
Micro service architecture
 
Bluemix paas 기반 saas 개발 사례
Bluemix paas 기반 saas 개발 사례Bluemix paas 기반 saas 개발 사례
Bluemix paas 기반 saas 개발 사례
 
Building multi tenancy enterprise applications - quick
Building multi tenancy enterprise applications - quickBuilding multi tenancy enterprise applications - quick
Building multi tenancy enterprise applications - quick
 
Building multi tenancy enterprise applications
Building multi tenancy enterprise applicationsBuilding multi tenancy enterprise applications
Building multi tenancy enterprise applications
 
Metaworks4 intro
Metaworks4 introMetaworks4 intro
Metaworks4 intro
 
아키텍트대회 유엔진-장진영-Sw공학표준을 기반한 alm
아키텍트대회 유엔진-장진영-Sw공학표준을 기반한 alm아키텍트대회 유엔진-장진영-Sw공학표준을 기반한 alm
아키텍트대회 유엔진-장진영-Sw공학표준을 기반한 alm
 
성공적인 서비스로의 플랫폼 선택
성공적인 서비스로의 플랫폼 선택성공적인 서비스로의 플랫폼 선택
성공적인 서비스로의 플랫폼 선택
 
9 design factors for cloud applications
9 design factors for cloud applications9 design factors for cloud applications
9 design factors for cloud applications
 
Front-end architecture for cloud applications and Polymer
Front-end architecture for cloud applications and PolymerFront-end architecture for cloud applications and Polymer
Front-end architecture for cloud applications and Polymer
 
Open source apm scouter를 통한 관제 관리 jadecross 정환열 수석
Open source apm scouter를 통한 관제  관리 jadecross 정환열 수석Open source apm scouter를 통한 관제  관리 jadecross 정환열 수석
Open source apm scouter를 통한 관제 관리 jadecross 정환열 수석
 
클라우드 서비스운영 플랫폼 가루다 Open cloudengine_패스트캣_cto 송상욱
클라우드 서비스운영 플랫폼 가루다 Open cloudengine_패스트캣_cto 송상욱클라우드 서비스운영 플랫폼 가루다 Open cloudengine_패스트캣_cto 송상욱
클라우드 서비스운영 플랫폼 가루다 Open cloudengine_패스트캣_cto 송상욱
 
Io t에서 big data를 통합하는 통합 빅데이터 플랫폼 flamingo_클라우다인_김병곤 대표이사
Io t에서 big data를 통합하는 통합 빅데이터 플랫폼 flamingo_클라우다인_김병곤 대표이사Io t에서 big data를 통합하는 통합 빅데이터 플랫폼 flamingo_클라우다인_김병곤 대표이사
Io t에서 big data를 통합하는 통합 빅데이터 플랫폼 flamingo_클라우다인_김병곤 대표이사
 

Private PaaS with Docker, spring cloud and mesos

  • 1. Micro-services Architecture PaaS Multi-tenancy DevOps 도커와 스프링클라우드 그리고 메소스를 통한 Private  PaaS  와 MSA  구축 장진영 uEngine.org (jyjang@uengine.org) 1
  • 2. 강의에 앞서 • 설치 • Docker for  windows • HTTPie è curl • pip • Python • Apache  maven & Intelli-­‐J    è Spring   Cloud • Java • Npm è Front-­‐end  server • Node.js • 소스 • http://github.com/TheOpenCloudEngine/uEngine5-­‐base 2
  • 3. 강의에 앞서 3 Back  Channel  – 질문 주세요
  • 4. Agenda •성공적 서비스 구축의 필요한 기술 - 2시간 •퍼블릭 워크로드 분산 엔진 – 블루믹스 (클라우드 파운드리) 의 분석 - 2시간 • 앱 디플로이 • 자동 확장 설정 • 데브옵스 설정 통한 빌드 • 무정지 재배포 •프라이빗 PaaS 구축 하기 - 5시간 • 아키텍처 설명 • 구성요소별 설명 - 1시간 • 설치 방법 및 실습 – Docker, SWARM, Spring Cloud • 사용법 시나리오 •마이크로 서비스 아키텍처 기반 애플리케이션 샘플링 ㅡ BPM as a Service • 요구사항 설명 • 소프트웨어 구성 ㅡ 여러개의 서비스로 분리된 프로젝트 • api 이해 - hateoas 의 이해 • 프론트엔드 기술 • merge by front-end, Oauth 2.0 • 멀티테넌시 데이터의 연동 • 실습: 소스빌드, zuul server, eureka server 구성통한 로컬 개발 환경의 구성 • 실습: httpie 통한 api navigation, hybind 통한 navigation, vuejs 통한 화면 바인딩 •데브옵스 시나리오 - 2시간 • 애플리케이션 등록시 자동 개발기 배포 • 개발기에서 스테이징, 운영기의 무정지 재배포 • 새버전의 발생 ㅡ 테스트 자동화와 격리 배포 • 톨러런트 서비스 ㅡ 디도스 공격 자동 대처, 서킷 브레이크 4
  • 5. Agenda •성공적 서비스 구축의 필요한 기술 - 2시간 •퍼블릭 워크로드 분산 엔진 – 블루믹스 (클라우드 파운드리) 의 분석 - 2시간 • 앱 디플로이 • 자동 확장 설정 • 데브옵스 설정 통한 빌드 • 무정지 재배포 •프라이빗 PaaS 구축 하기 - 5시간 • 아키텍처 설명 • 구성요소별 설명 - 1시간 • 설치 방법 및 실습 – Docker, SWARM, Spring Cloud • 사용법 시나리오 •마이크로 서비스 아키텍처 기반 애플리케이션 샘플링 ㅡ BPM as a Service • 요구사항 설명 • 소프트웨어 구성 ㅡ 여러개의 서비스로 분리된 프로젝트 • api 이해 - hateoas 의 이해 • 프론트엔드 기술 • merge by front-end, Oauth 2.0 • 멀티테넌시 데이터의 연동 • 실습: 소스빌드, zuul server, eureka server 구성통한 로컬 개발 환경의 구성 • 실습: httpie 통한 api navigation, hybind 통한 navigation, vuejs 통한 화면 바인딩 •데브옵스 시나리오 - 2시간 • 애플리케이션 등록시 자동 개발기 배포 • 개발기에서 스테이징, 운영기의 무정지 재배포 • 새버전의 발생 ㅡ 테스트 자동화와 격리 배포 • 톨러런트 서비스 ㅡ 디도스 공격 자동 대처, 서킷 브레이크 5
  • 6. 성공적 서비스의 정의 • Economist Intelligence 에 의한 국제적 조사 • (293개 기업 CIO, 조사국가: 미국 39%, 영국 31%, 호주 30%)에 의하면, • 서비스의 제공 방식의 변화로 가장 많은 40% 로 대답한 것은 바로 ‘구독형 서 비스(Subscription Service)’의 도입 6
  • 9. 성공적 서비스로의 여정 운영자동화 • Business  Continuity • Zero-­‐downtime 수익화 • Subscription   Business 구현 • Mashups • Multi-­‐tenancy • Self-­‐Serviced 마이크로 서비스 • Separation  of  Concerns Successful Service 9
  • 10. 성공적 서비스로의 여정 운영자동화 • Business  Continuity • Zero-­‐downtime 수익화 • Subscription   Business 구현 • Mashups • Multi-­‐tenancy • Self-­‐Serviced 마이크로 서비스 • Separation  of  Concerns 10
  • 11. Creating  Innovative  Application :  Develop  or  Mashup? Machine  Learning Voice-­‐ware IoT Not  enough   TIME! 11
  • 12. Develop  or  Mashup? IBM  Bluemix – Watson  Micro  Services 12
  • 13. Develop  or  Mashup? IBM  Bluemix – Writing  Voice  Ware 13
  • 14. 14
  • 15. 사례: 한일네트웍스의 카카오톡 챗봇 기반 자동응답 시스템 •1. Watson Conversation 서비스로 대화 서비스 만들기 •2. 내가 만든 채팅 서비스를 어플리케이션으로 노출하기 •3. 대화 내용으로 회의실 예약하기 •4. Node.js 어플리케이션 카카오톡과 연동하기 •5. [응용] 회의실 예약 조회 및 취소 기능 추가하기 •6. [심화] 예약 시간이 되면 ChatBot이 알려주기 (텔레그램) 15
  • 16. Share more, More cheap offering, More Competitive in the market ! Share less, More easy& Secure ! Creating  Innovative  Application   Multi-­‐tenancy  Support 16
  • 18. 가입자A의 앱설정 가입자B의 앱설정 * 멀티태넌시 지원 기능은 금번 사업 범위에 비포함 * 향후 현재 R&D문서관리 등은 멀티태넌트 전환이 필요함 2. 도입기관별 입력 항목 변경 3. 도입기관별 판정로직 설정 1. 도입기관 브랜드 설정 Multi-­‐tenancy  Support Metadata-­‐based 18
  • 21. Tenant-­aware! Inject  tenant-­specific  logics,  workflows,  brand Tenant-­specific   Store Multi-­‐tenancy  Support SPOSAD  Architecture 21
  • 22. Tenant-­‐specific  Customization  >  Custom  Database  Schema  >  Shared  Database   vs.  Shared  schema Rigid,  shared  table Extension   tables Datatype-­specific   pivot  tables Private  tables Universal  table   with  XML   document Universal  table Supporting  Multi-­‐tenancy 어떤 DB  구조로 설계해야 하나요? 22
  • 23. Supporting  Multi-­‐tenancy Force.com:    Multi-­‐tenant  Kernel 23
  • 24. Supporting  Multi-­‐tenancy NoSQL  databases 1. Inherent multi-­‐tenancy  -­‐ Schema  Free 2. High  Performance  -­‐ Horizontally  scalable  and  Memory  cache 3. Web  optimized  – Query  results  are  JSON  -­‐ data  can  be  parsed  by  web   browser  directly  and  performantly. Additionally  -­‐ 4. Easy  to  implement  Analytic  services  (MR)  and  Full  Text  Search 5. Event-­‐driven  Transaction-­‐don't  have  to  care  about  CQRS  something 6. Some  NoSQL  products  (Couchbase,  Cassandra)  provides  pessimistic   locking  and  ANSI  SQL  (Join  Query)  -­‐ easily  migrate  to  them. 24
  • 25. Supporting  Multi-­‐tenancy Libraries  and  tools  for  Multi-­‐tenancy  support • Multi-­‐tenancy  Database  Frameworks • JPA  @Discriminator  annotation  (Hibernate,  EclipseLink) • Athena  Framework • Spring  Cloud • Corent-­‐technology’s  JDBC/ODBC  proxy • Metadata  framework  (SPOSAD) • IBM  J9  JVM  -­‐ @TenantScope annotation • Athena  Framework • Adaptive  Object  Model • Metaworks4.io 25
  • 26. Adaptive  Object  Model 26 http://adaptiveobjectmodel.com • Class  Definition  model  in   instance  level • Definition  can  be  stored  in  a   XML  file  or  database. • Very  Flexible  to  Extend • Polymorphism   for  multi-­‐tenant Drawbacks:   • Hard  to  read  code • Error-­‐prone  
  • 27. Reflection  +  AOM 27 • Since  Java  1.2 • Java  Class  definition   can  be   accessible  with  Reflection  APIs • For  the  concrete  part,  Get  the   Metadata  from  Class  Definition • For  the  flexible  part,  use  the   AOM
  • 28. Annotation  +  Reflection  +  AOM 28 • Since  Java  1.5 • Rather  use  separated  XML  files,   use  @  for  specifying  additional   (user-­‐defined)   metadata  for   class  definition
  • 29. Supporting   Multi-­‐tenancy NoSQL  databases 1. Inherent multi-­‐tenancy  -­‐ Schema  Free 2. High  Performance  -­‐ Horizontally  scalable  and  Memory  cache 3. Web  optimized  – Query  results  are  JSON  -­‐ data  can  be  parsed  by  web   browser  directly  and  performantly. Additionally  -­‐ 4. Easy  to  implement  Analytic  services  (MR)  and  Full  Text  Search 5. Event-­‐driven  Transaction -­‐ don't  have  to  care  about  CQRS  something 6. Some  NoSQL  products  (Couchbase,  Cassandra)  provides  pessimistic   locking  and  ANSI  SQL  (Join  Query)  -­‐ easily  migrate  to  them. 29
  • 30. 사례: 소프트웨어인라이프 Docswave.com (전자결재시스템) • 구글앱엔진의 멀티테넌시 (SPOSAD)   아키텍처 기반 멀티테넌시 • 테넌트별 • 조직도 • 결재 프로세스 • 양식 • 테마 • 등을 회사별로 설정 관리 30
  • 31. 성공적 서비스로의 여정 운영자동화 • Business  Continuity • Zero-­‐downtime 수익화 • Subscription   Business 구현 • Mashups • Multi-­‐tenancy • Self-­‐Serviced 마이크로 서비스 • Separation  of  Concerns 31
  • 32. DevOps:  Issues Continuous  Delivery 32 Company Deploy  Frequency Deploy  Lead  Time Reliability Customer   Responsiveness Amazon 23,000  /  day Minutes High High Google 5,500  /  day Minutes High High Netflix 500  /  day Minutes High High Facebook 1  /  day Hours High High Twitter 3  /  week Hours High High Typical  enterprise Once  every  9  months Months  or  quarters Low  /  Medium Low  /  Medium 출처:  도서 The  Phoenix  Project Amazon,
  • 36.  Twitter는 얼마나 자주 배포할까요?
  • 37. 33 2. 배포 주기 • 매일 마이너 업데이트 • 메이저 업데이트 (매주 화요일 오후) 3. Deployment
  • 39. 34 4. Canary를 통해서 확신 갖기 • Canary란? 실제 production
  • 41.  subset에서 새로운 코드를 돌려보고 옛날 코드와 비교해서 새로운 코드가 어떻게 돌아가는 지 보는 것 • Canary
  • 48.  avg 등이 옛날 코 드랑 새로운 코드랑 비교해서 어떻게 다른 지 확인하는 것)은 1000개 이상의 metric을 비교해서 100점 만점에 점수를 주고 일정 점수일 경우만 배포할 수 있음. 출처: http://techblog.netflix.com/2013/08/deploying-­‐netflix-­‐api.html Supporting  Continuous  Delivery Netflix
  • 49. 출처 :  2010  architecting  for  the  cloud  (http://www.slideshare.net/simone.brunozzi/2010-­‐architecting-­‐for-­‐the-­‐cloud-­‐4719195) DevOps:  Issues Managing  Scalability 35
  • 51. 사례: KTH  의 DevOps  적용 • 참고: https://www.slideshare.net/ds5apn/dev-­‐ops-­‐2013041801pdf 37
  • 52. 성공적 서비스로의 여정 운영자동화 • Business  Continuity • Zero-­‐downtime 수익화 • Subscription   Business 구현 • Mashups • Multi-­‐tenancy • Self-­‐Serviced 마이크로 서비스 • Separation  of  Concerns 38
  • 53. Monolithic  Architecture à 모든 서비스가 한번에 재배포 à 한팀의 반영을 위하여 모든 팀이 대기 à 지속적 딜리버리가 어려워 39
  • 54. Micro  Service  Architecture Contract  based,  Polyglot  Programming à Separation  of  Concerns,  Parallel  Development,   Easy  Outsourcing Written  in  Java Written  in  Node Written  in  PHP 40
  • 55. Example  of  Aggregate  from  different  data   sources 41
  • 57. Level  0:  Swamp  of  POX • Use  as  a  RPC,  returns  full  serialized  document 43 openSlotList slot  start  =  1400  end  =  1450 doctor  id  =  mjones/   /slot   slot  start  =  1600  end  =  1650   doctor  id  =  mjones/  /slot  /openSlotList
  • 58. Level  1:  Resources Level  1  tackles  the  question  of  handling  complexity   by  using  divide  and  conquer,  breaking  a  large  service   endpoint  down  into  multiple  resources. 44 openSlotList   slot _link =  ”http://openslots/1234/   slot _link =  ”http://openslots/1235/   /openSlotList #  http://openslots/1234 slot  start  =  1400  end  =  1450 doctor  id  =  mjones/   /slot   #  http://openslots/1235 slot  start  =  1600  end  =  1650   doctor  id  =  mjones/  /slot
  • 59. Level  2:  HTTP  Verbs Level  2  introduces  a  standard  set  of  verbs  so  that  we   handle  similar  situations  in  the  same  way,  removing   unnecessary  variation. 45 Operation HTTP  /  REST Create PUT  /  POST Read  (Retrieve) GET Update  (Modify) PUT /  PATCH Delete  (Destroy) DELETE #  http://openslots/1234 slot  start  =  1400  end  =  1450 doctor  id  =  mjones/   /slot  
  • 60. Level  3:  Hypermedia  Controls 46 appointment   slot  id  =  1234  doctor  =  mjones  start  =  1400  end  =  1450/   patient  id  =  jsmith/   link  rel =  /linkrels/appointment/cancel  uri =   /slots/1234/appointment/   link  rel =  /linkrels/appointment/addTest  uri =   /slots/1234/appointment/tests/ link  rel =  self  uri =  /slots/1234/appointment/     link  rel =  /linkrels/appointment/changeTime  uri =   /doctors/mjones/slots?date=20100104@status=open/   link  rel =  /linkrels/appointment/updateContactInfo  uri =   /patients/jsmith/contactInfo/   link  rel =  /linkrels/help  uri =  /help/appointment/   /appointment Level  3  introduces  discoverability,  providing   a  way  of  making  a  protocol  more   self-­‐documenting.
  • 61. Recommended  Book • REST  in  Practice • Domain  Driven  Design   Quickly 47
  • 62. Micro  Service  Architecture • 변경된 서비스만 재배포 à Side  effect  최소화 • 자율성 à 각 서비스에 대한 자유로운 언어, 아키텍처, 아웃소싱 용이 • 병렬 개발, 타임 투 마켓, 린 개발 48
  • 63. 49
  • 64. Pets  vs.  Cattle  Strategy 50
  • 65. API  Gateway (Human) Front-­‐end Servic e Service API  G/W Service Service We  need  API  Gateway  for  aggregating,  forwarding  services   and  exposing  composite  APIs Tenant-­‐Specific  Routing (Machine) Third-­‐party  Apps 51
  • 66. Billing (Human) Front-­‐end ServiceService API  G/W Service Service We  need  API  Gateway  for  aggregating,  forwarding  services   and  exposing  composite  APIs Tenant-­‐Specific  Billing (Machine) Third-­‐party  Apps Billing 52 IAM Uid/pwd token token
  • 67. 사례: • 국내는 시도 중 • 세계적 사례: Netflix  와 Amazon • Netflix  OSS, Spring  Cloud  : 적용 노하우들을 오픈소스로 공게 • MSA  관련 번역서가 쏟아지는 중:  거의 해석 안됨 • 무료책: 오히려 실질적 • 강의: KOSTA • 본질은 SOA,  DDD,  CBD https://www.redbooks. ibm.com/redbooks/pdf s/sg248357.pdf 53
  • 68. Tip:  monolithic  and  MSA 54 monolithic MSA Aggregation (데이터 통합) Backend  가 주도 Front 가 주도 Database 통합 데이터베이스 서비스 별 데이터베이스 필수 환경 WAS DevOps, PaaS  (Grid  Engine) 서비스 굵기 업무 비즈니스 기능별 구현 팀별, 10000 라인 이 하로?, 관심사별 Front 기술 JSP,  Struts  등 Server-­‐side rendering MVVM,  AJAX  등 Client-­‐side rendering Container  /  Packaging WAS /  WAR Spring-­‐Boot,   Docker
  • 69. 성공적 서비스로의 여정 운영자동화 • Business  Continuity • Zero-­‐downtime 수익화 • Subscription   Business 구현 • Mashups • Multi-­‐tenancy • Self-­‐Serviced 마이크로 서비스 • Separation  of  Concerns 55
  • 71. Leaders Mainstream Laggards Pricing strategy • Pricing metrics are defined as perceived by the customers • Pricing strategy is easy to understand, measure. • Boundaries for usage, features, time, conversion from trial are clearly defined • Pricing is ad hoc • Pricing is based on internally-oriented metrics • Difficult to convert trial and freemium to paid • Leader  들은 고객 관점에서 가격을 책정, 시장상황에 빠르게 가격 및 정책 개선 • 후발기업들은 내부 비용에 초점, 변경하지 않음 57
  • 72. Zuora Aria Hiveage Chargify And more.. Monetization Platforms  For  Monetization 58
  • 73. Monetization  Platform Zuora -­‐ Billing  Metering  As  A  Service 59
  • 74. Monetization  Platform Zuora -­‐ Billing  Metering  As  A  Service 60
  • 75. Monetization  Platform Zuora -­‐ Billing  Metering  As  A  Service 61
  • 76. 오픈소스 빌링: Killbill.io • 상용 SaaS  빌링 솔루션의 기능을 거의 커버 (by  커뮤니티) • 플랜설계, 구독관리, 인보이스 생성/발행, 연체관리, PG연계, 분석 • 그루폰 등 SaaS  적용율 1위 • 국내 적용 사례: 포시에스 e-­‐Form  서비스 62
  • 77. Agenda •성공적 서비스 구축의 필요한 기술 - 2시간 •퍼블릭 워크로드 분산 엔진 – 블루믹스 (클라우드 파운드리) 의 분석 - 2시간 • 앱 디플로이 • 자동 확장 설정 • 데브옵스 설정 통한 빌드 • 무정지 재배포 •프라이빗 PaaS 구축 하기 - 5시간 • 아키텍처 설명 • 구성요소별 설명 - 1시간 • 설치 방법 및 실습 – Docker, SWARM, Spring Cloud • 사용법 시나리오 •마이크로 서비스 아키텍처 기반 애플리케이션 샘플링 ㅡ BPM as a Service • 요구사항 설명 • 소프트웨어 구성 ㅡ 여러개의 서비스로 분리된 프로젝트 • api 이해 - hateoas 의 이해 • 프론트엔드 기술 • merge by front-end, Oauth 2.0 • 멀티테넌시 데이터의 연동 • 실습: 소스빌드, zuul server, eureka server 구성통한 로컬 개발 환경의 구성 • 실습: httpie 통한 api navigation, hybind 통한 navigation, vuejs 통한 화면 바인딩 •데브옵스 시나리오 - 2시간 • 애플리케이션 등록시 자동 개발기 배포 • 개발기에서 스테이징, 운영기의 무정지 재배포 • 새버전의 발생 ㅡ 테스트 자동화와 격리 배포 • 톨러런트 서비스 ㅡ 디도스 공격 자동 대처, 서킷 브레이크 63
  • 78. Cloud  Foundry:   IBM  Bluemix의 워크로드분산엔진 64
  • 79. Delivery  Time  with  Cloud  Foundry 65
  • 81. Bluemix CF  app  Dashboard 67
  • 82. Bluemix:    Polyglot  platform  support   68
  • 83. Building  Sample  Application  In  Bluemix 69 앱이 시작되면 URL  이 연결됨 “개요 지속적 딜리버리 사용”를 클릭하여 앱을 배포할 환경을 구축 1. 저장소 복제 저장소 주소에 아래 입력 2. 도구 파이프라인에서 빌드 버튼 클릭 기본 소스코드로 구성되어있음 https://github.com/jinyoung/sw-­‐modeling-­‐example.git
  • 84. Building  Sample  Application  In  Bluemix – Build  by  Online  Pipeline  Tool 옵션추가: -­‐p  portal-­‐0.1.0.war 70
  • 86. DevOps  Platform IBM  Bluemix – Auto  Scaling 72
  • 87. DevOps  Platform IBM  Bluemix – Zero  Downtime  Deploy 73
  • 88. Cloud  Foundry  Architecture 라우팅 (HAProxy 등) 워크로드 배분 워크로드에 대한 잡 배분 명령 / 핼쓰 매니저 타스크 실행 에이젼트 / 컨테이너 애플리케이션 이미지 레포지토리 외부 서비스 (카탈로그) 연동 브러커 구성요소간 메시지 전달 보장 어플리케이션 로그 통합 74
  • 89. Cloud  Foundry:    배포 시나리오 75
  • 90. Cloud  Foundry:  A  workload  distribution   engine Cloud  controller DEA  /  Warden NATS Router 76
  • 91. Dependencies 77 - MySQL DB and Cloudant Database - Setting the connection info by parsing VCAP_SERVICES or - Automatically set by Auto-reconfigurer: https://spring.io/blog/2015/04/27/binding-to-data-services-with-spring-boot- in-cloud-foundry
  • 92. Creating  Data  Sources  – for  Tenant  Data   Service  (NoSQL and  RDB) 78
  • 93. Injecting  Dependency  Connection  Info  – Environment  Variable VCAP_SERVICES= { cloudantNoSQLDB:  [ { name:  myMicroservicesCloudant, label:  cloudantNoSQLDB, plan:  Shared, credentials:  { username:  xyz, password:  password, host:  yourhost.yourdomain.com , port:  443, url:  https://mycloudant.yourhost.yourdomain.com } } } 79
  • 95. Agenda •성공적 서비스 구축의 필요한 기술 - 2시간 •퍼블릭 워크로드 분산 엔진 – 블루믹스 (클라우드 파운드리) 의 분석 - 2시간 • 앱 디플로이 • 자동 확장 설정 • 데브옵스 설정 통한 빌드 • 무정지 재배포 •프라이빗 PaaS 구축 하기 - 5시간 • 아키텍처 설명 • 구성요소별 설명 - 1시간 • 설치 방법 및 실습 – Docker, SWARM, Spring Cloud • 사용법 시나리오 •마이크로 서비스 아키텍처 기반 애플리케이션 샘플링 ㅡ BPM as a Service • 요구사항 설명 • 소프트웨어 구성 ㅡ 여러개의 서비스로 분리된 프로젝트 • api 이해 - hateoas 의 이해 • 프론트엔드 기술 • merge by front-end, Oauth 2.0 • 멀티테넌시 데이터의 연동 • 실습: 소스빌드, zuul server, eureka server 구성통한 로컬 개발 환경의 구성 • 실습: httpie 통한 api navigation, hybind 통한 navigation, vuejs 통한 화면 바인딩 •데브옵스 시나리오 - 2시간 • 애플리케이션 등록시 자동 개발기 배포 • 개발기에서 스테이징, 운영기의 무정지 재배포 • 새버전의 발생 ㅡ 테스트 자동화와 격리 배포 • 톨러런트 서비스 ㅡ 디도스 공격 자동 대처, 서킷 브레이크 81
  • 96. • IBM  Bluemix • Heroku • GE’s  Predix • Pivotal  Web  Services • Cloud  Foundry Container Workload  Distribution   Engine  (OSS) PaaS • Warden(Garden) • Docker • Kubernetes • Docker  SWARM • Mesos Marathon  (DCOS) • Google  Compute  Engine • Redhat Open  Shift • Hypervisor • CF  version  1 • Engineyard….   • Amazon  Beanstalk Open  Source  DevOps  Platforms 82
  • 98. Docker  Swarm $ docker swarm init Swarm initialized: current node (om30c0c4ched5oxn0lt1fe6ky) is now a manager. To add a worker to this swarm, run the following command: docker swarm join --token SWMTKN-1- 3dq52zf6jd0qpl21tfs6284jjksd2ni3a9hflh7expkv0j4gns- 73z9jwtwigfxgra6w7ybyyt1d 192.168.65.2:2377 To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions. 84
  • 99. Container  의 간략한 설명 • Image:   a  lightweight,  stand-­‐alone,   executable  package  that  includes   everything  needed  to  run  a  piece  of   software,  including  the  code,  a  runtime,   libraries,  environment  variables,  and   config files. • Container:  a  runtime  instance  of  an   image—what  the  image  becomes  in   memory  when  actually  executed.  It  runs   completely  isolated  from  the  host   environment  by  default,  only  accessing   host  files  and  ports  if  configured  to  do  so. 85
  • 100. VM  과 다른점 • Higher  Share  Level  but  Isolated. 86
  • 102. Lab  time:    Check  installed $ docker run hello-world Unable to find image 'hello-world:latest' locally latest: Pulling from library/hello-world 9a0669468bf7: Pull complete Digest: sha256:cf2f6d004a59f7c18ec89df311cf0f6a1c714ec924eebcbfdd 759a669b90e711 Status: Downloaded newer image for hello-world:latest Hello from Docker! This message shows that your installation appears to be working correctly. To generate this message, Docker took the following steps: 1. The Docker client contacted the Docker daemon. 2. The Docker daemon pulled the hello-world image from 88
  • 103. Dockerfile:  도커 이미지 스크립트 #  Use  an  official  Python  runtime  as  a  parent  image   FROM  python:2.7-­‐slim   #  Set  the  working  directory  to  /app   WORKDIR  /app   #  Copy  the  current  directory  contents  into  the  container  at  /app   ADD  .  /app   #  Install  any  needed  packages  specified  in  requirements.txt RUN  pip  install  -­‐-­‐trusted-­‐host  pypi.python.org -­‐r  requirements.txt #  Make  port  80  available  to  the  world  outside  this  container   EXPOSE  80 #  Define  environment  variable   ENV  NAME  World   #  Run  app.py when  the  container  launches   CMD  [python,  app.py] 89
  • 104. Lab:  Creating  a  Docker  image 1.  아래에서 발견되는 3개 파일들을 생성: https://docs.docker.com/get-­‐started/part2 • Dockerfile • app.py • requirements.txt 90
  • 105. Lab time:  Creating  a  Docker  image 2.  해당 폴더에서 도커 이미지를 빌드: $  docker build  -­‐t  friendlyhello . Sending build context to Docker daemon 4.608kB Step 1/7 : FROM python:2.7-slim 2.7-slim: Pulling from library/python d13d02fa248d: Pull complete a2c103c31b60: Pull complete 33bfff8f2f5e: Pull complete 5b66f3cbc9f3: Pull complete Digest: sha256:1f9abab4af336c05eb13091aa7d704b8044090e022081d950bb507a801ca378a Status: Downloaded newer image for python:2.7-slim --- b0259cf63993 Step 2/7 : WORKDIR /app --- 0ce982119f58 Removing intermediate container 0f1d644ba343 Step 3/7 : ADD . /app --- e1a57add98c1 Step 4/7 : RUN pip install --trusted-host pypi.python.org -r requirements.txt --- Running in f288e3e37c4f Collecting Flask (from -r requirements.txt (line 1)) Downloading Flask-0.12.2-py2.py3-none-any.whl (83kB) Collecting Redis (from -r requirements.txt (line 2)) Downloading redis-2.10.6-py2.py3-none-any.whl (64kB) Collecting itsdangerous=0.21 (from Flask--r requirements.txt (line 1)) Downloading itsdangerous-0.24.tar.gz (46kB) Collecting Jinja2=2.4 (from Flask--r requirements.txt (line 1)) Downloading Jinja2-2.10-py2.py3-none-any.whl (126kB) Collecting Werkzeug=0.7 (from Flask--r requirements.txt (line 1)) Downloading Werkzeug-0.12.2-py2.py3-none-any.whl (312kB) Collecting click=2.0 (from Flask--r requirements.txt (line 1)) Downloading click-6.7-py2.py3-none-any.whl (71kB) Collecting MarkupSafe=0.23 (from Jinja2=2.4-Flask--r requirements.txt (line 1)) Downloading MarkupSafe-1.0.tar.gz Building wheels for collected packages: itsdangerous, MarkupSafe 91
  • 106. Lab  time:  Creating  a  Docker  image 3.  이미지 확인 $ docker images REPOSITORY TAG IMAGE ID CREATED SIZE friendlyhello latest fc301c7d07b4 2 minutes ago 148MB python 2.7-slim b0259cf63993 2 weeks ago 138MB hello-world latest 725dcfab7d63 2 weeks ago 1.84kB 92
  • 107. Lab  time:  Run  the  app docker run -p 4000:80 friendlyhello 93
  • 108. Lab  time:  Command  History  so  far https://docs.docker.com/get-­‐started/part2/#recap-­‐and-­‐cheat-­‐sheet-­‐optional 94
  • 109. Docker  Compose:  팀 구성 표 95
  • 110. Docker  Compose:  팀 구성 표 version: 3” #컴포즈 파일 포맷 버전 -- 그냥 3 버전이란다.. services: web: # replace username/repo:tag with your name and image details image: friendlyhello:latest deploy: replicas: 5 # 작업자(인스턴스)는 5개를 항상 유지했으면 좋겠고… resources: limits: cpus: 0.1 memory: 50M restart_policy: condition: on-failure ports: - 80:80 networks: - webnet networks: webnet: 96
  • 111. Lab  time:   https://docs.docker.com/get-started/part3/#your- first-docker-composeyml-file 의 파일을 생성 후, image: friendlyhello:latest 로 변경, 다음을 실행: $ docker stack deploy -c docker-compose.yml getstartedlab Creating network getstartedlab_webnet Creating service getstartedlab_web 97
  • 112. Lab  time: Self-­‐Healing   $ docker container ls è 5 개 è $ docker kill hash $ docker container ls è 4 개 ... 몇 초 후…. $docker container ls è 5 개 98
  • 113. Lab  time: Scale  In   2. 반영: $ docker stack deploy -c docker-compose.yml getstartedlab 99 version: 3 services: web: image: friendlyhello:latest deploy: replicas: 3 resources: limits: …… 1.Compose 파일의 변경: 3. 확인: $ docker container ls -à 3개
  • 114. Lab  time:  서비스 리플리카 확인 $ docker service ls ID NAME MODE 58bx8fm7mtby getstartedlab_web replicated REPLICAS IMAGE PORTS 5/5 friendlyhello:latest *:4000-80/tcp 100
  • 115. Lab  time:    Summary 101
  • 116. 프라이빗 PaaS  구축하기 • 상용 제품 구매 vs.  오픈소스로 구축 • 대기업 / 중견기업 / 스타트업 별 상황 • 프로젝트 성격 • 제공자로서 • 퍼블릭 PaaS  플랫폼 제공자인 경우 – 오픈소스로 구축 • E.g.  블루믹스의 경우 최초 Pivotal  의 도움을 받아 구축 • 사용자로서 • 빠른 시장 진입 – 퍼블릭 PaaS • But,  적당한 PaaS  가 존재하지 않거나 시장에서 독자적인 DevOps  환경이 필요할 때 • – uEngine 의 케이스 102
  • 117. Open  Cloud  Engine Client-­‐driven  Data  Aggregation API  GW  (ZUUL) Service 3rd Party  Apps BillingIAM Data Sync  via  REST REST  Call Service  Container  Part Issue  Token ID/PWD Collect Usage DevOps  Portal EUREKA Service Service Service Open  Cloud  Engine: A  Private  PaaS 103
  • 118. Open  Cloud  Engine Client-­‐driven  Data  Aggregation API  GW  (ZUUL) Service 3rd Party  Apps BillingIAM Data Sync  via  REST REST  Call Service  Container  Part Issue  Token ID/PWD Collect Usage DevOps  Portal EUREKA Service Service Service :    Workload  Distribution  Engine  – Mesosphere’s  DCOS DCOS: • Proven  and   • Powerful 104
  • 119. Open  Cloud  Engine Client-­‐driven  Data  Aggregation API  GW  (ZUUL) Service 3rd Party  Apps BillingIAM Data Sync  via  REST REST  Call Service  Container  Part Issue  Token ID/PWD Collect Usage DevOps  Portal EUREKA Service Service Service :    CI/CD  Tool  -­‐ GitLab 105
  • 120. Open  Cloud  Engine Client-­‐driven  Data  Aggregation API  GW  (ZUUL) Service 3rd Party  Apps BillingIAM Data Sync  via  REST REST  Call Service  Container  Part Issue  Token ID/PWD Collect Usage DevOps  Portal EUREKA Service Service Service :    Microservice Chassis  – Spring  Boot 106
  • 121. Open  Cloud  Engine Client-­‐driven  Data  Aggregation API  GW  (ZUUL) Service 3rd Party  Apps BillingIAM Data Sync  via  REST REST  Call Service  Container  Part Issue  Token ID/PWD Collect Usage DevOps  Portal EUREKA Service Service Service :    Microservice API  G/W  and  Registry  – Spring  Cloud  /  Netflix  OSS 107
  • 122. Open  Cloud  Engine Client-­‐driven  Data  Aggregation API  GW  (ZUUL) Service 3rd Party  Apps BillingIAM Data Sync  via  REST REST  Call Service  Container  Part Issue  Token ID/PWD Collect Usage DevOps  Portal EUREKA Service Service Service :    Front-­‐End  – Vue JS,  Hybindand  Spring  Data  Rest 108
  • 123. Open  Cloud  Engine:   Management  Console  -­‐ mimics  public  PaaS’  UI/UX 109
  • 124. Open  Cloud  Engine:   Management  Console – Creating  an  App 110
  • 125. Open  Cloud  Engine:   Management  Console – Managing  an  App 111
  • 126. Open  Cloud  Engine:   Management  Console – Managing  an  App  -­‐ Environment 112
  • 127. Open  Cloud  Engine:   Management  Console – CI/CD  Settings 113
  • 128. Open  Cloud  Engine:   Management  Console – Source  Control  – SSO  with  GitLab 114
  • 129. Agenda •성공적 서비스 구축의 필요한 기술 - 2시간 •퍼블릭 워크로드 분산 엔진 – 블루믹스 (클라우드 파운드리) 의 분석 - 2시간 • 앱 디플로이 • 자동 확장 설정 • 데브옵스 설정 통한 빌드 • 무정지 재배포 •프라이빗 PaaS 구축 하기 - 5시간 • 아키텍처 설명 • 구성요소별 설명 - 1시간 • 설치 방법 및 실습 – Docker, SWARM, Spring Cloud • 사용법 시나리오 •마이크로 서비스 아키텍처 기반 애플리케이션 샘플링 ㅡ BPM as a Service • 요구사항 설명 • 소프트웨어 구성 ㅡ 여러개의 서비스로 분리된 프로젝트 • api 이해 - hateoas 의 이해 • 프론트엔드 기술 • merge by front-end, Oauth 2.0 • 멀티테넌시 데이터의 연동 • 실습: 소스빌드, zuul server, eureka server 구성통한 로컬 개발 환경의 구성 • 실습: httpie 통한 api navigation, hybind 통한 navigation, vuejs 통한 화면 바인딩 •데브옵스 시나리오 - 2시간 • 애플리케이션 등록시 자동 개발기 배포 • 개발기에서 스테이징, 운영기의 무정지 재배포 • 새버전의 발생 ㅡ 테스트 자동화와 격리 배포 • 톨러런트 서비스 ㅡ 디도스 공격 자동 대처, 서킷 브레이크 115
  • 130. BPM:    Process  Design 116
  • 131. BPM  :    Save  Process  and  Run 117
  • 132. 118 BPM  :    Process  Monitoring
  • 133. Mission:    New  Breed  of  BPM  : Business  Process  As  A  Service 119 Business  Process  Automation SaaS  Integration SSO  /  Billing  Integration Cloud  Service  Brokerage
  • 134. Requirements  of  uEngine5 1. Multi-­‐tenant 2.Horizontally  Scalable 3. Automated  Operation 4. API  Routing  /  Integration 5.Application  Generation 120 1. SPOSAD  Architecture 2. Micro  Services  Architecture 3. Work-­‐load  Distribution  Engine 4.API  Gateway   5.PaaS  Platform requirements solutions
  • 135. 웹 브라우저 Client-­‐driven  Data  Aggregation API  GW  (ZUUL) Service 기타 연동 어플리케이 션들 모니터링IAM CRUD Data Sync  via  REST REST  Call Service Service Service Process Service Worklist Definition Service  Container  Part Issue  Token ID/PWD Collect Usage MSA  Reference  Architecture:    BPM DevOps  Portal EUREKA 121
  • 136. Design  factors  on  developing  cloud   applications 1.Don't  code  your  application  directly  to  a  specific   topology 2.Do  not  assume  the  local  file  system  is  permanent 3.Don't  keep  session  state  in  your  application 4.Don't  log  to  the  file  system 5.Don't  assume  any  specific  infrastructure  dependency 6.Don't  use  infrastructure  APIs  from  within  your   application 7.Don't  use  obscure  protocols 8.Don't  rely  on  OS-­‐specific  features 9.Don't  manually  install  your  application 122
  • 137. Micro  Service  Architecture Design  Factor  for  Front-­‐end One  Page N-­‐Screen Responsive Dynamic Real-­‐time   123
  • 138. Front-­‐end Image  Server (Python) Business   Logic  Server (Java) Extended  Role  of  Front-­‐end  in  Cloud  Applications Aggregator  for  multiple  (polyglot  programmed)  micro-­‐services Component   Service (C) AJAX,  RESTful Concurrent   Cloud   Applications   are  composed   of  multiple  Micro   Services  and  front-­‐end   serves  as  an  aggregator  of  the  services 124
  • 139. Writing  One  Page  Web  App Problems:    One  Page  Web  App  à Low Cohesion  and  High  Coupling style style  for  A style  for  B style  for  C /style html element  for  A element  for  B element  for  C /html script script  for  A script  for  B script  for  C /script 125
  • 140. W3C  Web  Components style style  for  A style  for  B style  for  C /style html element  for  A element  for  B element  for  C /html script script  for  A script  for  B script  for  C /script #A.html style style  for  A /style html element  for  A /html script script  for  A /script #B.html style style  for  B /style html element  for  B /html script script  for  B /script #C.html style style  for  C /style html element  for  C /html script script  for  C /script #index.html A  A B  B  B C   126
  • 141. Web  Components  :  Implementations • Provides  Cohesive  Component  Model • Component  Composition  by  HTML  markup • Dynamic  Data  Binding • Responsive  Web  by  Material  Design • Standard Polymer                            VueJS 127
  • 144. IAM (Human) Front-­‐end ServiceNoSQLDB Service Service Stateless  인증,통합빌링을 위한 IAM Tenant  Billing (Machine) Third-­‐party  Apps Billing IAM  token   provider API  G/W 130
  • 145. API  수준: HATEOAS {  _links:   {  instantiation:  {  href:  http://localhost:8080/definition/instance/process.json   },   raw:  {  href:  http://localhost:8080/definition/raw/process.json },   self:  {  href:  http://localhost:8080/definition/process.json }   },   directory:  false,   name:  process.json,   path:  process.json } {  _links:   {  definition:  {  href:  http://localhost:8080/definition/process.json   }, role-­‐mapping:  {  href:  http://localhost:8080/instance/3451/role-­‐ mapping/{roleName}},   self:  {  href:  http://localhost:8080/instance/3451   },   stop:  {  href:  http://localhost:8080/instance/3451/stop   },   suspend:  {  href:  http://localhost:8080/instance/3451/stop   },   variables:  {  href:  http://localhost:8080/instance/3451/variables   }  },   name:  Volatile_0   } POST:  instantiation 프로세스 개시 POST:  stop (멈춤) POST:  suspend GET:  variables (변수 목록 보기) Definition instance 131
  • 146. Entity,  Resource,  Service  선택 우선순위 • DDD(Domain  Driven  Design)  분석 기법 적용한 최적의 생산성 도메인 용어 기반 도메인 클래스 후보 도출 도메인 클래스가 Entity  유형인가? Spring  Data  Rest  사용 @Entity  로 선언, JPA  매핑, Repository  생성 빠른 CRUD  /  REST  MM  3  Level  의 구현 (라인수 매우 적음) Resource   Model로 만들 수 있는가? 서비스로 개발 직접 Spring  MVC  를 사용하여 RequestMapping 구현 (라인수 매우 많음) Spring  Hateoas 프레임워크만 사용,  Resource  로 포장 Resource를 서비스로 Expose (라인 수 중간) 각 도메인 클래스에 대하여 (최대한 지양) N N Y Y 132
  • 147. DDD  적용 예시: Entity,  Value  Object,   Aggregation  Root • DDD(Domain  Driven  Design)  분석 기법 적용한 최적의 생산성 Source:  https://www.slideshare.net/madvirus/ddd-­‐final133
  • 148. 프로젝트 구성 • APIs-­‐and-­‐Domain • 공통 API  Contracts • 공통 도메인 클래스 • 나머지 서비스들이 모두 이를 import   함 • Definition-­‐Service • 프로세스 정의 보존 • 프로세스 정의 열람 • 프로세스 정의 배포/수정 • 프로세스 정의 버전관리 • Process  Service • 프로세스 실행과 관련한 모든 서비스 • Workspace  Service • 워크아이템 처리 • 업무 화면 연계 134
  • 149. 서비스의 호출 방식 2가지 • 프론트-­‐엔드 에서 • 마이크로 서비스 간 (inter-­‐microservice call) HTTPClient 로 REST 호출 Feign  을 사용, @Autowired 로 proxy  객체리턴 Ribbon  이 Eureka  를 통하여 직접 마이크로 서비스가 로드밸런싱 된 대상을 선택 AJAX  로 REST 호출 Hybind 를 사용, 자바스크립트객체와 Resource 바인딩 Zuul 을 경유하여 Eureka  에서 발견된 path  에 따른 서비스가 라우팅 135
  • 151. Front-­‐end  호출 경로 웹 브라우저 API  GW  (ZUUL) Process WorklistDefinition EUREKA /definition/** /instance/** /role-­‐mapping/** /variables/** /work-­‐item/** Definition:  ip1,  ip2 Instance:  ip3 Worklist:  ip4,  ip5 137
  • 152. Inter-­‐Microservices Call  (Java) @Autowired DefinitionService definitionService; public  Object  getDefinition(String   defPath)  throws  Exception  { Object  returned  =  definitionService.getXMLDefinition(defPath); } 138
  • 153. Inter-­‐microservices Call 웹 브라우저 API  GW  (ZUUL) Process Worklist Definition EUREKA /definition/** /instance/** /role-­‐mapping/** /variables/** /work-­‐item/** Definition:  ip1,  ip2 Instance:  ip3 Worklist:  ip4,  ip5 Ribbon Ribbon Zuul 을 경유하지 않고 직접 내부 IP  로 접근 139
  • 154. 공통 참조 모듈 • Bounded   Context   도메인 클래스들 • Service   Contract  들 140
  • 155. 공통 참조 모듈: Service  Contract -­‐-­‐-­‐-­‐ Service  Id 이걸로, Autowired 시에 식별됨 141
  • 156. 각 Service  들의 설정 spring: application: name:  bpm server: port:  8090 servletPath:  / eureka: client: serviceUrl: defaultZone:  http://localhost:9090/eureka/ healthcheck: enabled:  true instance: statusPageUrlPath:  ${server.servletPath}info healthCheckUrlPath:  ${server.servletPath}health 내가 누구다 (serviceId=bpm) 부트업 되면서 출생신고할 동사무소(유레카) 주소 142
  • 157. 각 Service  들의 설정 @SpringCloudApplication @EnableEurekaClient @EnableFeignClients(basePackageClasses =  {DefinitionService.class}) public  class  uEngine5Application  extends  Metaworks4BaseApplication  { protected   uEngine5Application(DataSource dataSource,  JpaProperties properties, ObjectProviderJtaTransactionManager  jtaTransactionManagerProvider, ObjectProviderTransactionManagerCustomizers  transactionManagerCustomizers)  { super(dataSource,  properties,  jtaTransactionManagerProvider,  transactionManagerCustomizers); } public  static  void  main(String[]  args)  { SpringApplication.run(uEngine5Application.class,  args); } } 유레카에 등록시켜달라 인터-­‐마이크로서비스간 호출할 대상 서비스 목록 143
  • 158. Zuul 설정 ribbon: MaxAutoRetries:  1 MaxAutoRetriesNextServer:  1 OkToRetryOnAllOperations:   true ServerListRefreshInterval:  2000 ConnectTimeout:   3000 ReadTimeout:  3000 eureka: client: serviceUrl: defaultZone:  http://localhost:9090/eureka/ healthcheck: enabled:  true instance: statusPageUrlPath:  ${server.servletPath}info healthCheckUrlPath:   ${server.servletPath}health zuul: addProxyHeaders:  true routes: definition: serviceId:  definition path:  /definition/** stripPrefix:  false instance: serviceId:  bpm path:  /instance/** stripPrefix:  false instance-­‐entity: serviceId:  bpm path:  /instances stripPrefix:  true instance-­‐workitem: serviceId:  bpm path:  /workitem stripPrefix:  true endpoints: routes: sensitive:  false Zuul 도 유레카 클라이언트다 spring: application: name:  zuul-­‐router server: port:  8080 servletPath:  / 144
  • 160. Lab  time:  building  spring-­‐boot $ git clone https://github.com/TheOpenCloudEngine/uEngine5-base.git Cloning into 'uEngine5-base'... remote: Counting objects: 4420, done. remote: Compressing objects: 100% (164/164), done. remote: Total 4420 (delta 123), reused 234 (delta 76), pack-reused 4124 Receiving objects: 100% (4420/4420), 6.78 MiB | 708.00 KiB/s, done. Resolving deltas: 100% (2062/2062), done. Checking connectivity... done. 1.  먼저, 샘플 애플리케이션을 다운로드 받는다 146
  • 161. Lab  time:  build  Spring  Boot  Application $ cd uEngine5-base/ $ mvn package –B [INFO] Scanning for projects... [INFO] ------------------------------------------------------------------------ [INFO] Reactor Build Order: [INFO] [INFO] uEngine-five-api [INFO] uEngine5 [INFO] uEngine5-definition-service [INFO] uEngine5-process-service [INFO] uEngine5-standalone-server [INFO] [INFO] ------------------------------------------------------------------------ [INFO] Building uEngine-five-api 1.0.0-SNAPSHOT [INFO] ------------------------------------------------------------------------ [INFO] Downloading: https://repo.maven.apache.org/maven2/org/springframework/security/spring- security-core/maven-metadata.xml [INFO] Downloading: https://oss.sonatype.org/content/repositories/snapshots/org/springframework/security/spring- security-core/maven-metadata.xml [INFO] Downloading: https://repo.spring.io/libs-release 147
  • 162. Lab  time:    Running  Registry  and  Proxy 1.  가장 먼저 실행할 것은 Registry  (Eureka  서버) 임. [동사무소] 2.  다음으로 실행할 것은 Proxy  (Zuul 서버) 임. [이정표 서비스] $ cd uengine-proxy-server/ $ mvn spring-boot:run $ cd uengine-registry-server/ $ mvn spring-boot:run 148
  • 163. Lab  time:    Running  Micro  Services 1.  Run  and  test  Definition   Service 2.  Run  and  test  Process  Service $ cd definition-service/ $ mvn spring-boot:run –Dserver.port=8088 -Drun.arguments=--spring.profiles.active=msa Launch another shell and confirm server is up: $ http localhost:8088/definition $ cd process-service/ $ mvn spring-boot:run –Dserver.port=8089 -Drun.arguments=--spring.profiles.active=msa Launch another shell and check the server is up: $ http localhost:8089/instance 149
  • 164. Lab  time:    Test  Services {  _links:   {  instantiation:  {  href:  http://localhost:8080/definition/instance/process.json   },   raw:  {  href:  http://localhost:8080/definition/raw/process.json },   self:  {  href:  http://localhost:8080/definition/process.json }   },   directory:  false,   name:  process.json,   path:  process.json } {  _links:   {  definition:  {  href:  http://localhost:8080/definition/process.json   }, role-­‐mapping:  {  href:  http://localhost:8080/instance/3451/role-­‐ mapping/{roleName}},   self:  {  href:  http://localhost:8080/instance/3451   },   stop:  {  href:  http://localhost:8080/instance/3451/stop   },   suspend:  {  href:  http://localhost:8080/instance/3451/stop   },   variables:  {  href:  http://localhost:8080/instance/3451/variables   }  },   name:  Volatile_0   } POST:  instantiation 프로세스 개시 POST:  stop (멈춤) POST:  suspend GET:  variables (변수 목록 보기) Definition instance 150
  • 165. Lab  time:    Deploy  Definition $ http POST localhost:8080/definition/raw/process2.json process.json HTTP/1.1 200 Content-Type: application/json;charset=UTF-8 Date: Tue, 21 Nov 2017 10:53:20 GMT Transfer-Encoding: chunked X-Application-Context: definition:msa:8080 { _links: { instantiation: { href: http://localhost:8080/instance?defPath=/process2.json }, raw: { href: http://localhost:8080/definition/raw//process2.json }, self: { href: http://localhost:8080/definition//process2.json } }, directory: false, name: process2.json, path: /process2.json } This  is   the  next   action   link 151
  • 166. Lab  time:    Run  a  Process  Instance $ http POST http://localhost:8080/instance?defPath=/process2.json {  _links:   {  definition:  {  href:  http://localhost:8080/definition/process.json   }, role-­‐mapping:  {  href:  http://localhost:8080/instance/3451/role-­‐mapping/{roleName}},   self:  {  href:  http://localhost:8080/instance/3451   },   stop:  {  href:  http://localhost:8080/instance/3451/stop   },   suspend:  {  href:  http://localhost:8080/instance/3451/stop   },   variables:  {  href:  http://localhost:8080/instance/3451/variables   }  },   name:  Volatile_0   } This  is   the  next   action   link 152
  • 167. Lab  time:    Run  the  front-­‐end  server $ npm install $ npm run dev Id:    jyjang@uengine.org Pw:    test 153
  • 168. Lab  time:    Running  all  Services  with   Compose  file services: process-­‐api: image:  uengine-­‐five-­‐process:latest ports: -­‐ 8089:8080” depends_on: definition-­‐api definition-­‐api: image:  uengine-­‐five-­‐definition:latest ports: -­‐ 8088:8080 depends_on: registry proxy: image:  uengine-­‐proxy-­‐server:latest ports: -­‐ 8080:8080 depends_on: registry registry: image:  uengine-­‐registry-­‐server:latest ports: -­‐ 8761:8761 Registry Proxy Definition Process Front-­‐End 154
  • 169. Lab  time:  Building  docker images $ cd definition-service $ mvn package -B $ docker build –t uengine-five-definition . $ cd ../process-service $ mvn package -B $ docker build –t uengine-five-process . $ cd ../uengine-proxy-server $ mvn package -B $ docker build –t uengine-proxy-server . $ cd ../uengine-registry-server $ mvn package -B $ docker build –t uengine-registry-server . $ docker images REPOSITORY TAG IMAGE ID definition latest fc1db168d69d process latest 61bcb1e489f0 registry latest 12e06df7a34a proxy latest 53efac1deda3 155
  • 170. Lab  time:  Using  docker-­‐maven-­‐plugin $ cd definition-service $ mvn package docker:build –B $ cd ../process-service $ mvn package docker:build –B $ cd ../uengine-proxy-server $ mvn package docker:build –B $ cd ../uengine-registry-server $ mvn package docker:build –B $ docker images REPOSITORY TAG IMAGE ID uengine-five-definition latest fc1db168d69d uengine-five-process latest 61bcb1e489f0 uengine-registry-server latest 12e06df7a34a uengine-proxy-server latest 53efac1deda3 156
  • 171. Lab  time:  Starting  up  the  stack $  docker  stack  deploy  -­‐c  docker-­‐compose.yml  uengine Creating  network  uengine_webnet Creating  service  uengine_definition-­‐api Creating  service  uengine_process-­‐api Creating  service  uengine_registry Creating  service  uengine_proxy $  docker  service ls $  docker  stack  rm uengine 157
  • 172. Lab  time:    Scale  services  by  changing   Compose  file 158
  • 173. Agenda •성공적 서비스 구축의 필요한 기술 - 2시간 •퍼블릭 워크로드 분산 엔진 – 블루믹스 (클라우드 파운드리) 의 분석 - 2시간 • 앱 디플로이 • 자동 확장 설정 • 데브옵스 설정 통한 빌드 • 무정지 재배포 •프라이빗 PaaS 구축 하기 - 5시간 • 아키텍처 설명 • 구성요소별 설명 - 1시간 • 설치 방법 및 실습 – Docker, SWARM, Spring Cloud • 사용법 시나리오 •마이크로 서비스 아키텍처 기반 애플리케이션 샘플링 ㅡ BPM as a Service • 요구사항 설명 • 소프트웨어 구성 ㅡ 여러개의 서비스로 분리된 프로젝트 • api 이해 - hateoas 의 이해 • 프론트엔드 기술 • merge by front-end, Oauth 2.0 • 멀티테넌시 데이터의 연동 • 실습: 소스빌드, zuul server, eureka server 구성통한 로컬 개발 환경의 구성 • 실습: httpie 통한 api navigation, hybind 통한 navigation, vuejs 통한 화면 바인딩 •데브옵스 시나리오 - 2시간 • 애플리케이션 등록시 자동 개발기 배포 • 개발기에서 스테이징, 운영기의 무정지 재배포 • 새버전의 발생 ㅡ 테스트 자동화와 격리 배포 • 톨러런트 서비스 ㅡ 디도스 공격 자동 대처, 서킷 브레이크 159
  • 174. 자동화를 통해 릴리스 가능한 소프트웨어를 짧은 기간 반복하여 생산하는 것. 효과적인 소프트웨어를 더 자주 출시. 지속적 배포는 항상 배포만을 의미하는 것이 아니라,  코드가 언제나 릴리스 가능하도록 준비된 상태임을 보장하는 약속이자 철학. Devops
  • 175. 지속적인 통합,  지속적 통합,  연속적 통합. 지속적으로 품질 관리 를 적용하는 프로세스를 실행하는 것. 작은 단위의 작업,  빈번한 적용에 대한 고전적인 방법을 대체하는 방법 도구 예시: 젠킨스,  트라비스 CI  -­‐ continuous  integration 빌드,  테스트 작업
  • 176. 지속적인 딜리버리,  지속적 배포,  연속적 배포. 짧은 주기로 소프트웨어를 생산하는 소프트웨어 공학적 접근법. 상시,  신뢰성 있는 릴리즈 가능 배포 환경:  베어메탈,  쿠버네이츠,  DC/OS CD -­‐ continuous  delivery 배포 작업 (개발,  스테이징,프로덕션)
  • 177. Gitlab • GitLab Inc.는 GitLab 오픈 소스 프로젝트를 기반으로하는 회사.  GitLab은 이슈트래킹,  코드 리뷰,  CI  및 CD를 단일 UI로 통합하여 제공하는 제품.
  • 178. Gitlab CI/CD • CI  PIPELINE  :  CI  프로세스들의 워크플로우. • CD  PIPELINE  :  CD  프로세스들의 워크플로우.
  • 181. DevOps:  배포 파이프라인 • GitLab 기반 Pipeline • 코드 변경시 (git push) 자동 빌드 • 빌드 후 도커 이미지 동적 생성 • 생성 후 클러스터 디플로이 • 테스트 자동화 • 서비스 가용성 테스트 실패시 자동 롤백
  • 184. DevOps  시나리오 예시 -­‐ 역할 프로젝트 매니저 엔지니어테스터 의사 결정자
  • 185. DevOps  기능 개발 코드리뷰 이슈 트래킹 배포 자동화 프로젝트 관리 커밋 171
  • 186. “경쟁사 신규 기능을 우리도 추가 바람” Step1.  개발 의사결정
  • 187. “feature-A 브랜치를 생성 ” Step2.  브랜치 생성
  • 188. Step3.  브랜치 자동 배포 설정 “feature-A 브랜치가 커밋될때 자동 빌드 ”
  • 189. Step4.  이슈 생성 “feature-A 에 해당하는 이슈를 생성 ”
  • 190. Step5.  Rest  스펙 및 테스트 스크립트 생성 “Rest Api Expect 스크립트 작성 ”
  • 191. “이 신규기능 개발은 feature-A 브랜치에서 진행하세요 ” Step6.  개발자 작업 할당 “Rest Api 스펙 준수해주시고 테스트 스크립트 통과해야 합니다.”
  • 192. “git checkout feature-A ” Step7.  브랜치 작업 공간 이동 “git fetch ”
  • 194. Step9.  CI  확인 “소스 코드 빌드와 도커 빌드가 성공했다” “테스트 코드를 통과해 Dev 환경에 배포되었다”
  • 195. Step10.  Dev 접속 확인 “Dev 환경 서버에 접속해 최종 점검을 해보니 이상이 없으니 다음단계로 넘어가자”
  • 196. Step11.  Merge  Request  작성 “프로젝트 매니저님께 코드 리뷰 요청을 드리자”
  • 197. Step12.  Merge  Request  리뷰 “새로운 코드 리뷰 요청이 왔군”
  • 198. Step13.  Merge  Request  수락 “코드도 깔끔하고, 기능 요건도 만족시켰으니 master 브런치와 merge 를 시켜야겠다”
  • 199. Step14.  버전 태그 생성 “이 업데이트 내용은 v1.0 태그를 붙여서 버전 관리해야겠다.”
  • 200. Step15.  Tester  에게 알림 “”feature-A 개발이 완료되었습니다. 소스코드 태그는 1.0 입니다.” “스테이징 서버에서 가동해보겠습니다.”
  • 201. Step16-­‐1.  스테이징 서버 가동 “스테이징 환경을 선택”
  • 202. Step16-­‐2.  스테이징 서버 가동 “배포할 버전을 v1.0 선택 ”
  • 203. Step16-­‐3.  스테이징 서버 가동 “개발 환경에서 돌아가고 있는 환경과 동일한 런타임 구성”
  • 204. Step16-­‐4.  스테이징 서버 가동 “스테이징 서버가 가동되었으니 다음 단계로 넘어가야겠다. ”
  • 205. Step17.  스테이징 서버 테스트 “최대 1시간 ~ 10시간 테스트..이상없음. ” “이상이 없으면 프로덕션 환경으로 배포하도록 ”
  • 206. Step18-­‐3.  프로덕션 배포 “도커가 Blue,Green 두가지가 모두 떠있다 ”
  • 207. Step19.  롤백 요청 “신규 기능에 대한 시장 반응이 기대한만큼 나오질 않아, 개선 후 재배포 하기로 했습니다. ”
  • 208. Step20.  롤백 수행 “롤백을 하게 되면, 신규 버전과 이전 버전의 위치가 원래대로 바뀐다.”
  • 210. Zero  Down-­‐time  DeploymentZero  Down-­‐time   Deployment 196
  • 211. Strategy:    Blue/Green Now,  Green is  production 197
  • 212. Strategy:    Blue/Green Now,  Blue is  production 198
  • 213. Strategy:    Blue/Green 앗, 롤백 요청! Now,  Green is  production   again 199
  • 214. Strategy:    Blue/Green 롤백 가능 허용시간 경과 à Shutdown   Green  servers Deploy  NEW-­‐NEW  version  as  Green NEW-­‐NEW  VERSION 200
  • 215. Strategy:    Blue/Green Now,  Green(NEW-­‐NEW) is  production NEW-­‐NEW  VERSION 201
  • 217. Blue/Green Deployment  with  Zuul IRule AbstractLoadBalancerRule BlueGreenRoundRobinRule Zuul choose() Available  server implements extends 203
  • 218. Lab  time:    Blue/Green Deployment  with   Zuul cd  definition-­‐service java  -­‐jar  target/*.jar  -­‐-­‐DEPLOYMENT=BLUE  -­‐-­‐server.port=9091 java  -­‐jar  target/*.jar  -­‐-­‐DEPLOYMENT=GREEN  -­‐-­‐server.port=9092 데피니션 서비스를 블루, 그린 각각 하나씩 기동 204
  • 219. Lab  time:    Blue/Green 서버 기동 1.  EUREKA  서버에 접속, 2개의 인스턴스가 뜬 것을 확인 2. 9091 로 접속 (localhost:9091/home) è I  am  BLUE,  instanceId:bagseunpiluimbp:uengine-­‐eureka-­‐client:9091 3. 9092 로 접속 (localhost:9092/home) è I  am  GREEN,  instanceId:bagseunpiluimbp:uengine-­‐eureka-­‐client:9092 각자, BLUE  tag  와 GREEN  tag  로 뜬 것을 확인 205
  • 220. Lab  time:    Zuul Server  기동,  기본이 BLUE   에 연결 cd  .. cd  proxy java  -­‐jar  target/*.jar http  localhost:4000/definition/home è I  am  BLUE,  instanceId:bagseunpiluimbp:uengine-­‐eureka-­‐client:9091 206
  • 221. Lab  time:    Zuul 에 라우팅 변경 요청 Production   과 dev  가 다른 tag  들의 서비스로 라우팅 됨을 확인 http POST localhost:4000/service prod=GREEN dev=BLUE service=definition http  localhost:4000/definition/home è è I  am  GREEN,  instanceId:bagseunpiluimbp:uengine-­‐eureka-­‐client:9092 207
  • 222. Lab  time:    Zuul 에 라우팅 변경 (롤백) Production   과 dev  가 다른 tag  들의 서비스로 라우팅 됨을 확인 http POST localhost:4000/service prod=BLUE green=GREEN service=definition http  localhost:4000/definition/home è è I  am  GREEN,  instanceId:bagseunpiluimbp:uengine-­‐eureka-­‐client:9092 208
  • 224. Canary  Deployment:    Facebook 210
  • 225. 로그뷰 / 대시보드 • ELK 기반 로그수집기 • Kibana 기반 가용성 대시보드 • 다양한 요구사항별 대시보드 구성 211
  • 226. 가용성 분석 / 장애 추적 • (PINPOINT 기반) Dependency 서비스간 가용성 분석 • 장애추적 212
  • 229. 개발자 포탈 (DevOps  Portal) GitLab 서비스 컨테이너 (Docker  Cluster) Mesos +  Kubernetes 외부 서비스 풀 (Service  Broker) Spring  Cloud/Feign Fusion  Infra  Provisioner (Chef-­‐based) Any  IaaS  /  VM  /  Container  /  Bare-­‐metal Recipes (Chef/Dockerfile) 1 2 3 엔진부 -­‐ 디테일 215
  • 230. Instance  Group /  Cluster 이중화된 instance Process (i.e.  tomcat) application (i.e.  war)VM Instance 범례 216
  • 231. DevOps  Portal Docker  Cluster Developer  Portal  Server  (Tomcat) Application   Uploader / Remover App  Repo *.war Cloud  Master (DCOS/Kubernetes/SWA RM) App  Instance 2 5 6 App  Instance App  Instance Application  Provisioning Application   Monitor 1 4 Docker Registry 3 Operators Developers 217
  • 232. Docker  Cluster Router  (HA  Proxy /  Netflix  Zuul) Instance  1 Provisioning   Agent Docker 1 (Tomcat) App-­‐A.war Docker 2 (Tomcat) AppB.war Instance  2 Provisioning   Agent Docker 1 (Tomcat) App-­‐A.war Docker 2 (Tomcat) AppB.war Instance  3 Provisioning   Agent Docker 1 (Tomcat) App-­‐A.war MQ  /  Service  Registry  (Eureka) Fusion  Cloud  Controller  (Beluga  – DCOS  based) ProvisioningA gent 1 2 3 Application  Provisioning (2) GMDB
  • 233. Docker  Cluster Router  (HA  Proxy /  Netflix  Zuul) Instance  1 Provisioning   Agent Docker 1 (Tomcat) App-­‐A.war Docker 2 (Tomcat) AppB.war Instance  2 Provisioning   Agent Docker 1 (Tomcat) App-­‐A.war Docker 2 (Tomcat) AppB.war Instance  3 Provisioning   Agent Docker 1 (Tomcat) App-­‐A.war MQ  /  Service  Registry  (Eureka) Fusion  Cloud  Controller  (Beluga  – DCOS  based) 1 2 Docker 2 (Tomcat) AppB.war create Docker 2 Load  Full Scale  Out
  • 234. Docker  Cluster Router  (HA  Proxy /  Netflix  Zuul) Instance  1 Provisioning   Agent Docker 1 (Tomcat) App-­‐A.war Docker 2 (Tomcat) AppB.war Instance  2 Provisioning   Agent Docker 1 (Tomcat) App-­‐A.war Docker 2 (Tomcat) AppB.war Instance  3 Provisioning   Agent Docker 1 (Tomcat) App-­‐A.war MQ  /  Service  Registry  (Eureka) Fusion  Cloud  Controller  (Beluga  – DCOS  based) Docker 1 (Tomcat) App-­‐A.war Docker 2 (Tomcat) AppB.war (Tomcat) App-­‐A.war Docker 2 (Tomcat) AppB.war Provisioning   Agent Docker 1 (Tomcat) App-­‐A.war Docker 2 (Tomcat) AppB.war New  Instance Provisioning   Agent VM (Tomcat) App-­‐A.war VM  2 (Tomcat) AppB.war 4 5 create Anymore  Room! Min  #  of  instance Max  #  of  instance Instance  Pool  Scale  out
  • 235. Docker  Cluster Router  (HA  Proxy /  Netflix  Zuul) Instance  1 Provisioning   Agent Docker 1 (Tomcat) App-­‐A.war Docker 2 (Tomcat) AppB.war Instance  2 Provisioning   Agent Docker 1 (Tomcat) App-­‐A.war Docker 2 (Tomcat) AppB.war Instance  3 Provisioning   Agent Docker 1 (Tomcat) App-­‐A.war MQ  /  Service  Registry  (Eureka) Fusion  Cloud  Controller  (Beluga  – DCOS  based) 1 2 Docker 2 (Tomcat) AppB.war create Docker 2 Dead Operation  Time  Support   (App  Fail-­‐over)
  • 236. Docker  Cluster Router  (HA  Proxy /  Netflix  Zuul) Instance  1 Provisioning   Agent Docker 1 (Tomcat) App-­‐A.war Docker 2 (Tomcat) AppB.war Instance  2 Provisioning   Agent Docker 1 (Tomcat) App-­‐A.war Docker 2 (Tomcat) AppB.war Instance  3 Provisioning   Agent Docker 1 (Tomcat) App-­‐A.war MQ  /  Service  Registry  (Eureka) Fusion  Cloud  Controller  (Beluga  – DCOS  based) New  Instance Provisioning   Agent Docker 1 (Tomcat) App-­‐A.war Docker 2 (Tomcat) AppB.war Remove Min  #  of  instance Not  that   much   Request 1 2 Operation  Time  Support   (Instance  Pool  Scale  in)
  • 237. Docker  Cluster Router  (HA  Proxy  /  Netflix  Zuul) Service   Instance 오라클 DB 파일시스템 메모리캐시 ……. Service   Broker Service   Broker Service   Broker Provisioning   Agent Docker 1 (Tomcat) App-­‐A.war Docker 2 (Tomcat) AppB.war Provisioning   Agent Docker 1 (Tomcat) App-­‐A.war Docker 2 (Tomcat) AppB.war Provisioning   Agent Docker 1 (Tomcat) App-­‐A.war Docker 2 (Tomcat) AppB.war Provisioning   Agent Docker 1 (Tomcat) App-­‐A.war Docker 2 (Tomcat) AppB.war Queue  /  Service  Registry  (Eureka  /  Zookeeper) Beluga  Master 1 2 Operation  Time  Support   (Service  Brokerage) 223
  • 238. Metering  /  Monitoring Developer  Portal  Zone Elastic  Search  /  Kibana Application  Instance  Zone Router  (HA  Proxy Provisioning   Agent Docker 1 (Tomcat) App-­‐A.war Docker 2 (Tomcat) AppB.war Provisioning   Agent Docker 1 (Tomcat) App-­‐A.war Docker 2 (Tomcat) AppB.war Provisioning   Agent Docker 1 (Tomcat) App-­‐A.war Docker 2 (Tomcat) AppB.war Provisioning   Agent Docker 1 (Tomcat) App-­‐A.war Docker 2 (Tomcat) AppB.war MQ Cloud  Controller Application  Log Client (Web   Browser TID.service.com serviceA serviceA serviceB …. Aggregate  and  filter  out  Billing  Logs 224
  • 239. References  and  Resources • http://github.com/TheOpenCloudEngine • www.docker.com • www.uengine.org • www.metaworks4.io 225