inblog logo
|
LifeLog, DevLog
    Spring

    운영형 Spring 운용

    Actuator
    KYJTHEYJ's avatar
    KYJTHEYJ
    Jan 29, 2026
    운영형 Spring 운용
    Contents
    운영형 SpringHealth

    운영형 Spring

    프로덕트를 개발하고 운영 상태로 전환해보자
    프로덕트는 본인만 쓰는 서비스가 아닐테니 운영이 될 수 있도록 대응해야한다

    Health

    서버 상태를 확인하게 한다, 아래 같은 구분자를 사용한다

    • UP - 정상

    • DOWN - 문제 발생

    하지만, 서버 상태를 확인하게 할 수 있는 API 등이 있어야 한다
    어플리케이션이 작동하는 건 둘째 치더라도 DB는 수동으로 체크하려면
    그만큼 소스량이 늘어나는 것이 문제다

    이에 대해 스프링 부트는 수동 코드로 헬스체크를 하는 것에 대해서
    Actuator 라는 헬스체크 의존성으로 해결할 수 있다

    Actuator

    implementation 'org.springframework.boot:spring-boot-starter-actuator'

    의존성을 추가하면 DB가 있을 시 자동으로 체크한다
    (JPA, Redis, MongoDB 의 의존성을 통해 체크함)

    • 주요 엔드포인트

      • /actuator/health → 상태 확인용 (위험도 낮음) (기본 선언)

      • /actuator/info → 앱 정보 (위험도 낮음) (추가 선언 필요)

      • /actuator/env → 환경변수, 설정값 (위험도 높음) (추가 선언 필요)

    • 노출 범위 선언

      management.endpoints.web.exposure.include=health,info,env
      
      management:
        server:
          prot: 9090 # 별도 포트 (있다면)
        endpoints:
          web:
            base-path: /internal/actuator  # 경로 변경 (필요시)
            exposure:
              include: health, info, env # actuator 엔드포인트 공개 여부
        endpoint:
          env:
            show-values: never # env 정보들 노출 여부 (main 엔 절대로 공개 X)
        info:
          env:
            enabled: true # info 로 선언한 정보들의 노출 여부
      
      info:
        app:
          name: My Application
          version: 1.0.0
          description: TEST API 서버
        team:
          name: TEST Team
          email: test@test.com
      

    💡

    actuator의 선언 자체는 쉽지만, 외부 노출의 정도를 조절하는 것
    외에도 포트나 기본 주소를 바꾸고, 아예 인증된 사람들만 보도록
    조치하는 정도가 많아 기본 그대로 사용하는 경우는 거의 없다

    Log

    문제의 원인을 추적할 수 있어야 한다

    • Slf4j 가 가장 최적화 되어있다

    • 로깅 레벨은 보통 info 이상만 나오도록 운영에선 조절한다

    Config

    환경별 설정을 통해 구분한다

    • Profile 로 구분한다

    • 운영에 비밀번호 같은 민감한 정보는 노출하지 않는다

      • AWS Parameter Store 같은 설정값 저장 관리를 이용한다

    Share article
    Contents
    운영형 SpringHealth

    LifeLog, DevLog - https://github.com/KYJTHEYJ

    RSS·Powered by Inblog