microservice architecture

39
Microservice Architecture

Upload: -

Post on 10-Feb-2017

1.921 views

Category:

Engineering


6 download

TRANSCRIPT

Page 1: Microservice Architecture

Microservice Architecture

Page 2: Microservice Architecture

_개요

1.초보 개발자가 바라본 MSA

2.학습내용

3.레퍼런스 및 자료출처 공유

Page 3: Microservice Architecture

1.�초보�개발자가�바라본�MSA주의:�주관적인�내용이�많습니다

Page 4: Microservice Architecture

MSA가�뭘까?단일�응용�프로그램을�나누어�작은�서비스의�조합으로�구축하는�방법

Monolitic MSA: Micro Service Architecture

Page 5: Microservice Architecture

MSA가�뭘까?모놀리틱�vs�마이크로�서비스�아키텍처

쇼핑몰 웹

사용자 데이터

상품 데이터

배송 데이터

결제 데이터

사용자 상품

배송 결제

API

사용자 상품 배송 결제

사용자데이터

쇼핑몰 웹

상품데이터

배송데이터

결제데이터

Page 6: Microservice Architecture

첫느낌모르는것�투성

아키텍트의�영역이�아닌가?�나는�프로그래머인데

mesh-up�…JWT

Restful�API Gateway�server�…Spring-boot

docker

Proxy

SOA�…DevOps

DDD

Page 7: Microservice Architecture

아키텍처에�대해�알아야�하나?

http://www.javajigi.net/pages/viewpage.action?pageId=138346501http://blog.java2game.com/213

사용자 요구사항

프로그래머

아키텍처 혹은 or 시니어 프로그래머 or 다수의 프로그래머

“진정한아키텍트는태어나는것이아니라만들어지는것이다”

서버�개발은�여러가지�컴포넌트를�묶어서�하나의�거대한�시스템을�만드는�작업이다.��

전체�큰�시스템에�대한�도면,�즉�큰�그림인�아키텍처�설계가�매우�중요한�부분을�차지한다

Page 8: Microservice Architecture

MSA는�왜�생겨난걸까?�-�1누구나�아는�이야기.�소프트웨어가�복잡해지기�시작했다

사용자 눈높이 증가

사용자, 트래픽 증가

다양한 사용자 계층

복잡한 요구사항

속도와 유연함

사용자 중심

많은 프로그래머 필요

유지보수가 용이한 SW

높은 고가용성

변화 서비스 결과

Page 9: Microservice Architecture

MSA는�왜�생겨난걸까?�-�1누구나�아는�이야기.�소프트웨어가�복잡해지기�시작했다

사용자 눈높이 증가

사용자, 트래픽 증가

다양한 사용자 계층

복잡한 요구사항

속도와 유연함

사용자 중심

많은 프로그래머 필요

유지보수가 용이한 SW

높은 고가용성

변화 서비스 결과

Page 10: Microservice Architecture

개발규모에�따른�우리의�모습프로젝트�관점에서

몇명 안되는 단일 서비스

숫자는 많지만, 연관관계가 적은 서비스

숫자도 많고, 연관관계가 높은 서비스

ex�:�중소기업-스타트업�등의�소규모�프로젝트

ex�:�ㅇㅇ채팅,�ㅇㅇ비즈,�ㅇㅇ게임�등�분리가능한�프로젝트�

ex�:�Netflix,�트위터,�그루폰,�쿠X�등�단일�서비스�개발

Page 11: Microservice Architecture

개발규모에�따른�우리의�모습프로그래머�관점에서

커뮤니케이션 복잡도 빌드시간 개발영역의 의존도

낮음 빠름높지만수용가능

낮음 빠름 팀간 의존도는 낮음

매우 높음매우 느림매우 높음

Page 12: Microservice Architecture

자주�만나는�문제해결�전략Divide�and�Conquer

분할정복

멀티�프로세서

의존성�주입

테스트�주도개발

분할정복�알고리즘

객체지향�프로그래밍

Page 13: Microservice Architecture

For�Programmer업무�효율을�위해

커뮤니케이션 복잡도 빌드시간 개발영역의 의존도

낮음 빠름높지만수용가능

낮음 빠름 낮음

매우 높음매우 느림매우 높음

분리하면�좋겠다

마이크로서비스�아키텍처는�모놀리틱�아키텍처의�제약을�다루는�대안�패턴

Page 14: Microservice Architecture

변화를�예측할�수�없다

사용자 눈높이 증가

사용자, 트래픽 증가

다양한 사용자 계층

복잡한 요구사항

속도와 유연함

사용자 중심

많은 프로그래머 필요

유지보수가 용이한 SW

높은 고가용성

변화 서비스 결과

MSA는�왜�생겨난걸까?�-�2

Page 15: Microservice Architecture

애자일�(Agile)나선형�개발�방법모델

Page 16: Microservice Architecture

애자일�(Agile)cross-functional

한 팀은 피자 두 판을 먹을 수 있는

정도의 인원을 넘지 않는다 - Amazon

기획팀

UX팀

디자인팀

개발팀

DBA

인프라

사용자서비스

상품서비스

배송서비스

결제서비스

Page 17: Microservice Architecture

_결론컨웨이�법칙�(Conway�Law)�-�Conway,�Melvin�E.�(April�1968)

organizations which design systems ... are constrained to produce designs which are copies of the communication structures of these organizations

소프트웨어의 구조는 그 소프트웨어를 만드는 조직의 구조와 일치한다

Page 18: Microservice Architecture

2.�본격�MSA�스터디�내용공유:�살펴보기

Page 19: Microservice Architecture

Monolithic�Architecture

정보출처�:�nginx�블로그

Example

Page 20: Microservice Architecture

Microservice�architecture

정보출처�:�nginx�블로그

Example

Page 21: Microservice Architecture

MSA의�배경

Infrastructure Automation

On-demand VirtualizationContinuous DeliveryDomain Driven Design

Polyglot Programming

Reusability Self-Government TeamAgile Development

Elastic, Scalable, Resilience

정보출처�:�http://www.slideshare.net/saltynut/building-micro-service-architecture

Page 22: Microservice Architecture

Scale�Cube세�가지�관점의�규모확장성(Scalability)�모델

정보출처�:�Scalable�Web�Architecture,�Processes,�and�Organizations�for�the�Modern�Enterprise�-�The�Art�of�Scalability

Page 23: Microservice Architecture

MicroService?

and Focused on Doing One Thing Well

Autonomous

All communication between the services themselves are via network calls (API)

https://www.safaribooksonline.com/library/view/building-microservices/9781491950340/ch01.html

1. 작고

2. 한가지 일을 잘하는데 초점을 맞추고

3. 자율적이며

4. 네트워크 API를 통해 상호 소통

Small,

Page 24: Microservice Architecture

SOA?SOA�(Service�Oriented�Architecture)

- 분산형 아키텍처 구성을 위한 개념, 사상

- 1990년대 정의, 2000년대 유행

- 2010년대 OPEN API의 활성화와 동시에 경량화 되어 그 사상이 많이 회자되고 있다

- 애플리케이션의 기능을 비즈니스적인 의미를 가진 기능단위로 분리 (서비스)

- 표준화된 호출 인터페이스(API)를 통해 서비스를 조합하여 업무기능을 구현

- 중앙 집중적 거버넌스 (ESB)에 대한 많은 문제점*거버넌스란 시스템을 개발하는 조직의 구조나 프로세스

Page 25: Microservice Architecture

MSA의�역사2012년�ThoughWorks의�James�Lewis가�“Java,�The�Unix�way”라는�제목의�발표로�처음�언급�

2014년�3월�James�Lewis와�Martin�Fowler가�Microservices라는�타이틀로�패러다임을�정립한�기사를�발표

Google Trend Report 2015. 9

100

Page 26: Microservice Architecture

MSASOA와�비슷.�하지만�경량화�+�특이점�존재

독립적이고 단순한 서비스로 전체 서비스를 구성

독립적인 팀이 각 서비스의 개발과 운영을 담당

정보출처�:�정도현님의�MSA를�이용해�구현하는�고가용/고확장성�서비스

Page 27: Microservice Architecture

일반적인�구성형태필요에�따라�확장해서�사용한다

외부망

내부망API Gateway Server

Service Orchestration Server

Service Server 1 Service Server 2 Service Server 3 Service Server 4

Page 28: Microservice Architecture

온라인�쇼핑몰�예시

외부망

내부망API Gateway Server

주문하기

사용자 서비스 상품 서비스 결제 서비스 배송 서비스

Page 29: Microservice Architecture

Scale�Cube의�활용

정보출처�:�The�Art�of�Scalability�책

사용자 상품 배송 결제

사용자데이터

쇼핑몰 웹

상품데이터

배송데이터

결제데이터

사용자사용자 상품상품 배송배송 결제결제xScale

yScale

zScale

X + Y Scale

X + Z Scale

Page 30: Microservice Architecture

MSA의�특징

1. 서비스로서 컴포넌트화_

2. 비지니스 수행에 따른 구성_

3. 프로젝트가 아닌 제품_

팀의 경계에서 서비스 경계로

각 서비스가 독립적으로 배치 가능

배포가 목적이 아닌 DevOps

Page 31: Microservice Architecture

MSA의�특징

통신 방식 NO, 마이크로 서비스 YES

다중 기술 플랫폼과 다양한 선택사항

비지니스 현장을 위한 Polyglot Persistence

4. 똑똑한 Endpoint와 바보 Pipeline_

5. 분산화 거버넌스_

6. 분산화된 데이터 관리_

Page 32: Microservice Architecture

MSA의�특징

클라우드, 올바른 것을 쉽게 만드는 방식

서비스의 설정 상태 등을 확인할 수 있는 강력한 모니터링

출시 프로세스를 더욱 간단하고 신속하게

7. 인프라 자동화_

8. 장애 방지 설계_

9. 진화하는 설계_

Page 33: Microservice Architecture

분산�웹서비스�사용현황대용량�웹서비스에서는�이미�사용�중

Architecture Diagram

Netflix Twitter Hailo …

Page 34: Microservice Architecture

MSA,�꼭�사용해야�하는가?microservices�are�no�free�lunch�or�silver�bullet

아키텍처 결정의 실제 결과는 구축 후 몇 년이 지난 후에 입증되는 것

대규모 엔터프라이즈 응용 프로그램

팀의 성숙도

?

Gartner Hype Cycle

http://www.gartner.com/technology/research/methodologies/hype-cycle.jsp

Gatner Hype Cycle

Page 35: Microservice Architecture

3.�레퍼런스�및�자료출처�공유

본�PPT�내용들은�전부�여기서�첨부됬어요

Page 36: Microservice Architecture

2014년�3월�발표한��James�Lewis,�Martin�Fowler의�Microservices�기사

http://martinfowler.com/articles/microservices.html원글�:�

공식�한글�번역본��:� http://channy.creation.net/articles/microservices-by-james_lewes-martin_fowler#.VhPvGLxtNGN

2015년�2월�출간된�Oreilly의�“Building�Microservice”

https://www.safaribooksonline.com/library/view/building-microservices/9781491950340/ch01.html

preview��:�

Chris�Richardson의�다수의�참조글

http://microservices.io

2015년�QCon�Newyork의�Microservice에�대한�발표자료

https://qconnewyork.com/system/files/keynotes-slides/QCon%20Abstraction%20and%20Federation%20-%20From%20Micro%20Chips%20to%20Microservices.pdf

Page 37: Microservice Architecture

조대협님�자료

정도현님�자료

발표자료�: http://www.slideshare.net/andrewdohyunjung/msa-43702981

도서�:�

블로그�글��:�http://bcho.tistory.com/948�외�다수

http://search.naver.com/search.naver?where=nexearch&query=대용량+아키텍처와+성능+튜닝&sm=top_sug.pre&fbm=0&acr=1&acq=대용량+아키텍&qdt=0&ie=utf8

발표자료��:�http://www.slideshare.net/Byungwook/micro-service-architecture-52233912

발표영상�: https://youtu.be/yaKWoACq-8A

Page 38: Microservice Architecture

안재우님�자료

적용사례�발표자료��:�http://www.slideshare.net/saltynut/building-micro-service-architecture

MSA에�대한�한글자료

http://wiki-camp.appspot.com/%5B번역%5D_마이크로서비스_아키텍처_%28Microservices_Architecture%29

http://wiki-camp.appspot.com/%5B번역%5D_스케일_큐브(Scale_Cube)

http://channy.creation.net/blog/1051#.VgiGIrRtOgS

http://wiki-camp.appspot.com/MicroService_시스템을_잘_만들기_위해_고민하고_싶은_문제들

MSA에�대한�영어자료

http://alistair.cockburn.us/Hexagonal+architecture

https://www.nginx.com/blog/introduction-to-microservices/

https://blog.docker.com/2014/12/dockercon-europe-keynote-state-of-the-art-in-microservices-by-adrian-cockcroft-battery-ventures/

Page 39: Microservice Architecture

질문�토론

감사합니다