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

운영형 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
💡
Log
문제의 원인을 추적할 수 있어야 한다
Slf4j 가 가장 최적화 되어있다
로깅 레벨은 보통 info 이상만 나오도록 운영에선 조절한다
Config
환경별 설정을 통해 구분한다
Profile 로 구분한다
운영에 비밀번호 같은 민감한 정보는 노출하지 않는다
AWS Parameter Store 같은 설정값 저장 관리를 이용한다
Share article