SAP가 Spring Boot 위에 CDS 모델링, 제네릭 런타임, 이벤트 핸들러를 통합한 CAP Java 프레임워크로 OData/REST 서비스 개발 방식을 표준화
CAP Java Architecture — CDS, Event Handlers & CQN Query API
AI 요약
Context
Spring Boot만으로는 엔터프라이즈 애플리케이션에 필요한 도메인 모델링, OData 메타데이터 생성, 인증/권한 관리, 드래프트 지원 같은 기능을 각각 구현해야 한다. 개발자들은 데이터베이스 테이블을 수동으로 정의하고, CRUD 로직을 반복 작성하며, 여러 어댑터(OData, REST, 메시징)를 연결해야 하는 복잡성을 겪고 있다.
Technical Solution
- CDS 모델링 언어를 단일 소스 오브 트루스로 도입: .cds 파일에서 엔티티, 타입, 연관관계, 서비스 정의, 어노테이션을 한 곳에 작성하면 CSN(JSON), EDMX 메타데이터, Java 인터페이스, SQL 테이블이 자동 생성됨
- CQN(CAP Query Notation) 쿼리 API로 데이터베이스 추상화: Raw SQL 대신 CQN을 사용하면 인증, 드래프트, 다국어 지원 같은 CAP 런타임 기능이 자동으로 적용됨
- @Before/@On/@After 이벤트 핸들러 모델로 비즈니스 로직 실행: @Before(검증·변환), @On(핸들러 대체), @After(후처리) 세 단계에서 커스텀 로직을 삽입해 제네릭 CRUD 핸들러를 확장
- OData V4, REST, 메시징 어댑터를 제네릭 이벤트 프로세서로 통합: 모든 요청이 CQN 이벤트로 변환되어 단일 이벤트 프로세싱 파이프라인을 거침
- Spring Boot의 DI, 자동 설정, 보안, 트랜잭션 관리를 기반으로 구축: CAP는 Spring Boot 레이어 위에서 동작하므로 기존 Spring 생태계 기능 활용 가능
Key Takeaway
CAP Java는 .cds 도메인 모델을 중심으로 메타데이터, CRUD 로직, 인증, 다국어 지원을 자동 생성함으로써 엔터프라이즈 애플리케이션의 보일러플레이트 코드를 최소화하고, CQN 추상화와 이벤트 핸들러 패턴으로 Spring Data JPA 없이도 완전한 데이터 접근 계층을 제공한다. Spring Boot 개발자가 CAP를 도입할 때는 Raw SQL과 Spring Data를 피하고 CQN 및 @Before/@On/@After 모델을 엄격히 준수해야 권한, 드래프트, 트랜잭션 관리 같은 런타임 기능이 정상 작동한다.
실천 포인트
CAP Java를 도입하는 백엔드 팀에서는 .cds 파일을 도메인 모델의 단일 소스로 삼고, 커스텀 비즈니스 로직은 @Before(입력 검증)→@On(외부 API 호출 등 핸들러 대체)→@After(결과 변환) 순서의 이벤트 핸들러에만 작성하며, 모든 데이터 접근을 CQN 쿼리 API를 통해 수행하면, 인증·권한 필터, 드래프트 상태 관리, 자동 타임스탬프 입력, OData 메타데이터 생성을 프레임워크가 자동 처리해준다.