본문으로 건너뛰기

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는:

  1. 선언적 모델링: AI가 생성해야 할 것은 YAML 모델 정의뿐
  2. Deterministic 코드 생성: 동일한 모델에서 항상 동일한 코드가 생성
  3. 검증된 템플릿: 코드 생성 템플릿은 사전 검증된 베스트 프랙티스 적용
  4. 구조적 제약: 모델 문법이 명확하여 잘못된 정의를 사전에 차단
전통적 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가 생성하는 코드는 클린 아키텍처를 따릅니다:

LayerDescription
Controller LayerREST API endpoints
Service LayerBusiness logic
Repository LayerData access
Entity LayerDomain model
Port LayerExternal system communication

Traditional Development vs ElastiCORE

관점전통적 개발ElastiCORE
코드 작성수동으로 모든 계층 구현DSL 정의 → 자동 생성
일관성개발자에 따라 편차항상 동일한 패턴
리팩토링여러 파일 수동 수정모델 수정 → 일괄 재생성
문서화코드와 분리, 동기화 어려움모델 자체가 살아있는 문서
품질 보증코드 리뷰에 의존검증된 템플릿으로 보장
AI 활용코드 품질 검증 어려움모델 검증만으로 충분
온보딩프로젝트 구조 파악에 시간 소요DSL 학습으로 즉시 투입

Suitable Projects

ElastiCORE는 다음과 같은 프로젝트에 특히 적합합니다:

  • 데이터 중심 애플리케이션: CRUD 기반의 비즈니스 시스템
  • 마이크로서비스: 일관된 패턴의 서비스 개발
  • 엔터프라이즈 시스템: 대규모 도메인 모델 관리
  • 빠른 프로토타이핑: 아이디어를 즉시 동작하는 시스템으로 전환
  • AI 협업 개발: AI가 모델을 생성하고 ElastiCORE가 코드를 보장

Next Steps