Spring

Spring Boot를 이용한 배포 및 운영

Spring Boot는 애플리케이션의 배포와 운영을 간편하게 만들어주는 다양한 기능을 제공합니다. 이 글에서는 Spring Boot 애플리케이션을 빌드하고 배포하는 방법, 그리고 운영 중에 유용한 기능들에 대해 설명하겠습니다.

10.1 Spring Boot 애플리케이션 빌드 및 배포

개념 설명

Spring Boot는 애플리케이션을 독립 실행형 JAR 파일 또는 WAR 파일로 빌드할 수 있게 해줍니다. 이를 통해 외부 서버 없이도 애플리케이션을 실행할 수 있습니다.

주요 컴포넌트

  • Spring Boot Maven Plugin: Maven을 사용하여 Spring Boot 애플리케이션을 빌드하고 실행할 수 있습니다.
  • Spring Boot Gradle Plugin: Gradle을 사용하여 Spring Boot 애플리케이션을 빌드하고 실행할 수 있습니다.

예제 코드

Maven 설정 (pom.xml)

<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.example</groupId>
    <artifactId>spring-boot-example</artifactId>
    <version>1.0.0</version>
    <packaging>jar</packaging>
 
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.7.0</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
 
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    </dependencies>
 
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>

설명:

  • spring-boot-starter-parent: Spring Boot 프로젝트의 기본 설정을 제공합니다.
  • spring-boot-starter-web: 웹 애플리케이션 개발을 위한 기본 의존성을 제공합니다.
  • spring-boot-maven-plugin: Spring Boot 애플리케이션을 빌드하고 실행하기 위한 Maven 플러그인입니다.

빌드 및 실행

# 애플리케이션 빌드
mvn clean package
 
# 애플리케이션 실행
java -jar target/spring-boot-example-1.0.0.jar

Gradle 설정 (build.gradle)

plugins {
    id 'org.springframework.boot' version '2.7.0'
    id 'io.spring.dependency-management' version '1.0.11.RELEASE'
    id 'java'
}
 
group = 'com.example'
version = '1.0.0'
sourceCompatibility = '11'
 
repositories {
    mavenCentral()
}
 
dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-web'
    testImplementation 'org.springframework.boot:spring-boot-starter-test'
}
 
tasks.named('test') {
    useJUnitPlatform()
}

빌드 및 실행

# 애플리케이션 빌드
./gradlew build
 
# 애플리케이션 실행
java -jar build/libs/spring-boot-example-1.0.0.jar

설명:

  • org.springframework.boot: Spring Boot 프로젝트의 기본 설정을 제공합니다.
  • spring-boot-starter-web: 웹 애플리케이션 개발을 위한 기본 의존성을 제공합니다.
  • spring-boot-starter-test: 테스트 관련 의존성을 제공합니다.

10.2 Spring Boot Actuator

개념 설명

Spring Boot Actuator는 애플리케이션의 상태를 모니터링하고 관리하기 위한 다양한 기능을 제공합니다. 이는 애플리케이션의 상태를 점검하고, 메트릭을 수집하며, 환경 설정을 확인하는 등의 작업을 수행할 수 있습니다.

주요 컴포넌트

  • /actuator/health: 애플리케이션의 상태를 점검합니다.
  • /actuator/info: 애플리케이션에 대한 기본 정보를 제공합니다.
  • /actuator/metrics: 애플리케이션의 메트릭을 제공합니다.

예제 코드

Maven 설정 (pom.xml)

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>
</dependencies>

Gradle 설정 (build.gradle)

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-actuator'
}

애플리케이션 속성 (application.properties)

management.endpoints.web.exposure.include=*

설명:

  • spring-boot-starter-actuator: Spring Boot Actuator 기능을 제공하는 의존성입니다.
  • management.endpoints.web.exposure.include=*: 모든 Actuator 엔드포인트를 노출시킵니다.

컨트롤러 클래스

@RestController
public class HealthController {
 
    @GetMapping("/customHealth")
    public String customHealth() {
        return "Custom Health Check OK";
    }
}

설명:

  • @RestController: 이 클래스가 RESTful 웹 서비스의 컨트롤러임을 나타냅니다.
  • @GetMapping("/customHealth"): /customHealth 경로에 대한 GET 요청을 처리합니다.

실행 및 확인

애플리케이션을 실행한 후, 다음 URL을 통해 Actuator 엔드포인트에 접근할 수 있습니다:


Spring Boot를 이용하여 애플리케이션을 빌드하고 배포하는 방법, 그리고 운영 중에 유용한 Actuator 기능을 사용하는 방법을 살펴보았습니다. 이를 통해 애플리케이션의 배포와 운영을 간편하고 효율적으로 관리할 수 있습니다.

다음 글에서는 Spring Cloud를 사용한 마이크로서비스 아키텍처에 대해 자세히 알아보겠습니다.

On this page