본문으로 건너뛰기
ElastiCORE 3.0 은 릴리스 후보(RC)입니다: Maven Central 의 3.0.261022-rc1. 2.2 라인 프로젝트는 2.2 문서를 보세요.
버전: 3.0

계약 테스트와 벤치마크

ElastiCORE 와 보조 맞추기​

  • 키트는 DSL 문서의 사본을 갖지 않습니다 - 한 쪽짜리 참조와 레시피뿐입니다. 전체 가이드는 생성할 때마다 그 프로젝트가 쓰는 ElastiCORE 버전의 것이 src/main/resources/blueprint/ 로 복사되고, 스킬이 그 밖의 모든 것을 거기서 찾게 합니다. 프로젝트가 ElastiCORE 를 올리면 Claude 는 새 가이드를 읽습니다. (가이드는 한국어, 키트의 페이지는 영어입니다.)
  • 키트가 기대는 것은 ElastiCORE 에 대해 테스트합니다. tests/contract/check.py 는 새 프로젝트 템플릿, 작업 예, 2.x 생성기 프로젝트를 Maven Central 의 최신 ElastiCORE 3 릴리스로 빌드하고, 생성·편집·고장·복구·기동해 봅니다. 파일 표시, 두 생성기의 상태 줄과 경고 머리말, 가이드 이름, Gradle 태스크, 기동한 애플리케이션의 응답을 확인하고, 게시판·도서관·상점 레시피를 끝까지 돌려 봅니다(상점의 계약 S1-S12: 가입, 로그인, 권한, 생명주기의 409 ...). 실패하면 더는 맞지 않는 가정과 키트에서 그것을 말하는 곳을 알려 줍니다.
  • CI 가 변경마다, 그리고 매주 월요일 돌립니다. 키트가 따라가지 못한 ElastiCORE 의 변화가 키트에 커밋이 없어도 드러납니다. 훅 스크립트는 Linux, macOS, Windows 에서, opencode 어댑터는 자체 테스트로 확인합니다.
python3 tests/contract/check.py                                   # PATH 에 JDK 17, Gradle 8.14 이상
ELASTICORE_VERSION=3.0.261015-alpha1 python3 tests/contract/check.py # 특정 릴리스

-SNAPSHOT 으로 끝나는 버전은 로컬 Maven 저장소에서도 찾으므로, publishToMavenLocal 로 올린 ElastiCORE 빌드를 릴리스 전에 확인할 수 있습니다.

벤치마크: 같은 과제, 키트 없이 vs 키트와 함께​

benchmarks/library - 에이전트 셋에게 도서 대출 API(13자리 ISBN 도서, 회원, 대출, 빌려줄 권수가 없으면 409, 반납)를 한 번은 그대로, 한 번은 키트와 "ElastiCORE 로 만들어" 를 주었습니다. 실행에 참여하지 않은 별도의 Claude Code 에이전트가 모든 프로젝트를 빌드·기동·호출해 같은 21개 항목으로 채점했습니다. 구성마다 한 번, 작성자들이 직접(2026-10-20/21, Windows PC 한 대, Gradle 빌드 시간 포함, 키트 0.3.0, Codex CLI 0.163.0).

에이전트키트 없이키트와 함께
Claude Code, Sonnet4분 41초, 21 중 20.52분 18초, 21 중 20.5
Codex CLI, gpt-5.6-sol7분 13초, 21 중 213분 45초, 21 중 21
opencode, 작은 로컬 모델 (qwen3.8-flash-next-a5b)네 번 시도에 최종 보고 없음 (최고: README 없이 21 중 19.5)11분 42초, 21 중 21
실행모델 호출읽은 컨텍스트출력 토큰비용
Claude Code, 없이16657k26.0k$0.48
Claude Code, 함께10437k7.5k$0.26
Codex, 없이291,000k14.6k(구독)
Codex, 함께24859k9.5k(구독)

키트가 없으면 에이전트가 엔티티, DTO, 리포지터리, 서비스, 컨트롤러, 오류 처리기를 모두 손으로 씁니다. 키트와 함께면 같은 에이전트가 27줄 YAML 하나, 서비스 메서드, 레시피가 주는 컨트롤러 하나를 씁니다.

읽는 법

키트의 도서관 레시피는 1회차 뒤에 이 과제로 쓰였으므로, 키트와 함께한 실행은 과제의 도메인에 맞는 레시피가 있었습니다. 그런 레시피가 없던 첫 실행(키트 0.2.0)은 Claude Code 가 20.5 에 7분 47초 - 키트 없이보다 느렸고 - 레시피가 없는 과제의 숫자입니다. 그 실행이 아직 Java 로 써야 했던 것은 ElastiCORE 의 DSL 추가 다섯 개가 되었습니다(@readonly, @search(isnull), @pattern('regex', 'message'), 키로 요구하는 필수 참조, ConflictException).

벤치마크: Pet Store​

benchmarks/petstore - 키트를 쓴 Claude Code, 세 구성(Java 헥사고날, Java DDD, Kotlin 헥사고날), 별도의 에이전트가 채점. 목적은 점수가 아니라 에이전트가 어디서 DSL 을 벗어나는지 - 찾아본 긴 가이드, 열어 본 jar, 손으로 쓴 Java - 를 보고 거기서 ElastiCORE 나 키트를 고치는 것이었습니다.

Java 헥사고날Java DDDKotlin 헥사고날
1회차 - 쇼핑몰 만들기 (24개 항목, 고치기 전)23.5, 8분 06초23.5, 8분 40초23.5, 30분 53초
2회차 - 고친 뒤24, 7분 25초, $0.8623, 8분 49초, $1.0124, 9분 14초
2단계 - 변경 요청 (20개 항목)20, 13분 24초, $1.6719.5, 14분 11초, $2.0220, 13분 58초, $1.77

그 때문에 ElastiCORE 와 키트에서 바뀐 것: 생성된 프로젝트 키워 가기.

한계와 팁​

  • 키트의 페이지는 hexagonal·ddd 의 3.0 규칙 엔진용입니다. 2.x 프로젝트에서는 훅만 동작하고 참조와 레시피는 맞지 않습니다.
  • 훅은 편집 도구와 Bash·PowerShell 의 Gradle 을 봅니다. 스크립트로 한 편집은 막지 못합니다.
  • 실패한 명령은 Claude Code 가 처음 10,000자만 넘기므로, 아주 큰 프로젝트에서는 경고가 훅의 시야 밖일 수 있습니다.
  • Codex CLI 는 스킬만 받습니다(훅 없음). Windows 의 Codex 와 opencode 에서는 Gradle 데몬을 끄고 빌드합니다 (--no-daemon 또는 GRADLE_OPTS=-Dorg.gradle.daemon=false): 아니면 opencode 의 PowerShell 호출이 돌아오지 않고, codex 프로세스가 답한 뒤에도 끝나지 않습니다.
  • 도구의 셸에서 bootRun 은 쓰지 않고, 서버는 프로세스 ID 로 끕니다.