jbug 발표 msa탐방기_공유자료
TRANSCRIPT
Micro Service Architecture 탐방기이용희
https://www.facebook.com/yonghee.lee.90
MSA 의 9가지 특징
• Componentization via Services
• Organized around Business Capabilities
• Products not Projects
• Smart endpoints and dumb pipes
• Decentralized Governance
• Decentralized Data Management
• Infrastructure Automation
• Design for failure
• Evolutionary Design
MSA 의 9가지 특징
• Componentization via Services
• Organized around Business Capabilities
• Products not Projects
• Smart endpoints and dumb pipes
• Decentralized Governance
• Decentralized Data Management
• Infrastructure Automation
• Design for failure
• Evolutionary Design
대형시스템을개발할때기술적계층에따라조직을구성하는
것에비해,
MSA에서의접근방식은“비즈니스수행능력”에따라구분된
서비스단위로조직을구성함
Any organization that designs a system (defined broadly) will produce a design whose structure is a copy
of the organization's communication structure.
-- Melvyn Conway, 1967
MSA 의 9가지 특징
• Componentization via Services
• Organized around Business Capabilities
• Products not Projects
• Smart endpoints and dumb pipes
• Decentralized Governance
• Decentralized Data Management
• Infrastructure Automation
• Design for failure
• Evolutionary Design
단일플랫폼에의한표준화를통한중앙통제모델이아닌,
각서비스팀에서독자적인거버넌스를수행하도록함
Any JVM language can be supported so each team can use the
language best suited to them.
The Groovy JVM language was chosen as our first supported
language. The existence of first-class functions (closures),
list/dictionary syntax, performance and debugability were all aspects
of our decision. Moreover, Groovy provides syntax comfortable to a
wide range of developers, which helps to reduce the learning curve for
the first language on the platform.
MSA 의 9가지 특징
• Componentization via Services
• Organized around Business Capabilities
• Products not Projects
• Smart endpoints and dumb pipes
• Decentralized Governance
• Decentralized Data Management
• Infrastructure Automation
• Design for failure
• Evolutionary Design
각서비스영역에서자신이제공하는서비스의 context에
따라도메인영역을분리(논리적분리)하고,
데이터의성격에맞는적정한 DB를선택함(물리적분리)
서비스간트랜잭션처리
• 서비스 context 의 영역을 아주 잘 정의 해서 사용한다
• XA를 사용한다
• compensation transaction 을 사용
API 를조합하는주체는어디?
MSA 는서비스간의협조를중요하게생각합니다.
M.F 는여러개의간단한기능(function)이모여하나의서비스를구성한다고여러개의기능을모으는녀석을따로모아추상화를할수있다면밖에서보이는그림은아주깔끔한모습이될수있습니다.
성능
SPOF
복잡성증가
https://github.com/Netflix/eureka/wiki/Eureka-at-a-glance
API 의버전관리, 로드밸런싱, 서비스 repository에대한고민은Netflix의 Eureka 가좋은해답이될수있습니다.
MSA 의 9가지 특징
• Componentization via Services
• Organized around Business Capabilities
• Products not Projects
• Smart endpoints and dumb pipes
• Decentralized Governance
• Decentralized Data Management
• Infrastructure Automation
• Design for failure
• Evolutionary Design
장애없는시스템은없다!
참고한자료
• http://martinfowler.com/articles/microservices.html
• http://techblog.netflix.com/
• https://github.com/Netflix/Hystrix/wiki
• https://github.com/Netflix/eureka/wiki/Eureka-at-a-glance
• http://deanwampler.github.io/
• http://bcho.tistory.com/
• Domain Driven Design