프로그래밍 공부

Spring Boot - 임베디드 서버 본문

Programming/Spring

Spring Boot - 임베디드 서버

khj1999 2025. 2. 11. 22:46

🚀 Spring Boot - 임베디드 서버(Embedded Server)

Spring Boot는 내장 웹 서버(Embedded Server)를 제공하여 별도의 WAS(Web Application Server) 설치 없이 실행할 수 있다.

기본적으로 Tomcat이 내장되어 있지만, Jetty나 Undertow로 변경할 수도 있다!


1️⃣ 임베디드 서버란?

내장형(Embedded) 웹 서버란 애플리케이션 내부에 포함된 웹 서버로, 별도로 설치하지 않아도 Spring Boot 애플리케이션과 함께 실행되는 서버.

기존 Spring MVC

  • Tomcat, JBoss 등의 WAS를 설치하고 프로젝트를 배포(WAR)해야 했음
  • 서버 설정이 필요하고 배포 과정이 복잡했음

Spring Boot

  • Tomcat, Jetty, Undertow가 애플리케이션 내부에 포함됨
  • java -jar 명령어만으로 실행 가능
  • 배포가 간편하고, 마이크로서비스(MSA)와 클라우드 환경에서 유리함

2️⃣ Spring Boot의 기본 내장 서버 - Tomcat

Spring Boot는 기본적으로 Apache Tomcat(톰캣)을 내장 서버로 사용.

📌 기본 포트: 8080

🛠 실행하면 내장 서버가 자동 실행됨

./gradlew bootRun  # Gradle
mvn spring-boot:run  # Maven
java -jar myapp.jar  # 실행 가능한 JAR 배포

📌 실행 후 브라우저에서 http://localhost:8080으로 접근하면 서버가 동작 중인 걸 확인할 수 있다.


3️⃣ 임베디드 서버 변경하는 방법

🔹 1. 포트 변경하기

Spring Boot의 기본 포트 8080을 다른 포트로 변경하려면,

src/main/resources/application.properties에서 설정.

server.port=9090

👉 이제 **[http://localhost:9090에서](http://localhost:9090%EC%97%90%EC%84%9C/) 서버가 실행됨.


🔹 2. 내장 서버를 Jetty로 변경하기

Spring Boot는 기본적으로 Tomcat을 사용하지만, Jetty나 Undertow로 변경할 수도 있다.

Tomcat 제거 후 Jetty 추가 (Gradle 예시)

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-web'
    implementation 'org.springframework.boot:spring-boot-starter-jetty'  // Jetty 추가
    implementation 'org.springframework.boot:spring-boot-starter-tomcat' // Tomcat 제거
}

👉 Jetty 서버가 내장 서버로 실행됨.

Maven 사용 시

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    <exclusions>
        <exclusion>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
        </exclusion>
    </exclusions>
</dependency>

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

👉 mvn spring-boot:run 하면 Jetty가 실행됨.


🔹 3. 내장 서버 비활성화하기

Spring Boot 애플리케이션에서 내장 서버를 끄고, 외부 Tomcat이나 다른 WAS에 배포할 수도 있다.

방법 1: application.properties에서 설정

spring.main.web-application-type=none

방법 2: SpringBootApplication에서 설정

@SpringBootApplication
public class MyApplication {
    public static void main(String[] args) {
        new SpringApplicationBuilder(MyApplication.class)
            .web(WebApplicationType.NONE)  // 내장 서버 비활성화
            .run(args);
    }
}

4️⃣ 내장 서버 사용의 장점

1. WAS 설치 없이 실행 가능

  • 기존처럼 Tomcat, Jetty 등의 WAS를 따로 설치할 필요 없음
  • 단순히 java -jar myapp.jar 명령어로 실행 가능

2. 배포가 간편함

  • WAR 파일이 아닌 JAR 파일로 패키징하여 배포할 수 있음
  • CI/CD 환경에서도 간단하게 배포 가능

3. 독립 실행형 애플리케이션

  • Spring Boot 애플리케이션이 자체적으로 서버 역할을 할 수 있어서 마이크로서비스(MSA)에 적합

4. 클라우드 및 컨테이너 환경에서 유리함

  • Docker, Kubernetes 환경에서 가볍게 실행 가능
  • 클라우드 플랫폼(AWS, GCP 등)과 쉽게 연동 가능

🎯 정리

Spring Boot는 기본적으로 내장 서버(Embedded Tomcat)를 사용함

기본 포트는 8080이며, 변경 가능 (server.port=9090)

Jetty, Undertow로 변경 가능 (Tomcat 제거 후 변경)

내장 서버를 비활성화하고 외부 WAS로 배포 가능

배포 및 실행이 간편하고, 마이크로서비스 및 클라우드 환경에서 유리함

🚀 Spring Boot의 내장 서버 덕분에 빠르게 개발 & 배포할 수 있다! 🔥

Comments