-
[SAP BTP] Java를 BTP에 배포하기 with Spring BootSAP/BTP 2025. 6. 17. 16:53
자바로 작성한 코드를 BTP에 배포해 API 통신을 해야하는 일이 있어 Spring Boot로 구축하고 BTP에 배포해 보았습니다. 아래의 튜토리얼을 많이 참고해 기본 세팅부터 배포까지 튜토리얼을 따라서 정리해보았습니다.
🏃Create an Application with SAP Java Buildpack 2
https://developers.sap.com/tutorials/btp-cf-buildpacks-java-create.html
📚사전 준비
굉장히 많은 준비사항.. 해당 튜토리얼에서 파란색 글씨를 클릭해 링크에 들어가면 해당 안내나 다운로드 페이지로 안내됩니다.
BTP Service
가장 기초적인 준비인 BTP Trial 계정을 만들어 줍니다.
Cloud Foundry & space 생성
BTP에 가입했다면 애플리케이션을 배포할 공간을 Cloud Foundry에서 생성해 확보합니다.
cf CLI 설치
cf는 Cloud Foundry의 약자로 cf 동작을 할 수 있게 해주는 CLI를 설치해줍니다. 해당 튜토리얼에서는 cf login, cf push 등 사용합니다.
JDK for SapMachine 21
Sap에서 Java를 사용하기 위해서는 반드시 SapMachine을 설치해줘야 하며, 포스트 작성일 기준으로 21 버전을 사용하였습니다. JDK 설치 후 데스크탑의 '환경 변수'에서 PATH와 JAVA_HOME을 등록하셔야 합니다.
Apache Maven
아파치와 메이븐도 생성 및 설정해 주도록 합니다.
IDE
해당 튜토리얼에서는 Visual Studio를 사용하였으며, 저는 Intellij로 수행했습니다.
사전 준비하느라 고생하셨습니다. 해당 튜토리얼은 사전 준비가 절반인 거 같습니다.
🚩Step 1. Cloud Foundry 로그인
cf login -a {Your End Point} --sso
튜토리얼과 다르게 저는 sso 방식으로 로그인 하였습니다. BTP Cockpit에서 Cloud Foundry를 생성한 계정의 End Point를 확인해 넣어주시면 됩니다.
🚩Step 2. Spring Boot 생성
홈페이지에 접속하여 Spring Boot를 생성해 줍니다. 튜토리얼에서는 Spring Boot의 버전을 3.3.5v로 하라고 기재되어 있으나, 3.5.0으로 생성해도 이상 없었습니다.
🚩Step 3. 프로젝트 설정
우선 해당 애플리케이션을 Cloud Foundry로 배포하기 위한 설명서를 작성해야합니다. 즉, manifest.yml 파일을 생성합니다. 이때, 파일을 생성하는 위치는 pom.xml과 같은 곳으로 설정합니다.
설명서의 내용은 다음과 같습니다.
manifest.yml
--- applications: - name: helloworld random-route: true path: ./target/java-tutorial-0.0.1-SNAPSHOT.jar memory: 1024M buildpacks: - sap_java_buildpack_jakarta env: TARGET_RUNTIME: tomcat JBP_CONFIG_COMPONENTS: "jres: ['com.sap.xs.java.buildpack.jdk.SAPMachineJDK']" JBP_CONFIG_SAP_MACHINE_JDK : "{ version: 21.+ }"
HelloWorldApplication.java
package com.example.java_tutorial; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class HelloWorldApplication { public static void main(String[] args) { SpringApplication.run(HelloWorldApplication.class, args); System.out.println("Hello World!"); } }
MainController.java
package com.example.java_tutorial; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RestController @RequestMapping(path = "") public class MainController { @GetMapping(path = "") public ResponseEntity<String> getDroneMedications() { return new ResponseEntity<String>("Hello World!", HttpStatus.OK); } }
HelloWorldApplication와 MainController를 위와 같이 설정해 주며, 간단한 동작 순서는 아래와 같습니다.
- 스프링 실행 시, @SpringBootApplication 어노테이션을 읽어 Spring Boot에 관련된 많은 설정을하고 HelloWorldAppication.java를 실행합니다.
- localhost8080에 접속하면 MainController에서 @RequestMapping(path = "")과 @GetMapping(path = "")이 인식해 "Hello World!"를 출력하게 됩니다.
배포전에 HelloWorldApplication.java 파일을 Run 해보고 되는지 확인해 오류를 최소화할 수 있습니다.
🚩Step 4. 애플리케이션 배포
이제 local에서 동작하는 것을 확인하였으니 BTP에 배포해 보겠습니다.
먼저 cmd나 bash로 java-tutorial 폴더에 위치해 줍니다. 그리고 아래 명령어를 동작해 .jar 파일을 생성해 줍니다.
clean 명령어 동작 시, target 폴더를 비우기 때문에 관련된 파일이 열려 있으면 정상 동작하지 않습니다.
/java-tutorial
mvn clean install
우리는 위에서 manifest에 어떤 파일을 Cloud Foundry에 배포할 것인지 기재해 놨습니다.
실제로 배포되는 파일은 해당 jar 파일 하나라는 의미로 해당 파일이 잘 생성 되었는지 확인해줍니다.
이제 해당 jar 파일을 아래 코드를 통해 배포해 줍니다. 이때 위치도 위와 동일하게 java-tutorial입니다.
cf push
배포가 완료되면 아래와 같은 주소가 나오며, 해당 주소(개인마다 상이함)로 접속 시, API 호출 값이 출력되는 것을 확인할 수 있습니다. Trial에서의 애플리케이션은 하루마다 종료되어 다음날에는 Cockpit에서 Cloud Foundry에 접속해 애플리케이션을 실행 시켜주셔야 합니다.
https://helloworld-noway-panda.cfapps.eu20.hana.ondemand.com
CDS로도 Java를 구현할 수 있지만, 이미 Java 코드를 작성한 상태로 코드의 수정없이 Spring Boot로 생성 후 Cloud Foundry에 배포해 보았습니다. 실제 구동 화면은 민감정보가 들어있어 화면 캡처가 부실한 점 양해 부탁 드립니다.
'SAP > BTP' 카테고리의 다른 글
[SAP BTP] 🚌Event Bus로 여러 View를 동시에 관리하기! (0) 2025.05.22 [SAP BTP] CAP 서비스 만들기with Node.js(2) (0) 2025.05.13 [SAP BTP] CAP 서비스 만들기with Node.js(1) (1) 2025.05.08 [SAP BTP] ODM과 CDS란⁉️ (1) 2025.05.08 💡BTP란? (0) 2025.05.08