Project Root 에 docker-compose.yml
이 있음.
내부 이미지는 아래와 같음
- MariaDB : Command 용 DB
- MongoDB : Query 용 DB
- Redis : Query 용 캐시
- RabbitMQ : 메시지 브로커
이 부분에서는 해당 프로젝트에 필요한 어플리케이션을 작성해두었음.
/sh/docker_compose_run.sh
쉘을 실행
/sh/docker_compose_stop.sh
쉘을 실행
- 상품이 등록되면 해당 정보로 조회가 가능해야 한다.
[등록]
- 모든 Command Operations 는 Command Server 에서 수행된다.
- 명령이 이루어지면 등록 Event 를 Message Broker 에 발행한다.
- Consume 하고 있는 Message Worker 는 해당 Event 의 Value 장를 통해 Command Server 에 Get Read Model API 를 호출하여 읽기 전용 모델을 가져온 후 Query DB(MongoDB) 에 저장한다.
[조회]
- Query Server 를 통해 조회 요청이 들어오면 Query Cache(Redis) 에 데이터를 가져온다.
- 데이터가 있으면 Return, 없다면 Query DB(MongoDB) 에서 데이터를 가져온 후 Query Cache 에 캐싱 후 Return.
- 만약 두 저장소 모두 데이터가 없다면 해당 데이터의 Key 값을 에러 테이블에 저장 (이후 데이터 정합성을 맞추기 위한 배치 작업 등에 사용할 예정) 후 예외 발생.