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