micro service architecture 탐방기

59
Micro Service Architecture 탐방기 이용희 https:// www.facebook.com /yonghee.lee.90

Upload: jbugkorea

Post on 16-Jul-2015

2.163 views

Category:

Engineering


2 download

TRANSCRIPT

Micro Service Architecture 탐방기 이용희����������� ������������������  ����������� ������������������  

https://www.facebook.com/yonghee.lee.90����������� ������������������  

Micro Service Architecture 적용하고����������� ������������������  고생해����������� ������������������  보니����������� ������������������  이런����������� ������������������  것들이����������� ������������������  중요하더라����������� ������������������  

Agenda

MSA����������� ������������������  

왜?����������� ������������������  MSA에����������� ������������������  관심을����������� ������������������  가지시나요?����������� ������������������  

Micro����������� ������������������  Services����������� ������������������  Architecture����������� ������������������  Google����������� ������������������  Trend����������� ������������������  

혹시����������� ������������������  뒤쳐질까����������� ������������������  두려워서?����������� ������������������  

고민하던����������� ������������������  문제를����������� ������������������  해결할����������� ������������������  수����������� ������������������  있지����������� ������������������  않을까?����������� ������������������  

Micro Service Architecture?

빨리����������� ������������������  개발하고,����������� ������������������  빨리����������� ������������������  적용하여����������� ������������������  Time����������� ������������������  to����������� ������������������  Market����������� ������������������  을����������� ������������������  달성하게����������� ������������������  할����������� ������������������  수����������� ������������������  있도록����������� ������������������  소프트웨어의����������� ������������������  구조를����������� ������������������  단순하게����������� ������������������  하는����������� ������������������  방법����������� ������������������  중����������� ������������������  하나����������� ������������������  

Micro Service Architecture?

작은����������� ������������������  기능����������� ������������������  요소����������� ������������������  들을����������� ������������������  ����������� ������������������  서비스����������� ������������������  단위로����������� ������������������  묶어서����������� ������������������  배포����������� ������������������  

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����������� ������������������  

����������� ������������������  

분업화를����������� ������������������  통한����������� ������������������  전문화����������� ������������������  

재사용을����������� ������������������  통한����������� ������������������  생산성����������� ������������������  향상����������� ������������������  

기업의����������� ������������������  본원적인����������� ������������������  ����������� ������������������  2대����������� ������������������  활동����������� ������������������  원칙!����������� ������������������  

비즈니스����������� ������������������  환경����������� ������������������  변화에����������� ������������������  능동적으로����������� ������������������  대응하기����������� ������������������  위해!����������� ������������������  

진짜����������� ������������������  귀한����������� ������������������  몸����������� ������������������  

Oracle����������� ������������������  DBA님들����������� ������������������  

각����������� ������������������  서비스����������� ������������������  팀에����������� ������������������  ����������� ������������������  기술����������� ������������������  구조를����������� ������������������  선택하고����������� ������������������  결정할����������� ������������������  수����������� ������������������  있는����������� ������������������  ����������� ������������������  

권한이����������� ������������������  있어야����������� ������������������  함����������� ������������������  

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����������� ������������������  

단일����������� ������������������  플랫폼에����������� ������������������  의한����������� ������������������  표준화를����������� ������������������  통한����������� ������������������  중앙통제모델이����������� ������������������  아닌,����������� ������������������  각����������� ������������������  서비스팀에서����������� ������������������  독자적인����������� ������������������  거버넌스를����������� ������������������  수행하도록����������� ������������������  함����������� ������������������  

단일����������� ������������������  플랫폼에����������� ������������������  의한����������� ������������������  표준화를����������� ������������������  통해����������� ������������������  ����������� ������������������  전문성을����������� ������������������  확보하고����������� ������������������  

“사람"에의����������� ������������������  의존성을����������� ������������������  제거����������� ������������������  

Monolithic Architecture 의 장점

모니터링이����������� ������������������  쉽다����������� ������������������  

SPOF����������� ������������������  

Polyglot����������� ������������������  or����������� ������������������  Multilingual����������� ������������������  

각����������� ������������������  서비스파트에서����������� ������������������  제공하는����������� ������������������  서비스와����������� ������������������  ����������� ������������������  제일����������� ������������������  잘����������� ������������������  어울리는����������� ������������������  언어를����������� ������������������  선택해서����������� ������������������  사용����������� ������������������  

다른����������� ������������������  언어도����������� ������������������  자바만큼����������� ������������������  잘����������� ������������������  할����������� ������������������  수����������� ������������������  있는����������� ������������������  사람����������� ������������������  손!����������� ������������������  ����������� ������������������  

SI����������� ������������������  환경에서����������� ������������������  고객님으로����������� ������������������  부터����������� ������������������  이����������� ������������������  모든����������� ������������������  권한을����������� ������������������  부여����������� ������������������  받을����������� ������������������  수����������� ������������������  있을까?����������� ������������������  

http://deanwampler.github.io/polyglotprogramming/papers/PolyglotPolyParadigm.pdf����������� ������������������  

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를����������� ������������������  선택함(물리적����������� ������������������  분리)����������� ������������������  

Domain����������� ������������������  Driven����������� ������������������  Design����������� ������������������  ­–����������� ������������������  Bounded����������� ������������������  Context����������� ������������������  

회원은����������� ������������������  주소를����������� ������������������  여러����������� ������������������  개����������� ������������������  가질����������� ������������������  수����������� ������������������  있고,����������� ������������������  ����������� ������������������  주소가����������� ������������������  같은����������� ������������������  다른����������� ������������������  회원이����������� ������������������  존재할����������� ������������������  수����������� ������������������  있으므로����������� ������������������  ����������� ������������������  주소는����������� ������������������  회원의����������� ������������������  부가정보다.(도메인����������� ������������������  핵심����������� ������������������  정보가����������� ������������������  아님)����������� ������������������  

회원 주소 배송

하나의����������� ������������������  배송����������� ������������������  정보는����������� ������������������  반드시����������� ������������������  하나의����������� ������������������  주소를����������� ������������������  가져야����������� ������������������  함.����������� ������������������  배송����������� ������������������  한건에����������� ������������������  여러����������� ������������������  개의����������� ������������������  주소를����������� ������������������  가질����������� ������������������  수����������� ������������������  없음.����������� ������������������  배송은����������� ������������������  주소로����������� ������������������  식별이����������� ������������������  가능한����������� ������������������  도메인����������� ������������������  핵심정보����������� ������������������  

회원 주소 배송

회원의����������� ������������������  주소가����������� ������������������  변경된다면����������� ������������������  회원����������� ������������������  정보는����������� ������������������  즉시����������� ������������������  반영(FK)되어야����������� ������������������  하지만����������� ������������������  과거����������� ������������������  배송����������� ������������������  이력����������� ������������������  정보가����������� ������������������  변경이����������� ������������������  되면����������� ������������������  안됨����������� ������������������  

상품����������� ������������������   주문배송����������� ������������������  

-����������� ������������������  재고����������� ������������������   -����������� ������������������  결제����������� ������������������  

결제가����������� ������������������  실패하면����������� ������������������  재고가����������� ������������������  하나����������� ������������������  줄어����������� ������������������  들었던����������� ������������������  transaction을����������� ������������������  rollback����������� ������������������  해야����������� ������������������  하는데…⋯����������� ������������������  

서비스간 트랜잭션 처리 •  서비스 context����������� ������������������  의 영역을 아주 잘 정의 해서 사용한다����������� ������������������  

•  XA를 사용한다����������� ������������������  

•  compensation����������� ������������������  transaction����������� ������������������  을 사용한다

문을����������� ������������������  열고,����������� ������������������  코끼리를����������� ������������������  넣고,����������� ������������������  문을����������� ������������������  닫는다����������� ������������������  

코끼리����������� ������������������  보다����������� ������������������  큰����������� ������������������  냉장고를����������� ������������������  만들어서����������� ������������������  코끼리를����������� ������������������  넣는다.����������� ������������������  

코끼리를����������� ������������������  미분해서����������� ������������������  냉장고에����������� ������������������  넣고,����������� ������������������  냉장고����������� ������������������  속에서����������� ������������������  적분한다.����������� ������������������  

실패를����������� ������������������  통해서����������� ������������������  경험을����������� ������������������  축적해����������� ������������������  나가야����������� ������������������  하는데,����������� ������������������  어느����������� ������������������  정도의����������� ������������������  사소한����������� ������������������  장애를����������� ������������������  감수하더라도,����������� ������������������  ����������� ������������������  지속적으로����������� ������������������  시스템을����������� ������������������  개선해����������� ������������������  나갈����������� ������������������  수����������� ������������������  있는����������� ������������������  ����������� ������������������  권한을����������� ������������������  보장����������� ������������������  받는����������� ������������������  것이����������� ������������������  사실상����������� ������������������  불가능����������� ������������������  

서비스간 트랜잭션 처리 •  서비스 context����������� ������������������  의 영역을 아주 잘 정의 해서 사용한다����������� ������������������  

•  XA를 사용한다����������� ������������������  

•  compensation����������� ������������������  transaction����������� ������������������  을 사용

API����������� ������������������  를����������� ������������������  조합하는����������� ������������������  주체는����������� ������������������  어디?����������� ������������������  

MSA����������� ������������������  는����������� ������������������  서비스����������� ������������������  간의����������� ������������������  협조를����������� ������������������  중요하게����������� ������������������  생각합니다.����������� ������������������  M.F����������� ������������������  ����������� ������������������  는����������� ������������������  여러����������� ������������������  개의����������� ������������������  간단한����������� ������������������  기능(function)이����������� ������������������  모여����������� ������������������  하나의����������� ������������������  서비스를����������� ������������������  구성한다고����������� ������������������  얘기합니다.����������� ������������������  여러����������� ������������������  개의����������� ������������������  기능을����������� ������������������  모으는����������� ������������������  녀석을����������� ������������������  따로����������� ������������������  모아����������� ������������������  추상화를����������� ������������������  할����������� ������������������  수����������� ������������������  있다면����������� ������������������  밖에서����������� ������������������  보이는����������� ������������������  그림은����������� ������������������  아주����������� ������������������  깔끔한����������� ������������������  모습이����������� ������������������  될����������� ������������������  수����������� ������������������  있습니다.����������� ������������������  

성능����������� ������������������  

SPOF����������� ������������������  

복잡성����������� ������������������  증가����������� ������������������  

복잡함을����������� ������������������  해결하기����������� ������������������  위해����������� ������������������  시작했는데,����������� ������������������  왠지����������� ������������������  더����������� ������������������  복잡해����������� ������������������  지는����������� ������������������  것����������� ������������������  같다!!����������� ������������������  

Trade off

모니터링����������� ������������������  

Governing����������� ������������������  추상화����������� ������������������  

성능����������� ������������������  복잡도����������� ������������������  증가����������� ������������������  

SPOF����������� ������������������  

Scale����������� ������������������  코드����������� ������������������  중복����������� ������������������  방지����������� ������������������  

Fault����������� ������������������  Tolerance����������� ������������������  Layer����������� ������������������  

https://github.com/Net1lix/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://techblog.netflix.com/2012/02/fault-tolerance-in-high-volume.html

Email����������� ������������������  ����������� ������������������  Notifiyer����������� ������������������  

SMS����������� ������������������  ����������� ������������������  Notifiyer����������� ������������������  

참고한 자료 •  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

질문은����������� ������������������  받지����������� ������������������  않으렵니다.����������� ������������������  굳이����������� ������������������  하신다면…⋯..����������� ������������������