ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [SAP BTP] Java를 BTP에 배포하기 with Spring Boot
    SAP/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 생성

     

     

    https://start.spring.io

     

    홈페이지에 접속하여 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에 배포해 보았습니다. 실제 구동 화면은 민감정보가 들어있어 화면 캡처가 부실한 점 양해 부탁 드립니다.

     

     

     

     

Designed by Tistory.