Microservice Architecture
_개요
1.초보 개발자가 바라본 MSA
2.학습내용
3.레퍼런스 및 자료출처 공유
1.�초보�개발자가�바라본�MSA주의:�주관적인�내용이�많습니다
MSA가�뭘까?단일�응용�프로그램을�나누어�작은�서비스의�조합으로�구축하는�방법
Monolitic MSA: Micro Service Architecture
MSA가�뭘까?모놀리틱�vs�마이크로�서비스�아키텍처
쇼핑몰 웹
사용자 데이터
상품 데이터
배송 데이터
결제 데이터
사용자 상품
배송 결제
API
사용자 상품 배송 결제
사용자데이터
쇼핑몰 웹
상품데이터
배송데이터
결제데이터
첫느낌모르는것�투성
아키텍트의�영역이�아닌가?�나는�프로그래머인데
mesh-up�…JWT
Restful�API Gateway�server�…Spring-boot
docker
Proxy
SOA�…DevOps
DDD
아키텍처에�대해�알아야�하나?
http://www.javajigi.net/pages/viewpage.action?pageId=138346501http://blog.java2game.com/213
사용자 요구사항
프로그래머
아키텍처 혹은 or 시니어 프로그래머 or 다수의 프로그래머
“진정한아키텍트는태어나는것이아니라만들어지는것이다”
서버�개발은�여러가지�컴포넌트를�묶어서�하나의�거대한�시스템을�만드는�작업이다.��
전체�큰�시스템에�대한�도면,�즉�큰�그림인�아키텍처�설계가�매우�중요한�부분을�차지한다
MSA는�왜�생겨난걸까?�-�1누구나�아는�이야기.�소프트웨어가�복잡해지기�시작했다
사용자 눈높이 증가
사용자, 트래픽 증가
다양한 사용자 계층
복잡한 요구사항
속도와 유연함
사용자 중심
많은 프로그래머 필요
유지보수가 용이한 SW
높은 고가용성
변화 서비스 결과
MSA는�왜�생겨난걸까?�-�1누구나�아는�이야기.�소프트웨어가�복잡해지기�시작했다
사용자 눈높이 증가
사용자, 트래픽 증가
다양한 사용자 계층
복잡한 요구사항
속도와 유연함
사용자 중심
많은 프로그래머 필요
유지보수가 용이한 SW
높은 고가용성
변화 서비스 결과
개발규모에�따른�우리의�모습프로젝트�관점에서
…
몇명 안되는 단일 서비스
숫자는 많지만, 연관관계가 적은 서비스
숫자도 많고, 연관관계가 높은 서비스
ex�:�중소기업-스타트업�등의�소규모�프로젝트
ex�:�ㅇㅇ채팅,�ㅇㅇ비즈,�ㅇㅇ게임�등�분리가능한�프로젝트�
ex�:�Netflix,�트위터,�그루폰,�쿠X�등�단일�서비스�개발
…
개발규모에�따른�우리의�모습프로그래머�관점에서
…
커뮤니케이션 복잡도 빌드시간 개발영역의 의존도
낮음 빠름높지만수용가능
낮음 빠름 팀간 의존도는 낮음
매우 높음매우 느림매우 높음
…
자주�만나는�문제해결�전략Divide�and�Conquer
분할정복
멀티�프로세서
의존성�주입
테스트�주도개발
분할정복�알고리즘
객체지향�프로그래밍
For�Programmer업무�효율을�위해
…
커뮤니케이션 복잡도 빌드시간 개발영역의 의존도
낮음 빠름높지만수용가능
낮음 빠름 낮음
매우 높음매우 느림매우 높음
…
분리하면�좋겠다
마이크로서비스�아키텍처는�모놀리틱�아키텍처의�제약을�다루는�대안�패턴
변화를�예측할�수�없다
사용자 눈높이 증가
사용자, 트래픽 증가
다양한 사용자 계층
복잡한 요구사항
속도와 유연함
사용자 중심
많은 프로그래머 필요
유지보수가 용이한 SW
높은 고가용성
변화 서비스 결과
MSA는�왜�생겨난걸까?�-�2
애자일�(Agile)나선형�개발�방법모델
애자일�(Agile)cross-functional
한 팀은 피자 두 판을 먹을 수 있는
정도의 인원을 넘지 않는다 - Amazon
기획팀
UX팀
디자인팀
개발팀
DBA
인프라
사용자서비스
상품서비스
배송서비스
결제서비스
_결론컨웨이�법칙�(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
소프트웨어의 구조는 그 소프트웨어를 만드는 조직의 구조와 일치한다
2.�본격�MSA�스터디�내용공유:�살펴보기
Monolithic�Architecture
정보출처�:�nginx�블로그
Example
Microservice�architecture
정보출처�:�nginx�블로그
Example
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
Scale�Cube세�가지�관점의�규모확장성(Scalability)�모델
정보출처�:�Scalable�Web�Architecture,�Processes,�and�Organizations�for�the�Modern�Enterprise�-�The�Art�of�Scalability
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,
SOA?SOA�(Service�Oriented�Architecture)
- 분산형 아키텍처 구성을 위한 개념, 사상
- 1990년대 정의, 2000년대 유행
- 2010년대 OPEN API의 활성화와 동시에 경량화 되어 그 사상이 많이 회자되고 있다
- 애플리케이션의 기능을 비즈니스적인 의미를 가진 기능단위로 분리 (서비스)
- 표준화된 호출 인터페이스(API)를 통해 서비스를 조합하여 업무기능을 구현
- 중앙 집중적 거버넌스 (ESB)에 대한 많은 문제점*거버넌스란 시스템을 개발하는 조직의 구조나 프로세스
MSA의�역사2012년�ThoughWorks의�James�Lewis가�“Java,�The�Unix�way”라는�제목의�발표로�처음�언급�
2014년�3월�James�Lewis와�Martin�Fowler가�Microservices라는�타이틀로�패러다임을�정립한�기사를�발표
Google Trend Report 2015. 9
100
MSASOA와�비슷.�하지만�경량화�+�특이점�존재
독립적이고 단순한 서비스로 전체 서비스를 구성
독립적인 팀이 각 서비스의 개발과 운영을 담당
정보출처�:�정도현님의�MSA를�이용해�구현하는�고가용/고확장성�서비스
일반적인�구성형태필요에�따라�확장해서�사용한다
외부망
내부망API Gateway Server
Service Orchestration Server
Service Server 1 Service Server 2 Service Server 3 Service Server 4
…
…
온라인�쇼핑몰�예시
외부망
내부망API Gateway Server
…
…
주문하기
사용자 서비스 상품 서비스 결제 서비스 배송 서비스
Scale�Cube의�활용
정보출처�:�The�Art�of�Scalability�책
사용자 상품 배송 결제
사용자데이터
쇼핑몰 웹
상품데이터
배송데이터
결제데이터
사용자사용자 상품상품 배송배송 결제결제xScale
yScale
zScale
X + Y Scale
X + Z Scale
MSA의�특징
1. 서비스로서 컴포넌트화_
2. 비지니스 수행에 따른 구성_
3. 프로젝트가 아닌 제품_
팀의 경계에서 서비스 경계로
각 서비스가 독립적으로 배치 가능
배포가 목적이 아닌 DevOps
MSA의�특징
통신 방식 NO, 마이크로 서비스 YES
다중 기술 플랫폼과 다양한 선택사항
비지니스 현장을 위한 Polyglot Persistence
4. 똑똑한 Endpoint와 바보 Pipeline_
5. 분산화 거버넌스_
6. 분산화된 데이터 관리_
MSA의�특징
클라우드, 올바른 것을 쉽게 만드는 방식
서비스의 설정 상태 등을 확인할 수 있는 강력한 모니터링
출시 프로세스를 더욱 간단하고 신속하게
7. 인프라 자동화_
8. 장애 방지 설계_
9. 진화하는 설계_
분산�웹서비스�사용현황대용량�웹서비스에서는�이미�사용�중
Architecture Diagram
Netflix Twitter Hailo …
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
3.�레퍼런스�및�자료출처�공유
본�PPT�내용들은�전부�여기서�첨부됬어요
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
조대협님�자료
정도현님�자료
발표자료�: 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
안재우님�자료
적용사례�발표자료��:�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/
질문�토론
감사합니다
Top Related