1. Exploring the Fundamental Concepts
CAP 프레임워크: 기술적 특징과 장점
CAP(Capability-based Architecture) 프레임워크는 SAP이 제공하는 강력한 애플리케이션 개발 플랫폼으로, 다양한 오픈 소스 기술과 SAP 기술을 결합하여 제공됩니다. 이 글에서는 CAP 프레임워크의 주요 기술적 특징과 장점을 살펴보겠습니다.
1.1. 런타임 환경: Node.js와 Java
CAP는 Node.js와 Java 두 가지 런타임 환경을 지원합니다. 이는 개발자들이 자신에게 익숙한 언어와 환경에서 애플리케이션을 개발할 수 있도록 돕습니다.
- Node.js SDK: CAP의 Node.js SDK는 Express를 기반으로 하여 Node.js의 풍부한 생태계를 활용할 수 있게 합니다. 개발자들은 Node.js의 다양한 라이브러리와 패키지를 활용하여 효율적인 개발을 할 수 있습니다.
- Java SDK: Java SDK는 Spring Framework를 활용하여 강력한 엔터프라이즈 애플리케이션을 구축할 수 있도록 설계되었습니다. 이는 Java 개발자들이 쉽게 사용할 수 있도록 설계되었습니다.
1.2. 개발 환경
CAP는 개발자들이 애플리케이션을 개발하고 배포하기 위한 다양한 도구를 제공합니다.
- SAP Business Application Studio와 Visual Studio Code가 지원됩니다. 이 환경들은 CAP 애플리케이션의 개발 및 배포를 용이하게 합니다.
1.3. Core Data Services (CDS)
CAP의 핵심 기술 중 하나는 **Core Data Services (CDS)**입니다. CDS는 도메인 모델과 서비스 정의를 선언적으로 캡처하는 모델링 언어로, 데이터 모델을 쉽게 정의하고 관리할 수 있게 합니다. CDS로 정의된 데이터 모델은 SAP HANA와 다른 데이터베이스에 배포할 수 있습니다.
1.4. 데이터베이스 지원
CAP는 SAP HANA와 다른 널리 사용되는 데이터베이스에 대한 지원을 제공합니다. 이는 개발자들이 다양한 데이터베이스 환경에서 애플리케이션을 쉽게 배포할 수 있도록 돕습니다.
1.5. 서비스 SDK
CAP의 서비스 SDK는 Node.js와 Java 모두에서 SAP Business Technology Platform의 서비스(인증, 권한 부여 등)를 구현할 수 있는 라이브러리를 제공합니다. 이는 개발자들이 강력한 백엔드 서비스를 쉽게 통합할 수 있도록 돕습니다.
1.6. UI 및 프론트엔드 지원
CAP는 SAP Fiori 사용자 경험 패러다임을 통해 애플리케이션의 서비스를 소비하고 시각화할 수 있도록 지원합니다. Fiori elements 프론트엔드에 대한 기본 지원을 제공하며, 주석을 사용하여 UI 렌더링에 대한 힌트를 줄 수 있습니다. 또한, React나 Vue와 같은 다른 프론트엔드 기술도 CAP 서비스를 소비할 수 있습니다.
결론
CAP 프레임워크는 강력한 기술적 특징과 유연한 개발 환경을 제공하여, 개발자들이 효율적으로 애플리케이션을 개발하고 배포할 수 있도록 돕습니다. 특히, Node.js와 Java를 모두 지원하며, 다양한 데이터베이스와 SAP 서비스를 쉽게 통합할 수 있는 기능은 CAP가 엔터프라이즈 애플리케이션 개발에 적합한 플랫폼임을 보여줍니다.
이렇게 블로그 형식으로 작성된 내용을 활용하여 독자들에게 CAP 프레임워크의 장점과 특징을 효과적으로 전달할 수 있습니다.
2. Setting the Scope
CAP 프레임워크는 강력한 애플리케이션 개발 플랫폼으로, 다양한 기술적 선택지를 제공합니다. 이 글에서는 CAP에서 런타임 환경, 개발 도구, Core Data Services (CDS), 데이터베이스 선택에 대해 살펴보겠습니다.
2.1. 런타임 환경 선택
CAP는 Node.js와 Java 두 가지 런타임 환경을 지원합니다. 각 환경은 고유한 장점을 가지고 있으며, 프로젝트 요구 사항, 팀의 전문성, 특정 사용 사례에 따라 선택해야 합니다. Node.js는 더 널리 사용되므로, 이 글에서는 Node.js에 대한 설명을 중점적으로 다루겠습니다.
Java 런타임 환경에 대한 정보는 CAP 문서에서 확인할 수 있습니다.
2.2. 개발 도구 선택
CAP 애플리케이션 개발에는 Visual Studio Code (VS Code)와 SAP Business Application Studio (BAS) 두 가지 도구를 사용할 수 있습니다.
- VS Code: 마이크로소프트에서 개발한 가벼운 코드 편집기로, 다양한 플러그인을 통해 CAP 개발 요구 사항을 충족시킬 수 있습니다. 그러나 개발자는 Node.js, Git, SQLite, Java, Maven, CAP의 CDS 개발 키트 등을 로컬에 설치하고 관리해야 합니다.
- BAS: SAP Business Technology Platform (BTP)에서 제공하는 클라우드 기반 개발 환경으로, CAP 개발을 위한 사전 구성된 환경을 제공합니다. BAS는 SAP 도구와 서비스와의 통합을 통해 SAP 솔루션 개발을 원활하게 지원합니다. 업데이트와 개선 사항은 SAP에서 관리하므로, 항상 최신 상태로 유지됩니다.
개발 환경의 선택은 개인이나 조직의 선호도, 도구에 대한 익숙함, 프로젝트 요구 사항에 따라 달라질 수 있습니다. 이 글에서는 BAS를 사용하여 CAP 개발을 시작할 수 있도록 설명하겠습니다.
2.3. Core Data Services (CDS) 활용
CDS는 CAP에서 데이터와 서비스를 정의, 확장, 상호작용하는 데 핵심적인 역할을 합니다. CDS는 데이터 구조, 관계, 의미를 정의하여 데이터 모델을 명확하게 표현할 수 있는 데이터 모델링 언어입니다.
CDS는 데이터 모델을 정의하는 것 외에도 서비스를 정의할 수 있습니다. 이는 개발자가 CDS 정의에서 데이터가 어떻게 접근되고 처리되는지를 직접 지정할 수 있음을 의미합니다.
CDS 정의에 따라 CAP는 데이터베이스 스키마, OData 서비스, 애플리케이션 로직의 일부를 자동으로 생성할 수 있습니다. 이는 개발 과정을 크게 단축시킵니다.
2.4. 데이터베이스 선택
CAP는 SAP HANA Cloud를 프로덕션 환경에서 권장하는 데이터베이스로 사용합니다. 그러나 개발 중에는 가벼운 SQLite를 사용하여 로컬 데이터베이스로 테스트할 수 있습니다.
이로 인해 개발자는 로컬 환경에서 쉽게 CAP 애플리케이션을 개발하고, 클라우드 서비스로의 배포 없이도 테스트할 수 있습니다. CAP는 개발, 프로덕션, 하이브리드와 같은 다양한 환경에 맞는 구성 프로필을 제공하여, 로컬 설정과 클라우드 서비스 설정 간의 전환을 쉽게 할 수 있습니다.
이 글에서는 SQLite와 플랫폼 서비스의 모의 환경을 사용하여 설명하겠습니다. 하이브리드 테스트에 대한 정보는 CAP 문서에서 확인할 수 있습니다.
2.5. CAP의 기타 기능
CAP와 SAP Fiori Elements
CAP는 SAP Fiori Elements 기반의 사용자 인터페이스를 기본적으로 지원합니다. SAP Fiori Elements는 SAPUI5 프레임워크를 기반으로 한 일반적인 애플리케이션 패턴과 UI 요소의 모음입니다. 이는 SAP 애플리케이션 전반에 걸쳐 일관된 사용자 경험을 제공하고, 미리 정의된 템플릿을 사용하여 개발 과정을 가속화하는 것을 목표로 합니다.
개발자는 메타데이터 주석을 제공하여 런타임에 UI를 생성할 수 있으며, 추가적인 JavaScript 코드가 필요하지 않습니다.
프로젝트 생성 및 개발 단순화
CAP는 프로젝트를 몇 초 내에 시작할 수 있도록 지원합니다. 이를 위해 많은 플랫폼 기능에 대한 모의 환경을 제공하여, 최소한의 개발 환경 복잡성으로 빠른 개발-테스트-실행 주기를 가능하게 합니다.
예를 들어, 프로덕션 환경에서는 플랫폼의 해당 서비스를 사용하여 사용자 인증 및 권한 부여를 처리하지만, 개발 중에는 모의 인증을 사용할 수 있습니다. 또한, CAP는 SAP S/4HANA 백엔드와 같은 API를 가져와 로컬에서 실행하는 모의 환경을 통해 통합 시나리오를 단순화합니다.
이제 CAP 프레임워크의 기본적인 이해를 바탕으로, SAP BAS를 사용하여 새로운 CAP 프로젝트를 생성하는 방법에 대해 살펴보겠습니다.
이렇게 블로그 형식으로 정리된 내용을 통해 독자들이 CAP 프레임워크의 주요 기능과 장점을 쉽게 이해할 수 있도록 도와줄 수 있습니다.
3. Creating a CAP Project
3.1. SAP BAS에서 DevSpace 생성 및 CAP 프로젝트 생성
SAP Business Application Studio (BAS)를 사용하여 애플리케이션을 개발하려면 먼저 DevSpace를 생성해야 합니다. DevSpace는 BAS에서 애플리케이션을 개발하기 위해 필요한 도구, 기능, 리소스를 포함하는 개발 환경입니다. CAP 애플리케이션을 개발하기 위해서는 Full-Stack Cloud Application 유형의 DevSpace를 생성합니다. 이 DevSpace는 Java 또는 Node.js를 기반으로 SAP S/4HANA를 CAP와 SAP Fiori로 확장하여 비즈니스 서비스와 비즈니스 애플리케이션을 개발하는 데 적합합니다.
DevSpace 생성 및 CAP 프로젝트 생성 과정

- DevSpace 생성:
- BAS에서 상단 왼쪽의 햄버거 메뉴를 클릭하고, File > New DevSpace를 선택하여 Full-Stack Cloud Application 유형의 DevSpace를 생성합니다.
- CAP 프로젝트 생성:
- 생성한 DevSpace를 열고, 햄버거 메뉴에서 File > New Project from Template를 선택합니다.
- CAP Project 템플릿을 선택하여 마법사를 시작합니다.
- 생성된 프로젝트에는 CAP 애플리케이션을 바로 시작할 수 있는 필요한 폴더, 파일, 구성이 포함되어 있습니다.

CAP 프로젝트 구조
생성된 CAP 프로젝트는 다음과 같은 폴더와 파일로 구성됩니다:

- package.json: Node.js 패키지 매니페스트 파일로, 프로젝트의 의존성을 관리하고, 스크립트를 정의하며, 프로젝트 특정 설정을 지정하는 데 사용됩니다. NPM(Node Package Manager)에서는 이 파일이 프로젝트의 구조와 의존성을 이해하는 데 필수적입니다.
- @sap/cds 패키지: CAP의 API를 포함하며, CAP의 핵심 기능을 제공합니다.
- express 패키지: Node.js용 웹 프레임워크로, SAP의 CAP 구현이 이에 기반하고 있습니다.
- 두 의존성을 설치하려면 터미널에서 npm install 명령을 실행합니다.
- db 폴더: CDS 정의가 포함되어 있으며, 이는 데이터베이스 스키마(테이블, 뷰, 연관 관계 등)를 나타냅니다. 이는 CAP 애플리케이션의 데이터 지속성 계층입니다. 여기서 정의된 도메인 모델은 SAP HANA Cloud 또는 SQLite(로컬 개발용)와 같은 데이터베이스에서 실제 지속성을 생성하는 데 사용됩니다.
- srv 폴더: 서비스 관련 콘텐츠가 포함되어 있으며, 일반적으로 서비스 계층과 사용자 정의 비즈니스 로직을 위한 CDS 정의가 포함됩니다.
- app 폴더: UI 관련 콘텐츠가 포함되어 있으며, 여기서 개발자는 CAP 애플리케이션의 사용자 인터페이스를 구현합니다. 이는 주로 SAP Fiori elements 또는 자유 형식의 SAP UI5 앱을 사용하여 구현됩니다.
이렇게 생성된 CAP 프로젝트를 통해 개발자는 빠르게 애플리케이션 개발을 시작할 수 있습니다.
3.2. SAP Business Application Studio에서 Hello World 애플리케이션 생성
이번 데모에서는 SAP Business Application Studio를 사용하여 간단한 "Hello World" 애플리케이션을 생성하는 방법을 설명합니다. 이를 위해서는 먼저 DevSpace를 생성해야 합니다.
1. DevSpace 생성
- **SAP Business Application Studio**를 열고, Create Dev Space를 선택합니다.
- DevSpace에 이름을 입력하고, Full Stack Cloud Application을 애플리케이션 유형으로 선택합니다.
- **Create Dev Space**를 클릭하여 DevSpace를 생성합니다. 생성에는 약간의 시간이 걸립니다.
- DevSpace의 상태가 Starting에서 Running으로 변경되면, DevSpace 이름을 선택하여 이를 엽니다.
2. CAP 프로젝트 생성
- 메뉴에서 File > New Project from Template를 선택합니다.
- CAP Project 템플릿을 선택하고 마법사를 시작합니다.
- 프로젝트 이름을 입력하고 Finish를 클릭합니다.
- 생성된 프로젝트에는 CAP 애플리케이션을 시작할 수 있는 필요한 폴더, 파일, 구성이 포함되어 있습니다.
3. HelloService 생성
- srv 폴더에서 hello-service.cds라는 파일을 생성합니다. 이를 위해 srv 폴더를 마우스 오른쪽 버튼으로 클릭하고 New File을 선택한 후 파일 이름을 입력합니다.
- 편집기에 다음 코드를 입력하여 HelloService라는 서비스를 정의합니다. 이 서비스는 sayHello라는 함수를 포함하며, 이 함수는 String 타입의 name을 입력으로 받고 String 타입의 값을 반환합니다.
service HelloService {
function sayHello(name : String) returns String;
}
4. 서비스 구현
- srv 폴더에서 hello-service.js라는 파일을 생성합니다. 마찬가지로 srv 폴더를 마우스 오른쪽 버튼으로 클릭하고 New File을 선택한 후 파일 이름을 입력합니다.
- 편집기에 서비스를 구현하는 코드를 입력합니다.
const cds = require('@sap/cds');
class HelloService extends cds.ApplicationService {
sayHello(name) { return "Hello " + name; }
}
module.exports = HelloService;
5. 서비스 테스트
- Rust Client 확장을 사용하여 서비스를 테스트합니다. 이 확장은 SAP Business Application Studio에서 HTTP 요청을 보내고 응답을 직접 볼 수 있게 해줍니다.
- **test**라는 폴더를 생성하고, hello-service.http 파일을 생성합니다.
- 이 파일에 sayHello 함수를 호출하는 HTTP GET 요청을 입력합니다.
- 새 터미널을 열고 cds watch 명령을 실행하여 로컬 HTTP 서버를 시작합니다.
- 터미널 출력에서 서버가 시작되었음을 확인합니다.
- **Send Request**를 클릭하여 OData 서비스를 테스트합니다. 요청의 응답은 오른쪽에 표시됩니다.
- 서버 프로세스를 종료하려면 터미널에서 Ctrl+C를 누릅니다.
@baseUrl = http://localhost:4004/odata/v4
GET {{baseUrl}}/hello/sayHello(name='World')

이렇게 SAP Business Application Studio에서 간단한 "Hello World" 애플리케이션을 생성하고 테스트하는 과정을 완료했습니다.
깃허브도 참고 가능합니다.
git clone https://github.com/SAP-samples/cap-development-learning-journey.git
GitHub - SAP-samples/cap-development-learning-journey: Starter Template for the learning journey to get started with CAP.
Starter Template for the learning journey to get started with CAP. - SAP-samples/cap-development-learning-journey
github.com
git checkout 1_hello_world
4. 퀴즈
1. Core Data Services (CDS)에 대한 올바른 설명은 무엇인가요?
문제:
Which statements about Core Data Services (CDS) are correct?
There are two correct answers.
- CDS is used to declaratively capture domain models.
- CDS is a runtime environment for cloud applications.
- CDS is used to declaratively capture service definitions.
- CDS is used for real-time data analysis and reporting.
정답:
- CDS is used to declaratively capture domain models.
- CDS is used to declaratively capture service definitions.
설명:
CDS는 도메인 모델과 서비스 정의를 선언적으로 캡처하는 데 사용됩니다. 이는 SQL의 확장으로, 데이터 정의, 조작, 권한 제어를 포함합니다.
2. SAP Business Application Studio에서 CAP와 SAP Fiori로 비즈니스 서비스 및 애플리케이션을 개발하기 위해 어떤 유형의 DevSpace를 생성해야 하나요?
문제:
What kind of dev space do you create in SAP Business Application Studio to develop business services and business applications with SAP Fiori and CAP?
Choose the correct answer.
- SAP Fiori
- Full Stack Cloud Application
- SAP HANA Native Application
- SAP Mobile Application
- Basic
정답:
- Full Stack Cloud Application
설명:
Full Stack Cloud Application 유형의 DevSpace는 CAP와 SAP Fiori를 사용하여 비즈니스 서비스와 애플리케이션을 개발하는 데 적합합니다.
3. 이 학습 여정에서 중점을 둔 주제는 무엇인가요?
문제:
What topics does this learning journey focus on?
There are five correct answers.
- CAP Service SDK for Java
- SAP Business Application Studio as the development tool
- SQLite as the database
- Java runtime environment
- Core Data Services (CDS)
- Visual Studio Code as the development tool
- Node.js runtime environment
- Defining UIs based on SAP Fiori elements
- SAP HANA Cloud as the database
- CAP Service SDK for Node.js
정답:
- SAP Business Application Studio as the development tool
- SQLite as the database
- Core Data Services (CDS)
- Node.js runtime environment
- CAP Service SDK for Node.js
설명:
이 학습 여정은 SAP Business Application Studio, SQLite, CDS, Node.js 런타임 환경, CAP Service SDK for Node.js에 중점을 둡니다.
4. SAP Business Application Studio의 마법사를 통해 CAP 프로젝트를 생성할 때 기본적으로 생성되는 폴더는 무엇인가요?
문제:
Which folders are created by default in the project structure when a CAP project is generated via the wizard in SAP Business Application Studio?
There are three correct answers.
- srv
- auth
- test
- db
- scripts
- git
- app
정답:
- srv
- db
- app
설명:
CAP 프로젝트를 생성하면 기본적으로 srv, db, app 폴더가 생성됩니다.
5. CAP 애플리케이션의 개발 및 배포를 지원하는 개발 환경은 무엇인가요?
문제:
Which development environments are supported by SAP for the development and deployment of CAP applications?
There are two correct answers.
- SAP Web IDE
- Visual Studio Code
- WebStorm
- SAP Business Application Studio
- Eclipse
정답:
- Visual Studio Code
- SAP Business Application Studio
설명:
CAP 애플리케이션의 개발 및 배포를 지원하는 개발 환경으로는 Visual Studio Code와 SAP Business Application Studio가 있습니다.
6. CAP가 주석을 기반으로 기본 지원을 제공하는 프론트엔드 기술은 무엇인가요?
문제:
For which front-end technology does CAP offer out-of-the-box support based on annotations?
Choose the correct answer.
- React
- Business Server Pages
- Angular
- Vue
- SAP Fiori elements
정답:
- SAP Fiori elements
설명:
CAP는 SAP Fiori elements에 대한 기본 지원을 제공하며, 이는 주석을 통해 UI를 생성할 수 있습니다.
7. npm 패키지 @sap/cds-dk에서 새로운 CAP 프로젝트를 생성하는 데 사용할 수 있는 터미널 명령어는 무엇인가요?
문제:
Which terminal command from the npm package @sap/cds-dk can be used to generate a new CAP project?
Choose the correct answer.
- cds init
- cds gen
- cds create
- cds make
정답:
- cds init
설명:
새로운 CAP 프로젝트를 생성하는 데 사용할 수 있는 명령어는 cds init입니다.
8. SAP Business Application Studio에서 CAP 애플리케이션을 로컬에서 테스트하기 위해 HTTP 서버를 시작하는 터미널 명령어는 무엇인가요?
문제:
Which command do you execute in the terminal to start an HTTP server via which you can test a CAP application locally from the SAP Business Application Studio?
Choose the correct answer.
- cds start
- cds test
- cds try
- cds execute
- cds watch
정답:
- cds watch
설명:
CAP 애플리케이션을 로컬에서 테스트하기 위해 HTTP 서버를 시작하는 명령어는 cds watch입니다.
9. CAP에서 지원하는 런타임 환경은 무엇인가요?
문제: Which runtime environments are supported by CAP?
There are two correct answers.
- ABAP
- Java
- Python
- .NET
- Node.js
정답:
- Java
- Node.js
설명:
CAP는 Java와 Node.js 런타임 환경을 지원합니다.