Skip to content

모듈‐구조

Junsu Jang edited this page Aug 27, 2023 · 1 revision
project
 ├── clients
     └── java-email
 ├── event-consumer
      └── event-api    
 ├── mega-coffee-api
 ├── mega-coffee-common
 ├── mega-coffee-core
 ├── mega-coffee-core-infra
 ├── mega-coffee-scheduler
 └── mega-coffee-infra
      └── database
          └── mysql
      └── message-queue
          └── rabbitmq

MGC_Architecture_v1 0

[Application 영역]

  • 실제 실행을 담당하는 모듈
  • mega-coffee-api, mega-coffee-scheduler
  • Http 프로토콜 기반 Rest API의 경우 controller를 통한 입출력/검증 역할을 수행합니다.
  • 비동기 백그라운드를 통해 Trigger + Job을 수행합니다.

[Core 영역]

  • 도메인, 비즈니스 로직을 담당하는 모듈
  • mega-coffee-core, mega-coffee-core-infra
  • 변할 수 있는 Repository부분을 인터페이스로 정의하여 db가 바뀌거나 내부적으로 캐싱처리등 구체적인 구현을 알필요 없도록 하였습니다.
  • 트레이드오프로 인해 빈 주입을 위한 spring-context 와 AOP방식인 트랜잭션 지원을 위해 spring-tx 라이브러리르 허용하였습니다.
    • 추후 pure한 core모듈을 갖출 수 있도록 빈 주입은 kotlinConfig방식으로 변경하고, TransactionHandler라는 독립된 클래스를 만들어 스프링 의존성을 격리시킬 예정입니다.

[Infra 영역]

  • database, 미들웨어등 타 App에 의존도가 높은 모듈
  • db/mysql, message-queue/rabbitmq
  • core에서 정의한 인터페이스의 구체적인 구현을 정의하고 활용합니다.
  • DB의 경우 root entity, vo등 도메인 영역을 객체로 분리하여 응집력을 높입니다.

[Clients 영역]

  • 외부 API 연동등 외부 App에 의존도가 높은 모듈
  • clients/java-email
  • 실제 외부 API연동과 관련한 로직을 구현하는 곳입니다.

MGC-Employee-Manage-Service

요구사항 문서

기능요구사항 문서

프로젝트 구조

아키텍처 히스토리

버전별 시스템 아키텍처

Dev Info

개발 정보

테스트

트러블 슈팅

프로젝트 트러블 슈팅
Clone this wiki locally