마이크로 서비스 아키텍쳐 소개 및 구현 방법

30
Cloud Studying Micro Service Architecture 김김김 김김김 김김김 김김김 김김김 김김 이이이 SWMaestro 7 김 김김김김김김김

Upload: young-soo-lee

Post on 13-Apr-2017

143 views

Category:

Technology


1 download

TRANSCRIPT

Page 1: 마이크로 서비스 아키텍쳐 소개 및 구현 방법

Cloud StudyingMicro Service Architecture

김도형 류영수 유효균 이영수 장경주발표 이영수

SWMaestro 7 기 미래기술스터딩

Page 2: 마이크로 서비스 아키텍쳐 소개 및 구현 방법

Micro Service Architecture

Page 3: 마이크로 서비스 아키텍쳐 소개 및 구현 방법

MSA 란• 서비스를 기능별로 작게 쪼개는 서버 아키텍쳐의 디자인 패턴• 하나의 서비스는 한가지 일에 초점을 맞춤• API 로 다른 서비스와 연계

Page 4: 마이크로 서비스 아키텍쳐 소개 및 구현 방법

장단점• 빠른 복구• Scaling

• 서비스 확장 용이• 대규모 장애 확률 감소• 협업 용이

• 복잡함• 트렌젝션 관리 어려움• 다중 테스트• 소규모 장애 확률 증가

Page 5: 마이크로 서비스 아키텍쳐 소개 및 구현 방법

MSA 의 구현 방법을 알아보자

목표

Page 6: 마이크로 서비스 아키텍쳐 소개 및 구현 방법

1. 기능별로 서비스 어플리케이션 구분2. 서비스 이미지 개발3. 클라이언트에서 필요한 서비스 선택4. 인스턴스 선택 / 관리

구현 과정

Page 7: 마이크로 서비스 아키텍쳐 소개 및 구현 방법

1. 기능별로 서비스 어플리케이션 구분2. 서비스 이미지 개발3. 클라이언트에서 필요한 서비스 선택4. 인스턴스 선택 / 관리

구현 과정

Page 8: 마이크로 서비스 아키텍쳐 소개 및 구현 방법
Page 9: 마이크로 서비스 아키텍쳐 소개 및 구현 방법

1. 기능별로 서비스 어플리케이션 구분2. 서비스 이미지 개발3. 클라이언트에서 필요한 서비스 선택4. 인스턴스 선택 / 관리

구현 과정

Page 10: 마이크로 서비스 아키텍쳐 소개 및 구현 방법

• 서비스 애플리케이션은 수십 , 수백여개의 서비스들로 구성• 각 서비스는 적절한 CPU, memory, I/O 리소스를 제공받아야 하고 배포는 빠르고 효율적이어야 함

배포 방법1. 서버마다 전체 서비스를 띄움2. 서비스를 VM 위에 띄움3. 서비스를 Container 위에 띄움

서비스 이미지 개발

Page 11: 마이크로 서비스 아키텍쳐 소개 및 구현 방법

Deploy service per Server

장점• 배포속도 , 서비스 시작속도 빠름

단점• CPU, 메모리를 한 서비스 인스턴스가 모두 사용하는 문제

UserService

TripService

PaymentService

Server 1192.168.0.1

UserService

TripService

PaymentService

Server 2192.168.0.2

Page 12: 마이크로 서비스 아키텍쳐 소개 및 구현 방법

Deploy service in VM

장점• 서비스별로 고정된 자원을 사용• 클라우드 인프라 기능 활용 가능

단점• 자원 사용 비 효율적 (VM 자체의 자원 낭비 )• VM 관리의 어려움

Service 1

VM

Service 1

VM

Service 1

VM

Service 1

VM image

Page 13: 마이크로 서비스 아키텍쳐 소개 및 구현 방법

Deploy service in ContainerDocker 등의 Container 기술을 활용하여 서비스를 개발

Service 1

Container

Service 1

image

장점• VM 의 장점을 거의 포함• VM 보다 가벼움

단점• 인프라는 VM 보다 비 성숙함

Service 1

Container

Service 1

Container

Page 14: 마이크로 서비스 아키텍쳐 소개 및 구현 방법

1. 기능별로 서비스 어플리케이션 구분2. 서비스 이미지 개발3. 클라이언트에서 필요한 서비스 선택4. 인스턴스 선택 / 관리

구현 과정

Page 15: 마이크로 서비스 아키텍쳐 소개 및 구현 방법

클라이언트에서 각 서비스에 요청을 따로 보내야 하는가 ?

많은 요청은 비 효율적이며 클라이언트 코드가 복잡해짐

Page 16: 마이크로 서비스 아키텍쳐 소개 및 구현 방법

API Gateway

Inter-process Communi-

cation

Page 17: 마이크로 서비스 아키텍쳐 소개 및 구현 방법

API Gateway• 내부 시스템 아키텍쳐를 캡슐화해서

클라이언트에 적합한 API 를 제공• 비동기 , 논블로킹 I/O 를 지원하는 플랫폼으로 개발

• Netty, Vertx, Node.js, Nginx, etc..

• 통신 규격 다양화 ( 내 / 외부용 효율적인 방법 선택 )

• Auto-scaling, ip-address 변경에 대응• 서비스 오류 핸들링 ex) Netflix Hystrix

Page 18: 마이크로 서비스 아키텍쳐 소개 및 구현 방법

Inter-process Communica-tion

• 서비스 - 클라이언트 , 서비스 - 서비스간 통신 구현• 비동기적 (message-based) / 동기적 (request) 구현방법 선택• HTTP REST / Thrift 프로토콜• 서비스 오류 핸들링

Page 19: 마이크로 서비스 아키텍쳐 소개 및 구현 방법

1. 기능별로 서비스 어플리케이션 구분2. 서비스 이미지 개발3. 클라이언트에서 필요한 서비스 선택4. 인스턴스 선택 / 관리

구현 과정

Page 20: 마이크로 서비스 아키텍쳐 소개 및 구현 방법

인스턴스들은 Auto-Scaling, 장애 등으로 인해 IP 주소 등이 변화

Service Discovery

하나의 서비스는 가상화되어 여러 인스턴스로 실행됨

어떤 인스턴스에 접속해야 하는가 ?

Page 21: 마이크로 서비스 아키텍쳐 소개 및 구현 방법

Discovery Pattern

Service 1Instance A

Service 1Instance B

Service 1Instance C

10.4.3.1:6001

10.4.3.7:6002

10.4.3.9:6003

Service Registry

heartbeat

각 서비스는 Service Registry 에 자신의 상태를 전달Service Registry 는 가용한 인스턴스의 목록을 갖고있음

heartbeat

heartbeat

Page 22: 마이크로 서비스 아키텍쳐 소개 및 구현 방법

Discovery Pattern

Client-sideDiscovery Pattern

Server-sideDiscovery Pattern

Page 23: 마이크로 서비스 아키텍쳐 소개 및 구현 방법

Client-side Discovery Pat-tern

Client

1

2

Page 24: 마이크로 서비스 아키텍쳐 소개 및 구현 방법

Client-side Discovery Pat-tern

• 클라이언트에서 Service Registry 를 통해가용한 인스턴스 목록을 받아옴• 클라이언트에서 가용한 인스턴스에 직접 연결

장점• 지능적인 클라이언트 개발 가능단점• 클라이언트 코드 복잡 , 로직 복잡

Page 25: 마이크로 서비스 아키텍쳐 소개 및 구현 방법

Server-side Discovery Pat-tern

Client

Page 26: 마이크로 서비스 아키텍쳐 소개 및 구현 방법

Server-side Discovery Pat-tern

• Load Balancer 가 존재• 클라이언트에서 요청을 보내면 Load Balancer 가 Service Registry와 연동하여 요청을 적절한 서비스 인스턴스로 전달장점• Discovery 의 세부적인 부분이 클라이언트로부터 분리됨단점• 서버측 시스템 (Load Balancer) 이 안정적이어야 함ex) AWS Elastic Load Balancer

Page 27: 마이크로 서비스 아키텍쳐 소개 및 구현 방법

추가 : Third-party Registration Pattern

Instance A

Instance B

Instance C

Service Reg-istry

heartbeat

heartbeat

heartbeat

Service Reg-istry

Instance A RegistrarHealth check

Register

(insta

nce A)

unRegister

()

Page 28: 마이크로 서비스 아키텍쳐 소개 및 구현 방법

1. 기능별로 서비스 어플리케이션 구분2. 서비스 이미지 개발3. 클라이언트에서 필요한 서비스 선택4. 인스턴스 선택 / 관리

구현 과정

Page 29: 마이크로 서비스 아키텍쳐 소개 및 구현 방법

• Nginx consul, Netflix Eureka 등의 오픈소스 활용• AWS Lambda API 등 이용

활용할 수 있는 것