SlideShare a Scribd company logo
온라인 주문 서비스를 서버리스
아키텍쳐로 구축하기
김태우 / Solutions Architect, Classmethod
발표자 소개
• 일본 도쿄 거주 (2020년 10월 현재)
• Developers.IO 에서 AWS 기술 블로그 작성
• AWS 12x Certified Engineer
• 2020 APN AWS Top Engineers (by AWS Japan)
한국어 & 일본어 기술블로그. https://dev.classmethod.jp/author/kim-taewoo/
스포일러 주의!
본 발표는 좌측
블로그의 내용과
매우 유사한 내용을
다룹니다
스포일러 주의!
본 발표는 좌측
블로그의 내용과
매우 유사한 내용을
다룹니다
BUT!!
아키텍쳐의 전제에 몇가지 변화를 주어
아키텍쳐 및 데모코드를 상당부분 변경하였으니
이미 포스팅을 읽으셨던 분들도
재밌게 시청하실 수 있을거라 기대합니다 :)
한가지 더 주의!
본 발표의 데모 아키텍쳐는 서버리스 상에서
분산 트랜잭션 처리를 위한 “아이디어” 를
제시하기 위한 용도로 제안하였으며, 실제
서비스에 적용하기 위해서는 반드시 다양한
관점에서 검토를 선행할 것을 적극 권장합니다.
본 발표가 끝나면 얻어갈 수 있는 것
• 서버리스 환경에서 분산 트랜잭션 처리는 어떻게
할 수 있을까요?
• 서버리스 환경에서 쉽게 실시간 통신을 구현할 수
있는 방법은 없을까요?
• AWS CDK 가 좋다던데 샘플 코드가 너무 부족한
것 같은데요
본 발표에서 다루지 않는 것
• 분산 트랜잭션의 일반적인 처리기법에 대한 자세한 설명
• AWS Step Functions 에 대한 자세한 설명
• GraphQL 개념 및 AWS AppSync 에 대한 자세한 설명
• AWS Amplify 에 대한 자세한 설명
• AWS Lambda 에 대한 자세한 설명
• Amazon DynamoDB 에 대한 자세한 설명
서버리스 분산 트랜잭션 처리방법
트랜잭션이란?
여행갈 때 TODO 리스트
- 항공권 예약
- 호텔 예약
- 렌트카 예약
트랜잭션이란?
여행 취소 TODO 리스트
- 항공권 취소
- 호텔 취소
- 렌트카 취소
트랜잭션이란?
• 모든 태스크가 전부 성공하던지
• 모든 태스크가 전부 실패하던지
• 그 외의 상태는 용납하지 않음
트랜잭션 처리
• 모놀리식 아키텍쳐에서는
데이터베이스 레벨에서 트랜잭션
제어
• session.flush() 및 session.commit()
등을 통해 비교적 간단히 트랜잭션
구현이 가능했음
트랜잭션 처리
• MSA 에서는 서비스 레벨에서 트랜잭션 제어
• 평소에는 문제가 없다가도 예기치 못한
순간이나 트래픽이 몰리는 순간에 서비스가
정상적으로 작동하지 않으면 트랜잭션은
성립하지 않음
• MSA 상에서 분산 트랜잭션 처리를 위한
다양한 방법들이 고안됨
트랜잭션 처리
• MSA 에서는 서비스 레벨에서 트랜잭션 제어
• 평소에는 문제가 없다가도 예기치 못한
순간이나 트래픽이 몰리는 순간에 서비스가
정상적으로 작동하지 않으면 트랜잭션은
성립하지 않음
• MSA 상에서 분산 트랜잭션 처리를 위한
다양한 방법들이 고안됨
Distributed Sagas
Distributed Sagas: A Protocol for Coordinating
Microservices - Caitie McCaffrey - JOTB17
Distributed Sagas
• 마이크로서비스 간의 조율을 위한
프로토콜 (구현체가 아님)
• Saga Execution Coordinator (SEC)
와 Saga Log 가 구현의 핵심
Distributed Sagas
Excepted from Distributed Sagas: A Protocol for Coordinating Microservices - Caitie McCaffrey - JOTB17
데모에서 사용된 AWS 서비스
AWS Step Functions
• 서버리스 워크플로우 관리 서비스
• SEC 와 Saga Log 의 기능으로도 활용 가능
• 단, State 변경횟수로 과금되므로 비용 대비
효과를 잘 고려하여 사용할 것을 권장
AWS AppSync
• 서버리스 GraphQL 서비스
• 최근에 서포트된 Direct Lambda Resolver
로 인해 앞으로 많이 활용될 서비스로 예상
• GraphQL 의 실시간 업데이트를 위한
Subscription 기능 지원
AWS Amplify
• 클라이언트 개발자가 쉽고 빠르고 효과적으로
AWS 환경을 구축 및 개발, 활용할 수 있도록
도와주는 SDK, CLI 및 콘솔환경을 제공
• 본 데모에서는 amplify codegen 을 통해 AppSync
API 코드를 생성 및 생성된 코드를 활용
AWS CDK
• AWS 리소스를 범용 프로그래밍 언어로
작성, 배포, 관리할 수 있도록 해주는 도구
• AWS Cloud Development Kit 의 약자로,
AWS 뿐만 아니라 GCP 나 Azure, 그리고
Kubernetes 까지 지원
데모 프로젝트 소개
데모 시연
데모 프로젝트 아키텍쳐
데모 프로젝트 아키텍쳐
데모 흐름 설명
데모 흐름 설명 : Ionic 앱
데모 흐름 설명 : 어드민
Step Functions 트랜잭션 처리
주문 성공 / 트랜잭션 성공
주문 트랜잭션 완료 (주문 성공)
결제처리가 완료되었다는 이벤트 수신
주문을 확정하고 배송 요청
주문 실패 / 트랜잭션 성공
결제처리가 완료되었다는 이벤트 수신
주문 트랜잭션 완료 (주문 실패)
결제 취소 + 배송 요청 취소 + 주문 취소
주문을 확정하고 배송 요청하려다…
But 어떤 태스크에서 실패
결제처리 실패 / 트랜잭션 성공
결제처리가 완료되었다는 이벤트 수신
But 어떠한 이유로 이벤트 처리 실패
주문 트랜잭션 완료 (주문 실패)
결제 취소 + 배송 요청 취소 + 주문 취소
트랜잭션이 실패한다면?
트랜잭션이 실패한다면?
트랜잭션이 실패한다면?
Step Functions 의 상태 변화를 모니터링해서
실패한 트랜잭션이 발생 시 즉시 대응할 수 있도록 구성하는 것이 중요!
데모 코드
Github Repository
https://github.com/twkiiim/aws-community-day-2020-demo
발표 내용 정리
정리: 오늘 이야기한 것들
• Step Functions 를 활용한 분산 트랜잭션 처리도
고려해보자
• AppSync 와 Direct Lambda Resolver 조합을
눈여겨보자
• 데모 프로젝트의 AWS CDK 샘플 코드는 챙겨놓자
발표에서 다룬 서비스들에 대해
더 자세히 알아보고 싶으신 분들께
온라인 주문 서비스를 서버리스 아키텍쳐로 구축하기 - 김태우(Classmethod) :: AWS Community Day Online 2020
온라인 주문 서비스를 서버리스 아키텍쳐로 구축하기 - 김태우(Classmethod) :: AWS Community Day Online 2020
온라인 주문 서비스를 서버리스 아키텍쳐로 구축하기 - 김태우(Classmethod) :: AWS Community Day Online 2020
온라인 주문 서비스를 서버리스 아키텍쳐로 구축하기 - 김태우(Classmethod) :: AWS Community Day Online 2020
온라인 주문 서비스를 서버리스 아키텍쳐로 구축하기 - 김태우(Classmethod) :: AWS Community Day Online 2020
감사합니다

More Related Content

PDF
Oracle運用Tips大放出! ~ RAC環境のRMANのパラレル化を極める 編 ~ @2016-02-23 JPOUG
PPTX
しばちょう先生が語る!オラクルデータベースの進化の歴史と最新技術動向#3
PDF
EMR 플랫폼 기반의 Spark 워크로드 실행 최적화 방안 - 정세웅, AWS 솔루션즈 아키텍트:: AWS Summit Online Ko...
PDF
MySQL 상태 메시지 분석 및 활용
PPTX
An intro to Docker, Terraform, and Amazon ECS
PDF
Ingress on Azure Kubernetes Service
PPTX
SQL Plan Directives explained
PDF
Release and patching strategy
Oracle運用Tips大放出! ~ RAC環境のRMANのパラレル化を極める 編 ~ @2016-02-23 JPOUG
しばちょう先生が語る!オラクルデータベースの進化の歴史と最新技術動向#3
EMR 플랫폼 기반의 Spark 워크로드 실행 최적화 방안 - 정세웅, AWS 솔루션즈 아키텍트:: AWS Summit Online Ko...
MySQL 상태 메시지 분석 및 활용
An intro to Docker, Terraform, and Amazon ECS
Ingress on Azure Kubernetes Service
SQL Plan Directives explained
Release and patching strategy

What's hot (20)

PDF
Best Practices for the Most Impactful Oracle Database 18c and 19c Features
PDF
"Changing Role of the DBA" Skills to Have, to Obtain & to Nurture - Updated 2...
PPT
DataGuard体験記
PDF
それでも環境依存は残っている~起きたり起きなかったりする問題のお話~
PDF
판교 개발자 데이 – Aws가 제안하는 서버리스 아키텍처 – 김필중
PDF
Oracle GoldenGate 概要 2020年11月版
PDF
SQL大量発行処理をいかにして高速化するか
PDF
コンテナ環境でJavaイメージを小さくする方法!
PDF
Average Active Sessions RMOUG2007
PDF
Oracle statistics by example
PDF
promgen - prometheus managemnet tool / simpleclient_java hacks @ Prometheus c...
PPTX
Maria db 이중화구성_고민하기
PDF
Oracle Active Data Guard 12c: Far Sync Instance, Real-Time Cascade and Other ...
PPSX
Sql Performance Tuning with ASH & AWR: Real World Use Cases
PDF
Oracle Cloud Infrastructure:2022年4月度サービス・アップデート
PPTX
PostgreSQLモニタリングの基本とNTTデータが追加したモニタリング新機能(Open Source Conference 2021 Online F...
PDF
[2018] MySQL 이중화 진화기
PDF
CloudFormation Getting Started with YAML
PDF
KafkaとAWS Kinesisの比較
PDF
MariaDB MaxScale monitor 매뉴얼
Best Practices for the Most Impactful Oracle Database 18c and 19c Features
"Changing Role of the DBA" Skills to Have, to Obtain & to Nurture - Updated 2...
DataGuard体験記
それでも環境依存は残っている~起きたり起きなかったりする問題のお話~
판교 개발자 데이 – Aws가 제안하는 서버리스 아키텍처 – 김필중
Oracle GoldenGate 概要 2020年11月版
SQL大量発行処理をいかにして高速化するか
コンテナ環境でJavaイメージを小さくする方法!
Average Active Sessions RMOUG2007
Oracle statistics by example
promgen - prometheus managemnet tool / simpleclient_java hacks @ Prometheus c...
Maria db 이중화구성_고민하기
Oracle Active Data Guard 12c: Far Sync Instance, Real-Time Cascade and Other ...
Sql Performance Tuning with ASH & AWR: Real World Use Cases
Oracle Cloud Infrastructure:2022年4月度サービス・アップデート
PostgreSQLモニタリングの基本とNTTデータが追加したモニタリング新機能(Open Source Conference 2021 Online F...
[2018] MySQL 이중화 진화기
CloudFormation Getting Started with YAML
KafkaとAWS Kinesisの比較
MariaDB MaxScale monitor 매뉴얼
Ad

Similar to 온라인 주문 서비스를 서버리스 아키텍쳐로 구축하기 - 김태우(Classmethod) :: AWS Community Day Online 2020 (20)

PPTX
분산 트랜잭션 환경에서 데이터 일관성 유지 방안 업로드용
PDF
[Partner TechShift 2017] AWS로 당신의 소프트웨어를 혁신하라
PDF
[애플리케이션 현대화 및 개발] 클라우드를 통한 현대적 애플리케이션 디자인 및 구축 패턴 - 윤석찬, AWS 수석 테크 에반젤리스트
PDF
[애플리케이션 현대화 및 개발] 파트너 세션 | 모던 인프라스트럭쳐 아키텍쳐 - 서호석 이사, 영우디지탈
PPTX
Aws serverless services
PPTX
4. 대용량 아키텍쳐 설계 패턴
PDF
데브옵스 엔지니어를 위한 신규 운영 서비스 - 김필중, AWS 개발 전문 솔루션즈 아키텍트 / 김현민, 메가존클라우드 솔루션즈 아키텍트 :...
PDF
서버리스 아키텍처 패턴 및 모범 사례- 강승욱, AWS솔루션즈 아키텍트:: AWS Summit Online Korea 2020
PDF
AWS Summit - AWS를 통한 신뢰성 높은 지속적 배포 및 통합(CD, CI) ᄉ...
PDF
이벤트 드리븐 아키텍처 구축을 위한 적절한 어플리케이션 통합 서비스 선택 및 사용 방법 - 김성진, AWS솔루션즈 아키텍트:: AWS S...
PDF
클라이드 네이티브 기반 Twelve Factor 앱 개발 - 윤석찬, AWS 테크에반젤리스트 :: AWS Summit Online Kore...
PDF
서버리스 애플리케이션 구축 패턴 및 구축 사례 - AWS Summit Seoul 2017
PDF
통신사의 차별화된 메시징 서비스 아키텍처를 소개합니다 - 정영준 AWS 솔루션즈 아키텍트 / 강성원, 나상화 소프트웨어 엔지니어 무선사업부...
PDF
컨테이너와 서버리스 기술을 통한 디지털 트랜스포메이션::정도현::AWS Summit Seoul 2018
PDF
아키텍처 현대화 분야 신규 서비스 - 주성식, AWS 솔루션즈 아키텍트 :: AWS re:Invent re:Cap 2021
PDF
Amazon & AWS의 MSA와 DevOps, 그리고 지속적 혁신
PDF
하드웨어 스타트업의 소프트웨어 이야기
PPTX
System Infra와 Recovery 그리고 DevOps
PDF
Aws se-aws 경험기
PDF
[2017 AWS Startup Day] 서버리스 마이크로서비스로 일당백 개발조직 만들기
분산 트랜잭션 환경에서 데이터 일관성 유지 방안 업로드용
[Partner TechShift 2017] AWS로 당신의 소프트웨어를 혁신하라
[애플리케이션 현대화 및 개발] 클라우드를 통한 현대적 애플리케이션 디자인 및 구축 패턴 - 윤석찬, AWS 수석 테크 에반젤리스트
[애플리케이션 현대화 및 개발] 파트너 세션 | 모던 인프라스트럭쳐 아키텍쳐 - 서호석 이사, 영우디지탈
Aws serverless services
4. 대용량 아키텍쳐 설계 패턴
데브옵스 엔지니어를 위한 신규 운영 서비스 - 김필중, AWS 개발 전문 솔루션즈 아키텍트 / 김현민, 메가존클라우드 솔루션즈 아키텍트 :...
서버리스 아키텍처 패턴 및 모범 사례- 강승욱, AWS솔루션즈 아키텍트:: AWS Summit Online Korea 2020
AWS Summit - AWS를 통한 신뢰성 높은 지속적 배포 및 통합(CD, CI) ᄉ...
이벤트 드리븐 아키텍처 구축을 위한 적절한 어플리케이션 통합 서비스 선택 및 사용 방법 - 김성진, AWS솔루션즈 아키텍트:: AWS S...
클라이드 네이티브 기반 Twelve Factor 앱 개발 - 윤석찬, AWS 테크에반젤리스트 :: AWS Summit Online Kore...
서버리스 애플리케이션 구축 패턴 및 구축 사례 - AWS Summit Seoul 2017
통신사의 차별화된 메시징 서비스 아키텍처를 소개합니다 - 정영준 AWS 솔루션즈 아키텍트 / 강성원, 나상화 소프트웨어 엔지니어 무선사업부...
컨테이너와 서버리스 기술을 통한 디지털 트랜스포메이션::정도현::AWS Summit Seoul 2018
아키텍처 현대화 분야 신규 서비스 - 주성식, AWS 솔루션즈 아키텍트 :: AWS re:Invent re:Cap 2021
Amazon & AWS의 MSA와 DevOps, 그리고 지속적 혁신
하드웨어 스타트업의 소프트웨어 이야기
System Infra와 Recovery 그리고 DevOps
Aws se-aws 경험기
[2017 AWS Startup Day] 서버리스 마이크로서비스로 일당백 개발조직 만들기
Ad

More from AWSKRUG - AWS한국사용자모임 (20)

PDF
IaC로 AWS인프라 관리하기 - 이진성 (AUSG) :: AWS Community Day Online 2021
PPTX
Docker를 활용한 손쉬운 ECS 활용기 - 김민태 (AUSG) :: AWS Community Day Online 2021
PDF
AWS와 함께하는 무중단 배포 파이프라인 개선기 - 황성찬 (AUSG) :: AWS Community Day Online 2021
PDF
보안을 위한 AWS Network 구성 - 우수연 (AUSG) :: AWS Community Day Online 2021
PDF
자연어 처리 ML모델을 활용한 이커머스 문제 해결하기 - 진현두 (카카오스타일) :: AWS Community Day Online 2021
PDF
Athena & Step Function 으로 통계 파이프라인 구축하기 - 변규현 (당근마켓) :: AWS Community Day Onl...
PPTX
자바개발자가 최대한 빠르게 서비스를 오픈하는 방법 - 최진환 (드라마앤컴퍼니) :: AWS Community Day Online 2021
PDF
스타트업 나홀로 데이터 엔지니어: 데이터 분석 환경 구축기 - 천지은 (Tappytoon) :: AWS Community Day Onlin...
PDF
커뮤니티 빌더를 아시나요? - 윤평호(AWSKRUG) :: AWS Community Day Online 2021
PDF
복잡한 권한신청문제 ConsoleMe로 해결하기 - 손건 (AB180) :: AWS Community Day Online 2021
PDF
ECS to EKS 마이그레이션 경험기 - 유용환(Superb AI) :: AWS Community Day Online 2021
PDF
복잡한 기존 시스템에 피쳐 애드업 후기 - 김태웅(브랜디) :: AWS Community Day Online 2021
PDF
EKS에서 Opentelemetry로 코드실행 모니터링하기 - 신재현 (인덴트코퍼레이션) :: AWS Community Day Online...
PDF
Amazon EKS로 간단한 웹 애플리케이션 구축하기 - 김주영 (AWS) :: AWS Community Day Online 2021
PDF
[AWS Hero 스페셜] 서버리스 기반 검색 서비스 구축하기 - 이상현(스마일벤처스) :: AWS Community Day Online ...
PDF
초기 스타트업의 AWS - 김지훈(투어라이브) :: AWS Community Day Online 2020
PDF
[AWS Hero 스페셜] Amazon Personalize를 통한 개인화/추천 서비스 개발 노하우 - 소성운(크로키닷컴) :: AWS C...
PPTX
goployer, 코드 기반의 배포 도구 - 송주영 (beNX) :: AWS Community Day 2020
PDF
엔터프라이즈 기업을 위한 Digital 플랫폼 구축 사례 - 권낙주(SK C&C) :: AWS Community Day Online 2020
PDF
AWS Cloud Development Kit (CDK)를 이용한 코드 기반 인프라 개발 및 배포 - 공찬호(리얼리티매직) :: AWS C...
IaC로 AWS인프라 관리하기 - 이진성 (AUSG) :: AWS Community Day Online 2021
Docker를 활용한 손쉬운 ECS 활용기 - 김민태 (AUSG) :: AWS Community Day Online 2021
AWS와 함께하는 무중단 배포 파이프라인 개선기 - 황성찬 (AUSG) :: AWS Community Day Online 2021
보안을 위한 AWS Network 구성 - 우수연 (AUSG) :: AWS Community Day Online 2021
자연어 처리 ML모델을 활용한 이커머스 문제 해결하기 - 진현두 (카카오스타일) :: AWS Community Day Online 2021
Athena & Step Function 으로 통계 파이프라인 구축하기 - 변규현 (당근마켓) :: AWS Community Day Onl...
자바개발자가 최대한 빠르게 서비스를 오픈하는 방법 - 최진환 (드라마앤컴퍼니) :: AWS Community Day Online 2021
스타트업 나홀로 데이터 엔지니어: 데이터 분석 환경 구축기 - 천지은 (Tappytoon) :: AWS Community Day Onlin...
커뮤니티 빌더를 아시나요? - 윤평호(AWSKRUG) :: AWS Community Day Online 2021
복잡한 권한신청문제 ConsoleMe로 해결하기 - 손건 (AB180) :: AWS Community Day Online 2021
ECS to EKS 마이그레이션 경험기 - 유용환(Superb AI) :: AWS Community Day Online 2021
복잡한 기존 시스템에 피쳐 애드업 후기 - 김태웅(브랜디) :: AWS Community Day Online 2021
EKS에서 Opentelemetry로 코드실행 모니터링하기 - 신재현 (인덴트코퍼레이션) :: AWS Community Day Online...
Amazon EKS로 간단한 웹 애플리케이션 구축하기 - 김주영 (AWS) :: AWS Community Day Online 2021
[AWS Hero 스페셜] 서버리스 기반 검색 서비스 구축하기 - 이상현(스마일벤처스) :: AWS Community Day Online ...
초기 스타트업의 AWS - 김지훈(투어라이브) :: AWS Community Day Online 2020
[AWS Hero 스페셜] Amazon Personalize를 통한 개인화/추천 서비스 개발 노하우 - 소성운(크로키닷컴) :: AWS C...
goployer, 코드 기반의 배포 도구 - 송주영 (beNX) :: AWS Community Day 2020
엔터프라이즈 기업을 위한 Digital 플랫폼 구축 사례 - 권낙주(SK C&C) :: AWS Community Day Online 2020
AWS Cloud Development Kit (CDK)를 이용한 코드 기반 인프라 개발 및 배포 - 공찬호(리얼리티매직) :: AWS C...

온라인 주문 서비스를 서버리스 아키텍쳐로 구축하기 - 김태우(Classmethod) :: AWS Community Day Online 2020

  • 1. 온라인 주문 서비스를 서버리스 아키텍쳐로 구축하기 김태우 / Solutions Architect, Classmethod
  • 2. 발표자 소개 • 일본 도쿄 거주 (2020년 10월 현재) • Developers.IO 에서 AWS 기술 블로그 작성 • AWS 12x Certified Engineer • 2020 APN AWS Top Engineers (by AWS Japan) 한국어 & 일본어 기술블로그. https://dev.classmethod.jp/author/kim-taewoo/
  • 3. 스포일러 주의! 본 발표는 좌측 블로그의 내용과 매우 유사한 내용을 다룹니다
  • 4. 스포일러 주의! 본 발표는 좌측 블로그의 내용과 매우 유사한 내용을 다룹니다 BUT!! 아키텍쳐의 전제에 몇가지 변화를 주어 아키텍쳐 및 데모코드를 상당부분 변경하였으니 이미 포스팅을 읽으셨던 분들도 재밌게 시청하실 수 있을거라 기대합니다 :)
  • 5. 한가지 더 주의! 본 발표의 데모 아키텍쳐는 서버리스 상에서 분산 트랜잭션 처리를 위한 “아이디어” 를 제시하기 위한 용도로 제안하였으며, 실제 서비스에 적용하기 위해서는 반드시 다양한 관점에서 검토를 선행할 것을 적극 권장합니다.
  • 6. 본 발표가 끝나면 얻어갈 수 있는 것 • 서버리스 환경에서 분산 트랜잭션 처리는 어떻게 할 수 있을까요? • 서버리스 환경에서 쉽게 실시간 통신을 구현할 수 있는 방법은 없을까요? • AWS CDK 가 좋다던데 샘플 코드가 너무 부족한 것 같은데요
  • 7. 본 발표에서 다루지 않는 것 • 분산 트랜잭션의 일반적인 처리기법에 대한 자세한 설명 • AWS Step Functions 에 대한 자세한 설명 • GraphQL 개념 및 AWS AppSync 에 대한 자세한 설명 • AWS Amplify 에 대한 자세한 설명 • AWS Lambda 에 대한 자세한 설명 • Amazon DynamoDB 에 대한 자세한 설명
  • 9. 트랜잭션이란? 여행갈 때 TODO 리스트 - 항공권 예약 - 호텔 예약 - 렌트카 예약
  • 10. 트랜잭션이란? 여행 취소 TODO 리스트 - 항공권 취소 - 호텔 취소 - 렌트카 취소
  • 11. 트랜잭션이란? • 모든 태스크가 전부 성공하던지 • 모든 태스크가 전부 실패하던지 • 그 외의 상태는 용납하지 않음
  • 12. 트랜잭션 처리 • 모놀리식 아키텍쳐에서는 데이터베이스 레벨에서 트랜잭션 제어 • session.flush() 및 session.commit() 등을 통해 비교적 간단히 트랜잭션 구현이 가능했음
  • 13. 트랜잭션 처리 • MSA 에서는 서비스 레벨에서 트랜잭션 제어 • 평소에는 문제가 없다가도 예기치 못한 순간이나 트래픽이 몰리는 순간에 서비스가 정상적으로 작동하지 않으면 트랜잭션은 성립하지 않음 • MSA 상에서 분산 트랜잭션 처리를 위한 다양한 방법들이 고안됨 트랜잭션 처리 • MSA 에서는 서비스 레벨에서 트랜잭션 제어 • 평소에는 문제가 없다가도 예기치 못한 순간이나 트래픽이 몰리는 순간에 서비스가 정상적으로 작동하지 않으면 트랜잭션은 성립하지 않음 • MSA 상에서 분산 트랜잭션 처리를 위한 다양한 방법들이 고안됨
  • 14. Distributed Sagas Distributed Sagas: A Protocol for Coordinating Microservices - Caitie McCaffrey - JOTB17
  • 15. Distributed Sagas • 마이크로서비스 간의 조율을 위한 프로토콜 (구현체가 아님) • Saga Execution Coordinator (SEC) 와 Saga Log 가 구현의 핵심
  • 16. Distributed Sagas Excepted from Distributed Sagas: A Protocol for Coordinating Microservices - Caitie McCaffrey - JOTB17
  • 18. AWS Step Functions • 서버리스 워크플로우 관리 서비스 • SEC 와 Saga Log 의 기능으로도 활용 가능 • 단, State 변경횟수로 과금되므로 비용 대비 효과를 잘 고려하여 사용할 것을 권장
  • 19. AWS AppSync • 서버리스 GraphQL 서비스 • 최근에 서포트된 Direct Lambda Resolver 로 인해 앞으로 많이 활용될 서비스로 예상 • GraphQL 의 실시간 업데이트를 위한 Subscription 기능 지원
  • 20. AWS Amplify • 클라이언트 개발자가 쉽고 빠르고 효과적으로 AWS 환경을 구축 및 개발, 활용할 수 있도록 도와주는 SDK, CLI 및 콘솔환경을 제공 • 본 데모에서는 amplify codegen 을 통해 AppSync API 코드를 생성 및 생성된 코드를 활용
  • 21. AWS CDK • AWS 리소스를 범용 프로그래밍 언어로 작성, 배포, 관리할 수 있도록 해주는 도구 • AWS Cloud Development Kit 의 약자로, AWS 뿐만 아니라 GCP 나 Azure, 그리고 Kubernetes 까지 지원
  • 27. 데모 흐름 설명 : Ionic 앱
  • 28. 데모 흐름 설명 : 어드민
  • 30. 주문 성공 / 트랜잭션 성공 주문 트랜잭션 완료 (주문 성공) 결제처리가 완료되었다는 이벤트 수신 주문을 확정하고 배송 요청
  • 31. 주문 실패 / 트랜잭션 성공 결제처리가 완료되었다는 이벤트 수신 주문 트랜잭션 완료 (주문 실패) 결제 취소 + 배송 요청 취소 + 주문 취소 주문을 확정하고 배송 요청하려다… But 어떤 태스크에서 실패
  • 32. 결제처리 실패 / 트랜잭션 성공 결제처리가 완료되었다는 이벤트 수신 But 어떠한 이유로 이벤트 처리 실패 주문 트랜잭션 완료 (주문 실패) 결제 취소 + 배송 요청 취소 + 주문 취소
  • 35. 트랜잭션이 실패한다면? Step Functions 의 상태 변화를 모니터링해서 실패한 트랜잭션이 발생 시 즉시 대응할 수 있도록 구성하는 것이 중요!
  • 39. 정리: 오늘 이야기한 것들 • Step Functions 를 활용한 분산 트랜잭션 처리도 고려해보자 • AppSync 와 Direct Lambda Resolver 조합을 눈여겨보자 • 데모 프로젝트의 AWS CDK 샘플 코드는 챙겨놓자
  • 40. 발표에서 다룬 서비스들에 대해 더 자세히 알아보고 싶으신 분들께