Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

MSA 전략 1: 마이크로서비스, 어떻게 디자인 할 것인가?

4,589 views

Published on

Domain Driven Design 기반의 마이크로서비스 디자인 방법론에 대해 설명을 하고 피보탈이 권장하는 모노리스 애플리케이션의 마이크로서비스 전환 방법론에 대해 살펴봅니다. 또한 실제 마이크로서비스 프로젝트에서 발생할 수 있는 우려사항들에 대해서도 국내 프로젝트 경험을 바탕으로 짚어봅니다.

Published in: Software

MSA 전략 1: 마이크로서비스, 어떻게 디자인 할 것인가?

  1. 1. 마이크로서비스 어떻게 디자인 할 것인가? Philip Youngtae Kim Pivotal
  2. 2. Agenda • Domain Driven Design • AppTx 방법론 • MSA 관련 테크놀로지 • MSA 고려사항
  3. 3. Domain Driven Design
  4. 4. Domain-Driven Design (DDD) “코드를 변경하는 권한을 가진 모든 사 람들은 코드를 통해 모델을 표현할 수 있도록 교육을 받아야 한다. 모든 개발 자는 필수적으로 현업 담당자와 협의를 해야만 한다.” - Eric Evans, Domain-Driven Design
  5. 5. “일반적으로 Bounded Context 당 한 팀이 구성이 됩니다. 한 팀은 여러 개의 Bounded Context를 관리할 수 있으나 여러 팀 이 한 개의 Bounded Context를 관리하는 것은 매우 어렵습니다.” - Evans Bounded Context
  6. 6. Aggregates AGGREGATES는 단일 단위로 처리되어야 하는 도메인 객체들의 묶음입니다. ● 트랜잭션 영역 ● Aggregate Root를 통해서만 외부 연결
  7. 7. Vaughn Vernon, Domain-Driven Design Distilled 이벤트 기반 아키텍처
  8. 8. AppTx 방법론
  9. 9. Event Storming 2. Event Storm Thin Slice 3. “Thin Slice(s)” 선택 OKRs1. 목표 설정 (OKR) Tested Code 6. 테스트 완료 및 동작하는 코드 생성 Snap-E 5. Snap-E API DATA PUB / SUB EXT STORIES UI RISKS SERVICE A Patterns 7. 재사용 가능한 패턴 Boris 4. “Boris” - 아키텍처 표현
  10. 10. 거창하게.. Where to? Objectives Key Results + - 증가 감소% # 올바른 방향으로 가고 있나? AppTx 70 - 80% OKRs
  11. 11. OKR Monitoring Monitor by Status and Confidence
  12. 12. Event Storming Simple Tools
  13. 13. 할인 Event Storming (영화예매 샘플) 결제 극장 영화 선택 날짜 선택 상영관 선택 좌석 선택 결제 시작 신용카드 입력 결제 처리 결제 완료 예매 완료 ! 도메인 이벤트 관련된 비즈니스 이벤트 “좌석 선택”, “티켓 예매 완료” Aggregate Brains 액션 수행 / 이벤트 생성 할인코드 입력 할인 처리 ? 슬라이스 예매 시작 영화 결제 Bounded Context 예약
  14. 14. Boris Diagram Service 마이크로서비스 결제 서비스 Queue 메세지 큐 “좌석 요청” UI External 외부 시스템 연계 Service Service Service Service Service Ext Ext Q Q Q UI UI
  15. 15. Boris Diagram 샘플
  16. 16. Boris Diagram 아키텍처 표현 이벤트 플로우 마이크로서비스 API 시나리오 모델링 백로그 생성
  17. 17. SnapE API Data Source / Storage UI Risks Stories Rabbit MQ REST / J SON CICS G W Other Purchase H istory AdminUI Dependent On... GET /purchases GET /purchases GET /purchases
  18. 18. SnapE 샘플
  19. 19. 산출물 샘플 Event Storm Boris SnapE
  20. 20. Pivotal Tracker © Copyright 2018 Pivotal Software, Inc. All rights reserved. SnapE에서 도출된 요건은 Pivotal Tracker에서 관리 가 됩니다. 모든 팀원은 Tracker에 접근이 가능하고 현재 구현중 인 작업 상태를 실시간으로 확인이 가능합니다. 유저 스토리는 사용자에게 가치 있는 작업내용을 기반 으로 세분화된 형태로 만들어집니다. 유저 스토리는 높은 우선순위대로 위부터 차례대로 나 열됩니다. 사용자의 피드백을 자주 반영하기 위해 빈번한 주기로 릴리즈를 합니다.
  21. 21. 릴리즈 파이프라인 자동화 코드 변경 빌드, 테스트, 배포 자 동화 바이너리 저장 스테이징 배포, UAT 운영 시스템 무중단 업 그레이드 샘플Tool Gitlab ArtifactoryConcourse Pivotal HA Services (API기반) 가능한 여러 종류의 테스트 를 자동화하는 파이프라인을 빌드 자동화 된 프로세스 에 기반하여 다음 단 계의 환경으로 프로 모션 롤링 방식을 기반으로 무 중단 패치 및 업그 레이드 </> 12 factor를 반영하는 형 태의 코드
  22. 22. 마이크로서비스 관련 패턴들 API Gateway, Edge Server, BFFInverse Conway Event Shunting ACL, Context Mapping, Strangler Bridge, Router, Proxy, Facade Eventual Consistency, Sagas, ESB >> microservices
  23. 23. Cookbooks 재사용이 가능한 패턴은 문서화되어 다른 개발자들이 참조할 수 있게 합니다. 많은 기업들이 애플리케이션 변환을 위해 사용한 검증된 Playbooks와 Blueprints를 참조 합니다.
  24. 24. Selected aggregate 2. To Boris Selected user story 3. To Snap-E User story breakdown 4. To story breakdown 5. To tested and working code Low-level design decisions: 1. Use Kafka as async interface for receiving job orders 2. Define Job Order Event entity (data received) 3. Define REST API for job order lookup ... App Nav + Modernization Flow 1. From E.S. 6. To Cookbook of Patterns
  25. 25. MSA 관련 테크놀로지
  26. 26. MSA 관련 기술 Microservice Architecture 1. API & API Gateway 2. Traffic / Routing / Discovery 3. Messaging 4. Data / Backing Services 5. Application Monitoring 6. Transactions 7. Security 8. Batch 9. Event Sourcing / CQRS 10. CI/CD Platform Architecture 1. Platform Monitoring 2. Scaling 3. Patching & Upgrading 4. HA Architecture 5. DR Architecture
  27. 27. MSA 고려사항
  28. 28. 국내 프로젝트 개요 ● 국내 제조기업의 MES의 마이크로서비스 프로젝트 ● Pivotal Application Transformation (AppTx) 서비스를 통한 서비스 도출 및 아키텍처 검증 Oracle DB WebLogic Schema Application Oracle DB Pivotal Cloud Foundry SchemaSchemaSchemaSchemaSchema SchemaSchemaSchemaSchemaMicroservice
  29. 29. 고려사항 ● 마이크로서비스 자체가 목표가 아닌 얻고자 하는 Value에 포커스를 맞춰 MSA 디자인 ● 지속적인 애플리케이션 업데이트와 배포를 감안 ● 개발자들의 Learning Curve를 감안 ○ 국내 개발자들은 DB SQL을 이용한 개발에 친숙 (예> Union, join, with, connected by) ○ 이벤트 기반 구현에 대한 개발자들의 생소함 ● 마이크로서비스 운영에 대한 고민이 필요 ○ DevOps와 플랫폼 필요 ○ 마이크로서비스 분산환경에서의 트러블슈팅 노하우 필요 ● 마이크로서비스 경험이 있는 마스터 필요
  30. 30. 고맙습니다. Philip Youngtae Kim philipkim@pivotal.io

×