56
SLiPP 스터디 - MSA 2015.12.12 강대권

SLiPP 스터디 - MSA

Embed Size (px)

Citation preview

Page 1: SLiPP 스터디 - MSA

SLiPP 스터디 - MSA

2015.12.12 강대권

Page 2: SLiPP 스터디 - MSA

Agenda

• 스터디 소개

• e커머스 사이트 MSA 도입사례 소개

• MSA 소개

Page 3: SLiPP 스터디 - MSA

스터디 소개

스터디 자료

▸ 조대협 - 대용량 아키텍처와 성능 튜닝

▸ 정도현 - MSA를 이용해 구현하는 고가용/고확장 서비스

스터디 멤버 및 기간

▸ 강대권, 정태원, 정윤성, 정하선, 김정희

▸ 2015년 4월 ~ 2015년 9월

Page 4: SLiPP 스터디 - MSA
Page 5: SLiPP 스터디 - MSA
Page 6: SLiPP 스터디 - MSA

e커머스 사이트 MSA 도입사례 소개

주의:����������� ������������������  사이트����������� ������������������  인프라/아키텍쳐����������� ������������������  변화는����������� ������������������  사실과����������� ������������������  다릅니다.

Page 7: SLiPP 스터디 - MSA
Page 8: SLiPP 스터디 - MSA
Page 9: SLiPP 스터디 - MSA
Page 10: SLiPP 스터디 - MSA

e커머스 사이트 운영초반 아키텍쳐월 거래액 : 2억

Page 11: SLiPP 스터디 - MSA

모노리딕 - Monolithic

비즈니스 로직, 데이터 액세스 코드를 하나의 애플리케이션으로 결합하는 단일구조 애플리케이션 중 하나

…which all the business logic and data access code are combined into a single application.

Page 12: SLiPP 스터디 - MSA
Page 13: SLiPP 스터디 - MSA

인프라 Scale-up월 거래액 : 60억

Page 14: SLiPP 스터디 - MSA
Page 15: SLiPP 스터디 - MSA

월 거래액 : 300억

Scale-up 한계상황 도달!!

Page 16: SLiPP 스터디 - MSA
Page 17: SLiPP 스터디 - MSA
Page 18: SLiPP 스터디 - MSA
Page 19: SLiPP 스터디 - MSA

인프라 Scale-out 변경

Page 20: SLiPP 스터디 - MSA
Page 21: SLiPP 스터디 - MSA
Page 22: SLiPP 스터디 - MSA
Page 23: SLiPP 스터디 - MSA
Page 24: SLiPP 스터디 - MSA

아키텍쳐를 바꾸기 전에..

Page 25: SLiPP 스터디 - MSA

성장의 발목을 잡는 문제가 어떤것들인지 살펴보면...

Page 26: SLiPP 스터디 - MSA

하나.길고 지루한 전체배포

(QA포함)

Page 27: SLiPP 스터디 - MSA

둘.변경에 대한 두려움

Page 28: SLiPP 스터디 - MSA

셋.경직된 구조

Page 29: SLiPP 스터디 - MSA
Page 30: SLiPP 스터디 - MSA

Microservice Architecture

Page 31: SLiPP 스터디 - MSA

마이크로 서비스 아키텍쳐2012년 ThoughWorks의 James Lewis가 “Java, The Unix way”라는 제목의 발표로 처음 언급

2014년 3월 James Lewis, Martin Fowler

Microservices라는 타이틀로 MSA에 대한 개념정리

Page 32: SLiPP 스터디 - MSA

마이크로서비스

• 작고(small)

• 자율적이며(autonomous)

• API로 다른 서비스와 연계하며(communicate with us via those APIs)

• 한 가지 일을 잘하는데 초점을 맞춘 서비스(focused on doing one thing well)

…is a software architecture style in which complex applications are composed of small, independent processes communicating with each other using language-agnostic APIs. These services are small, highly decoupled and focus on doing a small task, facilitating a modular approach to system-building.

wikipedia - Microservices

Page 33: SLiPP 스터디 - MSA

마이크로 서비스 아키텍쳐

• 서비스 제공 기업 주도

• 이미 검증된 사례 모음

• 오픈소스 기반

• Agile 개념 결합

• Cloud 환경 활용

Page 34: SLiPP 스터디 - MSA

MSA는 왜 생겨난걸까?

Page 35: SLiPP 스터디 - MSA

누구나����������� ������������������  아는����������� ������������������  이야기.����������� ������������������  소프트웨어가����������� ������������������  복잡해지기����������� ������������������  시작했다

사용자 눈높이 증가

사용자, 트래픽 증가

다양한 사용자 계층

복잡한 요구사항

속도와 유연함

사용자 중심

많은 프로그래머 필요

유지보수가 용이한 SW

높은 고가용성

변화 서비스 결과

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

Page 36: SLiPP 스터디 - MSA

사용자 눈높이 증가

사용자, 트래픽 증가

다양한 사용자 계층

복잡한 요구사항

속도와 유연함

사용자 중심

많은 프로그래머 필요

유지보수가 용이한 SW

높은 고가용성

변화 서비스 결과

누구나����������� ������������������  아는����������� ������������������  이야기.����������� ������������������  소프트웨어가����������� ������������������  복잡해지기����������� ������������������  시작했다

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

Page 37: SLiPP 스터디 - MSA

도메인별����������� ������������������  개발자����������� ������������������  분포도프로젝트����������� ������������������  관점에서

몇명 안되는 단일 서비스

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

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

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

숫자도 많고, 연관관계가 높은 서비스ex����������� ������������������  :����������� ������������������  Netflix,����������� ������������������  트위터,����������� ������������������  그루폰,����������� ������������������  쿠팡����������� ������������������  등����������� ������������������  단일����������� ������������������  서비스����������� ������������������  개발

Page 38: SLiPP 스터디 - MSA

도메인별����������� ������������������  개발자����������� ������������������  분포도프로그래머����������� ������������������  관점에서

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

낮음 빠름높지만수용가능

중간 중간 팀간 의존도는 낮음

매우 높음느림매우 높음

Page 39: SLiPP 스터디 - MSA

'소프트웨어의 구조는 그 소프트웨어를 개발하는 팀의 구조와 유사해진다는 법칙’

ORGANIZATIONS WHICH DESIGN SYSTEMS ... ARE CONSTRAINED TO PRODUCE DESIGNS WHICH ARE COPIES OF THE COMMUNICATION STRUCTURES OF THESE ORGANIZATIONS

Conway, Melvin E. (April 1968)

컨웨이 법칙 (CONWAY LAW)

Page 40: SLiPP 스터디 - MSA

분할정복(Divide and conquer)

Page 41: SLiPP 스터디 - MSA

애자일����������� ������������������  (Agile)cross-functional

Page 42: SLiPP 스터디 - MSA

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

사용자 눈높이 증가

사용자, 트래픽 증가

다양한 사용자 계층

복잡한 요구사항

사용자 중심

속도와 유연함

많은 프로그래머 필요

유지보수가 용이한 SW

높은 고가용성

변화 서비스 결과

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

Page 43: SLiPP 스터디 - MSA

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

Page 44: SLiPP 스터디 - MSA

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

Page 45: SLiPP 스터디 - MSA

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

Page 46: SLiPP 스터디 - MSA
Page 47: SLiPP 스터디 - MSA

Monolitic MSA

Page 48: SLiPP 스터디 - MSA

모노리딕 vs MSA

Page 49: SLiPP 스터디 - MSA

비지니스별 최적화 기술 적용

Page 50: SLiPP 스터디 - MSA
Page 51: SLiPP 스터디 - MSA
Page 52: SLiPP 스터디 - MSA

Microservice Architecture 특징

•Componentization via Services / 서비스에 의한 컴포넌트화

• Organized around Business Capabilities / 비즈니스 영역에 따른 조직화

• Products not Projects / 프로젝트가 아닌 프로덕트

• Smart endpoints and dumb pipes / 단순한 어플리케이션간 연동과 파이프처리 – 유닉스의 철학

• Decentralized Governance / 개발의 분권화

• Decentralized Data Management / 데이터 관리의 분권화 – Polyglot Persistence

• Infrastructure Automation / 환경구축의 자동화 - DevOps

• Design for failure / 장해를 전제로한 설계

• Evolutionary Design / 변화에 대응하는 설계

Page 53: SLiPP 스터디 - MSA

Microservice Architecture 단점

• Complexity

• Multiple Database & Transaction Management

• Complicated Test

• Require Automation for Deploy/Operation

• Hard to develop features span multiple services

Page 54: SLiPP 스터디 - MSA

정리

• MSA는 만능은 아니다

• 패러다임 변화가 큰 만큼 조직 문화가 뒷받침되어야 가능

• Microservice 단위의 재사용과 자유로운 리팩토링이 가능

• 코드의 양을 줄여서 누구나 쉽게 파악하는것이 가능

• 서비스 간 연계 시 사전협의 필요

Page 55: SLiPP 스터디 - MSA
Page 56: SLiPP 스터디 - MSA

감사합니다.