SyncBoot DDD & Clean Architecture 표준
1. 4계층 Clean Architecture 패키지 구조
SyncBoot로 생성되거나 운영되는 모든 마이크로서비스 백엔드는 계층 간 단방향 의존성을 보장하기 위해 다음 4계층 구조를 엄격히 준수합니다:
com.empasy.<service>/
├── presentation/ # Layer 1: API 컨트롤러, Request/Response DTO
│ ├── controller/
│ └── dto/
├── application/ # Layer 2: 비즈니스 유스케이스, Facade, 트랜잭션 경계
│ └── service/
├── domain/ # Layer 3: 핵심 비즈니스 도메인, Entity, VO, Repository 인터페이스
│ ├── model/
│ └── repository/
└── infrastructure/ # Layer 4: DB 구현체 (Spring Data JPA), 외부 연동, MCP 어댑터
├── persistence/
└── client/2. Mandatory Lombok 코딩 규칙
SyncSeries의 전사 품질 규칙에 따라 보일러플레이트 코드 작성을 전면 금지하고 Lombok 애너테이션으로 일원화합니다.
2.1 도메인 엔티티 (Entity)
java
@Entity
@Table(name = "tb_kmeta_asset")
@Getter
@NoArgsConstructor(access = AccessLevel.PROTECTED)
@AllArgsConstructor
@Builder
@ToString
public class KmetaAsset {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(nullable = false, length = 100)
private String assetCode;
@Column(nullable = false)
private String assetName;
}2.2 DTO / Request / Response 모델
java
@Getter
@Setter
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class CreateAssetRequest {
@NotBlank(message = "자산 코드는 필수입니다.")
private String assetCode;
@NotBlank(message = "자산 명은 필수입니다.")
private String assetName;
}3. Zero-Mock & Anti-Stub 원칙
- 더미 Mock 금지: 단위 테스트 목적 외 프로덕션 코드에 하드코딩된 빈 리스트 반환(
return List.of()), static JSON 더미 반환 작성을 엄격히 금지합니다. - 실제 DB 연동: 모든 REST API는 실제 MariaDB/MySQL 또는 인메모리 H2 스키마와 100% 바인딩되어야 합니다.
- Linter 자동 검증: 커밋 전
scripts/verify-zero-mock.ps1을 실행하여 AST 정적 검사를 반드시 통과해야 합니다.