Model-Driven 개발 철학
Overview
ElastiCORE는 Model-Driven Development(MDD) 패러다임을 기반으로 설계된 프레임워크입니다. YAML 기반 DSL로 도메인 모델을 선언적으로 정의하면, 프레임워크가 완전한 Spring Boot 애플리케이션 코드를 자동 생성합니다.
이 접근 방식은 개발 생산성을 극대화하면서도 코드 품질과 일관성을 보장합니다.
Core Principles
1. Single Source of Truth (SSOT)
ElastiCORE에서 YAML DSL 정의는 **단일 진실의 원천(Single Source of Truth)**입니다.
# 이 한 곳의 정의가 모든 것의 기준
entity:
User:
meta: entity @expose(20)
fields:
userId: long @id @sequence
name: string(100)! @search(like)
email: string(255)! @search(eq)
이 단일 정의로부터 다음이 모두 자동 생성됩니다:
- JPA Entity 클래스: 데이터베이스 매핑
- DTO 클래스: 데이터 전송 객체
- Repository 인터페이스: 데이터 접근 계층
- Service 클래스: 비즈니스 로직 계층
- Controller 클래스: REST API 엔드포인트
- SearchDTO: 검색 조건 객체
- Q 클래스: Specification 기반 동적 쿼리
- JUnit 테스트 코드: 자동화된 테스트
SSOT의 장점
- 모델 변경 시 관련 코드가 일괄 업데이트됩니다
- 코드 간 불일치가 원천적으로 차단됩니다
- 리팩토링이 안전하고 빠릅니다
2. AI Safe Architecture
ElastiCORE는 AI 시대에 안전한 아키텍처를 지향합니다.
Why AI Safe?
전통적인 개발 방식에서는 AI 코드 생성 도구가 만든 코드의 품질을 검증하기 어렵습니다. 반면 ElastiCORE는:
- 선언적 모델링: AI가 생성해야 할 것은 YAML 모델 정의뿐
- Deterministic 코드 생성: 동일한 모델에서 항상 동일한 코드가 생성
- 검증된 템플릿: 코드 생성 템플 릿은 사전 검증된 베스트 프랙티스 적용
- 구조적 제약: 모델 문법이 명확하여 잘못된 정의를 사전에 차단
전통적 AI 코드 생성:
AI → [임의의 코드] → 검증 어려움 → 위험
ElastiCORE + AI:
AI → [YAML 모델] → ElastiCORE → [검증된 코드] → 안전
Structural Safety
- 모델 수준의 검증: 코드가 아닌 모델을 검증하면 됩니다
- 일관된 패턴: 모든 생성 코드가 동일한 아키텍처 패턴을 따릅니다
- 추적 가능성: 모든 생성 코드는 원본 모델로 역추적 가능합니다
3. Deterministic 코드 생성
ElastiCORE의 코드 생성은 **결정론적(Deterministic)**입니다:
- 동일 입력 → 동일 출력: 같은 DSL 정의에서 항상 같은 코드가 생성
- 예측 가능: 개발자가 생성될 코드를 정확히 예측할 수 있음
- 재현 가능: 어떤 환경에서든 동일한 결과
# 언제 어디서 실행해도 동일한 결과
./gradlew elcore
4. 선언적 모델링 (Declarative Modeling)
ElastiCORE는 "무엇을(What)" 정의하면 **"어떻게(How)"**는 프레임워크가 처리합니다.
# 개발자는 "무엇을" 정의
entity:
Product:
meta: entity @expose(20) @audited
fields:
name: string(200)! @search(like)
price: bigdecimal(10.2) @search(between)
개발자가 정의하지 않아도 자동으로 처리되는 것들:
- JPA 매핑 전략
- REST API 엔드포인트 설계
- 검색/페이징 로직
- DTO 변환 로직
- 감사 로깅 설정
Development Workflow
1. 모델 설계
비즈니스 요구사항 분석
↓
도메인 모델 설계
↓
YAML DSL 작성
2. 코드 생성
./gradlew elcore
3. 커스터마이징
생성된 코드 확인
↓
비즈니스 로직 추가 (블록 코멘트 내)
↓
테스트 및 검증
4. 반복 개선
모델 수정
↓
재생성
↓
테스트
Architecture Layers
ElastiCORE가 생성하는 코드는 클린 아키텍처를 따릅니다:
| Layer | Description |
|---|---|
| Controller Layer | REST API endpoints |
| Service Layer | Business logic |
| Repository Layer | Data access |
| Entity Layer | Domain model |
| Port Layer | External system communication |
Traditional Development vs ElastiCORE
| 관점 | 전통적 개발 | ElastiCORE |
|---|---|---|
| 코드 작성 | 수동으로 모든 계층 구현 | DSL 정의 → 자동 생성 |
| 일관성 | 개발자에 따라 편차 | 항상 동일한 패턴 |
| 리팩토링 | 여러 파일 수동 수정 | 모델 수정 → 일괄 재생성 |
| 문서화 | 코드와 분리, 동기화 어려움 | 모델 자체가 살아있는 문서 |
| 품질 보증 | 코드 리뷰에 의존 | 검증된 템플릿으로 보장 |
| AI 활용 | 코드 품질 검증 어려움 |