[SpringBoot] SpringBoot 운영하기

Cover image

SpringBoot 운영하기

스프링 부트는 애플리케이션 운영 환경에서 유용한 기능을 제공한다. 스프링 부트가 제공하는 엔드포인트와 메트릭스 그리고 그 데이터를 활용하는 모니터링 기능에 대해 알아보기.


Spring Actuator

스프링부트 Actuator 소개

https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#production-ready-endpoints

  • 의존성 추가
  • spring-boot-starter-actuator

애플리케이션의 각종 정보를 확인할 수 있는 Endpoints

  • 다양한 Endpoints 제공.
  • JMX 또는 HTTP를 통해 접근 가능 함.
  • shutdown을 제외한 모든 Endpoint는 기본적으로 활성화 상태.
  • 활성화 옵션 조정

    • management.endpoints.enabled-by-default=false
    • management.endpoint.info.enabled=true

JMX와 HTTP

JConsole 사용하기

VisualVM 사용하기

HTTP 사용하기

  • /actuator
  • health와 info를 제외한 대부분의 Endpoint가 기본적으로 비공개 상태
  • 공개 옵션 조정

    • management.endpoints.web.exposure.include=*

      • 단 이는, 위험함.
      • spring securtiy를 적용하는 것도 한 방법.
    • management.endpoints.web.exposure.exclude=env,beans

스프링 부트 어드민

  • 아래는 반드시 스프링 security를 해야한다. 너무 민감한 정보들이 많다.

https://github.com/codecentric/spring-boot-admin 스프링 부트 Actuator UI 제공 어드민 서버 설정

<dependency>
  <groupId>de.codecentric</groupId>
  <artifactId>spring-boot-admin-starter-server</artifactId>
  <version>2.2.4</version>
</dependency>

@EnableAdminServer
  • 2.0.1 에서 안되서 버전을 2.2.4로 버전업 시켰다.(client도 마찬가지로 진행하였음)

클라이언트 설정

<dependency>
  <groupId>de.codecentric</groupId>
  <artifactId>spring-boot-admin-starter-client</artifactId>
  <version>2.2.4</version>
</dependency>

spring.boot.admin.client.url=http://localhost:8080
management.endpoints.web.exposure.include=*

스프링 마무리

스프링 부트 원리

  • 의존성 관리
  • 자동 설정
  • 내장 웹 서버
  • JAR 패키징

스프링 부트 활용

  • 스프링 부트 핵심 기능
  • 다양한 기술 연동

스프링 부트 운영

  • Actuator
  • 스프링 부트 어드민