지금까지 Axon Framework의 CommandGateway & Event Sourcing, EventGateway, QueryGateway, Snapshot, State Stored Aggregate에 대해서 '코끼리 냉장고 넣기'서비스를 개발하면서 배워 봤습니다. 이제 마지막으로 Event Replay를 이용하여 조회DB 데이터를 복구 하는 방법을 실습해 보겠습니다. Event Replay Controller 추가 package 'org.axon.controller'에 'ReplayEventsController' class를 추가 합니다. 두개의 API가 추가 됩니다. ReplayEventsController: 지정한 Event Handler에 대해 특정 일시 이후의 Event만 Replay함 r..
State Stored Aggregate는 Event Sourcing을 하지 않고 물리적 DB에 데이터를 직접 CUD(Create, Update, Delete)할 때 사용하는 Aggregate입니다. 일반 Aggregate가 Event Replay, Event 발행, Event Store에 Event 추가를 하는 반면, State Stored Aggregate는 데이터의 최종 상태를 DB에 바로 CUD합니다. 단, 다른 서비스나 다른 처리를 위해 Event는 발행할 수 있습니다. State Stored Aggregate로 만드는 방법은 Entity class에 Aggregate에 필요한 항목들을 추가하는 것입니다. @Aggregate 어노테이션을 붙여 Aggregate임을 표시 필드 중 Primary K..
마이크로서비스 패턴 중 Event Sourcing 패턴에서 Event Replay의 속도를 높이는 방법으로 Snapshot을 얘기 했었습니다. [마이크로서비스 패턴 쉽게 개발 1] 마이크로서비스 패턴 이해: Saga, Event Sourcing, API Composition, CQRS 위 글 내용 중 '통장계좌'서비스 예를 들어 'Snapshot'을 얘기 했던게 기억 나실 겁니다. 동일 주문에 대해 발생하는 Event수가 그리 많지 않아 Event Replay시간이 많이 걸리지는 않을 겁니다. 그런데 '통장계좌'서비스를 생각해 봅시다. 통장을 개설하고 각 통장마다 발생하는 Event수는 엄청나게 많을 것입니다. 예를 들어 한 통장에 1달에 보통 100건의 입출금 Event가 발생했고 10년(120개월)을..
QueryGateway는 비동기 통신으로 데이터를 조회하는 방법입니다. 동기로 조회하는 방법과 비동기로 조회하는 방법의 차이가 뭘까요 ? 동기통신으로 조회한다는 것은 요청자와 제공자가 직접 통신한다는 의미이고, 비동기 통신으로 조회한다는 것은 요청자와 제공자 사이에 중계자를 통해 조회하는 것입니다. 동기 조회는 요청자가 제공자가 누군지 알아야 하고 제공자의 응답 포맷이 변하면 소스를 수정해야 합니다. 비동기 조회는 반대로 요청자는 제공자가 누군지 알 필요 없고 제공자가 요청자가 요구하는 포맷에 맞추는 방식입니다. 예를 들어 모든 은행에서 내가 가진 계좌의 정보를 조회하는 서비스를 만든다고 생각해 봅시다. 동기 통신이라면 아래와 같이 '전계좌 조회'서비스에서 각 은행 계좌 서비스에 요청을 해야 합니다. '..
이번 편에서는 EventGateway를 통해서 Event를 publish하는 방법을 해 보겠습니다. Event Publishing이 필요한 대표적인 케이스는 별도의 마이크로서비스에 CQRS패턴을 적용하여 조회 전용 DB를 만드는 경우 입니다. Aggregate에서 AggregateLifecycle.Apply({event 객체})로 발행된 Event는 해당 서비스 내에서만 이용할 수 있습니다. 조회 전용 DB를 관리하는 별도의 서비스에서 연관된 다른 서비스 DB의 변화를 감지하려면 어떻게 해야 할까요? 그 서비스들이 자신의 DB 변화가 있을 때 변경이 있다는 Event를 발행해 줘야 합니다. 이때 사용하는 것이 EventGateway입니다. 또 하나의 케이스는 Saga 프로세스에서 참여 서비스의 실패 Ev..
이번 편에서는 10번까지 개발 해 보겠습니다. ElephantService 완성 2. Check Validation 비즈니스 요건이 아래와 같을 때 Command 발송 전에 validation 체크를 먼저 합니다. 코끼리 등록 시 몸무게는 30kg ~ 200kg 사이만 허용한다. 이미 냉장고에 들어가 있는 코끼리는 또 넣을 수 없다. 냉장고 안에 들어가 있는 코끼리만 꺼낼 수 있다. - create 메소드 public ResultVO create(ElephantDTO elephant) { log.info("[ElephantService] Executing create: {}", elephant.toString()); ResultVO retVo = new ResultVO(); //check validati..
이번 장에서는 마이크로서비스 패턴 개발을 지원하는 Axon Framework에 대해 배워 보겠습니다. 실습으로 내용이 너무 길어져 몇개의 하위 글로 나누어서 올리겠습니다. Axon Framework는 Command Handler, Event Sourcing with Event Store, Event Handler, Query Handler로 구성되어 있습니다. [1편 마이크로서비스 패턴 이해]에서 Command, Event, Query에 대해 설명했지만 명확히 용어를 다시 정리부터 하겠습니다. 또한 [DDD 핵심만 빠르게 이해하기]의 Event Storming에서도 Command와 Event라는 용어가 등장하는데 다른 의미로 해석될 수 있을 듯 해서 함께 정리해 보겠습니다. 개념 DDD 마이크로서비스 패..
이번 장에서는 이미 개발된 주문 서비스를 테스트 하면서 대략의 전체 흐름을 이해해 보겠습니다. 먼저 GitHub에 있는 소스를 IntelliJ 에 Import 합니다. Import Application 1) Fork Application 아래 GuiHub Repository에 접근하여 자신의 Repository로 Fork합니다. https://github.com/happykubepia/agilemall-axon 2) Git Clone 자신의 PC에 소스를 다운로드 합니다. 이를 위해서는 Git Client가 PC에 설치되어야 합니다. 아래 글을 참고하여 설치 합니다. https://git-scm.com/book/ko/v2/%EC%8B%9C%EC%9E%91%ED%95%98%EA%B8%B0-Git-%EC%8..
마이크로서비스 서비스를 개발하기 위해서는 알아야 할 4가지가 있습니다. 마이크로서비스 설계 방법론인 DDD(Domain Driven Design), 마이크로 서비스를 개발 / 운영하기 위한 아키텍처인 MSA(Micro Service Architecture), 마이크로서비스와 MSA가 갖춰야 할 8가지 특성(MSA Features)과 12가지 요소(12 Factors), 그리고 마이크로서비스의 문제를 해결하기 위한 Best Practice인 마이크로서비스 패턴입니다. 패턴 실습을 위해 이 모든 것을 먼저 알 필요는 없지만 마이크로서비스를 개발/운영하는 분들이라면 꼭 알아야 할 것들입니다. 제 이전 블로그 글에 DDD와 MSA Features & 12 Factors를 정리한 것이 있으니 참고 하세요. htt..
마이크로 서비스 패턴 중 이번 실습에 적용되는 패턴인 Saga, Event Sourcing, API Composition, CQRS(Command Query Responsibility Segregation)에 대해 기본적인 이해를 먼저 해 보겠습니다. 시간이 부족한 분들을 위해 핵심만 설명하겠습니다. 글로 이해가 잘 안되실 수 있는데, 이후 실습하면서 다시 한번 보시면 조금 더 명확히 이해가 되실 겁니다. 보다 자세한 이론적 설명은 제가 예전에 쓴 아래 글을 참고하세요. https://happycloud-lee.tistory.com/154 마이크로서비스 패턴: 핵심패턴만 빠르게 이해하기 크리스 리처드슨의 '마이크로서비스 패턴'에 나오는 44가지 패턴 중 핵심 패턴인 Saga. Event sourcing,..
마이크로 서비스는 우리의 서비스가 시장변화에 Speedy하게 적시 대응하고, 일시적 장애에도 Service Always를 보장하며, 자원관리를 효율적으로 하여 Save Cost할 수 있는 좋은 서비스가 되기 위해 반드시 필요합니다. WHY 마이크로서비스 : SSS 1. Speedy -> Time to maket 작은 단위의 서비스는 비즈니스 요구사항을 수용하기 더 쉽고 빠릅니다. 또한, 다른 서비스와 느슨하게 결합되어 있기 때문에 배포도 더 자주 더 빠르게 할 수 있습니다. 2. Service Always -> Earning More 서비스가 비동기로 느슨하게 결합되어 있고 고유의 DB를 갖고 있기 때문에 특정 서비스의 장애로 인해 전체 서비스가 중단되지 않습니다. 3. Save Cost -> Cost ..
react나 vue.js를 Jenkins 파이프라인으로 CI/CD할 때 아래 예제와 같이 library를 install할 때 매우 시간이 걸립니다. 이를 NFS(Network file server)의 volume을 이용하여 개선하는 방법입니다. 예제는 아래 git repository의 deployment디렉토리 하위에 있는 Dockerfile-cicid와 Jenkinsfile을 참조 하십시오. https://github.com/happykubepia/react-weather-app.git 아래와 같은 순서로 작업 하시면 됩니다. package.json의 build명령 수정 package.json파일의 "scripts"."build"의 명령 앞에 'CI= '을 추가하셔야 합니다. 이걸 안 하면 Jenkin..
Helm chart를 이용하여 Gitea를 설치합니다. Gitea helm chart repository 주소: https://gitea.com/gitea/helm-chart helm-chart Helm chart for gitea gitea.com 1. helm chart download #작업디렉토리로 이동 > mkdir -p ~/install && cd ~/install # add chart > helm repo add gitea-charts https://dl.gitea.com/charts/ > helm repo update # download chart > helm pull gitea-charts/gitea > tar xvf gitea-9.6.0.tgz > cd gitea 2. 설치 manife..
서울대 소비자심리분석센터가 주축이 되어 매년 작성되고 있는 트렌드 코리아 2024의 요약 마인드맵을 공유합니다. https://coggle.it/diagram/ZVFoQ6_HfWTHRipd/t/%ED%8A%B8%EB%A0%8C%EB%93%9C%EC%BD%94%EB%A6%AC%EC%95%84-2024/c31812340ccee75a5c7fb546783d2b7930784c741ef2d32d20ac2032a108354a 트렌드코리아 2024, 부제: 분초사회를 다투는 호모프람프트와 육각형인간, 그리고 요즘남편까 트렌드코리아 2024 (분초사회 1분 1초도 소중함, 호모프람프트 AI와 공존하는 인류, 디토소비 나와 맞는 사람, 콘텐츠, 유통채널따라 소비, 버라이어티 가격 언제 어디서 누가 어떻게 구매하는지에 co..
Spotify doesn’t use “the Spotify model” and neither should you By Jeremiah Lee Sunday, April 19, 2020 https://www.jeremiahlee.com/posts/failed-squad-goals/ 2012년 Spotify가 그들의 애자일 조직모델을 백서로 출간하고 많은 조직이 그들을 벤치마킹하여 유사한 애자일 조직모델을 만들려고 노력해오고 있습니다. 이 칼럼은 Spotify의 애자일 코치 중 한명이 Spotify의 애자일 조직모델의 실패 원인을 정리한 글입니다. 원문 그대로 직역하면 제대로 뜻이 전달 안되는것 같아 제 나름의 의역을 하였습니다. 또한 문제의 근본원인과 솔루션을 원 저자의 메시지를 크게 손상시키지 않으면서 정..
‘존 도어의 OKR’이라는 책을 요약하면서 제가 이해한 바를 추가로 정리하였습니다. 이탤릭체로 쓴 글은 책에는 없지만 제가 추가한 내용입니다. 마지막 장에는 애자일 Squad팀에 OKR을 적용하기 위한 제 아이디어를 추가했습니다. 1. OKR 개요 OKR은 한마디로 목표와 그 목표를 달성했다고 확신할 수 있는 핵심결과입니다. 마치 운동을 시작할 때 살을 뺄지 근육을 키울지 가장 중요한 목표를 선택하고, 하루에 만보 걷기나 스쿼드 100개와 같은 구체적 목표를 세우는것과 같습니다. 목표는 ‘목적지’이고 핵심결과는 ‘이정표’라고 할 수 있습니다. 부산까지 갈 때 양재IC, 수원, 대전 등을 경유해서 가야 합니다. 이때 부산이라는 목적지가 목표이고, 중간 경유지들이 핵심결과입니다. - 인텔의 전 CEO ‘앤디..
GitHub Page라는 기능에 대해서 소개합니다. GitHub Repository는 소스를 관리하기 위한 목적이고 Git Client를 통해서만 올리고 내릴 수 있습니다. 그런데 때로 문서, 라이브러리 파일, 압축파일등을 올려 놓고 HTTP를 이용하여 다운로드 해야 하는 경우가 종종 있습니다. 이때 GitHub Repository를 웹페이지처럼 이용할 수 있는 방법이 GitHub Page기능입니다. 아래와 같이 작업하시면 됩니다. 1) 레포지토리 만들기 새로운 레포지토리의 이름을 {Organization}.github.io로 지정합니다. 2) index.html 파일 만들기 레포지토리 생성 후 index.html파일을 만듭니다. 내용은 어떤 것이든 상관 없습니다. 스크롤을 맨 밑으로 내려 [Commit..
'기획은 2형식이다.'는 유명 광고기획자인 '남충식'님이 쓴 책입니다. 남충식님은 어떤것을 기획하는 데 있어 문제정의와 솔루션은 7:3의 비중으로 문제 정의가 중요하다는 것과, 문제를 'Project'화 하여 기회로 발전시켜야 하며, Project 수행을 위한 솔루션을 창의적으로 만들려면 유사성 있는 다른 분야의 생각을 훔치고 섞어야 한다고 말하고 있습니다. 남충식님은 이 사상을 여러가지 예를 들어 설명하고 있습니다. 위의 '월간윤종신'도 그 예 중 하나입니다. 개인적으로 감명깊었던 사례는 남충식님 본인의 경험인 '아빠극장'이었습니다. 그 과정을 책의 내용을 요약하여 아래와 같이 템플릿으로 만들어 정리해 보았습니다. 문제정의에는 Great 2 WHY로 표현되는 근본문제와 목적(또는 비전, 핵심가치)이 ..
참조) https://m.blog.naver.com/businessinsight/220987205801 https://biz.chosun.com/site/data/html_dir/2007/03/23/2007032300292.html "고객은 제품을 구매(Purchase)하는것이 아니라 어떤 Job을 해결하기(Job to be done)위해 고용(Hiring)한다" 맥도널드 밀크쉐이크가 어떻게 판매량을 혁신적으로 올릴 수 있었는지에 대한 스토리입니다. 이 스토리의 실제 주인공은 하버드 경영대학원 클레이튼 크리스텐슨 교수의 동료들(Rick Pedi와 John Palmer)입니다. 크리스텐슨 교수가 이 스토리를 자신의 책인 '성장과 혁신'에 실어 전세계적으로 유명하게 되었습니다. 스토리 배경 맥도널드는 밀크쉐..
- Total
- Today
- Yesterday
- 애자일
- agile
- 호모프롬프트
- API Composition
- 요즘남편 없던아빠
- micro service
- 디토소비
- 도파밍
- CQRS
- 마이크로서비스 패턴
- spotify
- 분초사회
- SAGA
- 스포티파이
- 마이크로서비스
- 리퀴드폴리탄
- 육각형인간
- Event Sourcing
- 돌봄경제
- AXON
- 스핀프로젝트
- 버라이어티가격
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 |