Code Monkey home page Code Monkey logo

order's Introduction

SK Happy Delivery

1. 분석/설계

이벤트스토밍

이벤트 도출

이벤트도출결과

액터, 커맨드 부착

액터 커맨드 부착

어그리게잇 묶기

어그리게잇으로 묶기

바운디드 컨텍스트 묶기

바운디드컨텍스트 묶기

폴리시 부착

폴리시 추가

완성된 모형(실선은 Req/Res, 점선은 Pub/Sub)

이벤트스토밍 결과

헥사고날 아키텍처 다이어그램 도출

헥사고날 아키텍쳐 다이어그램

2. 구현

분석/설계단계에서 도출된 헥사고날 아키넥처에 따라, 각 바운디트 컨텍스트 별로 대변되는 마이크로 서비스들을 스푸링부트로 구현하였다. 구현한 각 서비스를 로컬에서 실행하는 방법은 아래와 같다

메이븐 실행

(아래 부터 수정이 필요합니다.)

Domain Driven Design의 적용

각 서비스 내에 도출된 핵심 어그리게잇 객체를 엔티티로 선언했다. 이때 가능한 현업에서 사용하는 유비쿼터스 랭귀지를 사용하려 노력했다.

kafka 활용한 Pub/Sub 구조

Correlation Key

Scaling-out

취소에 따른 보상 트랜젝션

CQRS

Message Consumer

엔티티 패턴과 레포지토리 패턴을 적용하여 JPA를 통한 다양한 데이터소스 유향에 대한 별도의 처리가 없도록 데이터 접근 어댑터를 자동 생성하기 위하여 Spring Data REST의 Repository를 적용했다.

적용 후 REST API의 테스트

REST API테스트

Polyglot Programming/Persistence

3. 운영

SLA 준수

Pod생성 시 Liveness 와 Readiness Probe를 적용했는가?

셀프힐링: Liveness Probe를 통해 일정 서비스 헬스 상태 저하에 따른 Pod 재생되는지 증명

서킷브레이커 설정: 서킷브레이커 적용 + 리트라이 적용 + Pull Ejaction 적용

오토스케일러(HPA)

모니터링, 앨러팅

Stateless 한 구현?

CI/CD 설정

AWS Code Build 적용됐는가?

Contract Test

(Advanced) Canary Deploy, Shadow Deply, A/B Test (각 2점)

운영 유연성

Config Map / Secret

order's People

Contributors

sanjuk1104 avatar suwon-github avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.