프로덕션 준비 기능

프로덕션 준비 기능이란
프로덕션 환경을 위해 준비해야 하는 비 기능적 요소이다.

결국 개발 하는 이유가 사용자들에게 서비스를 제공하는 것이고
장애는 항상 발생한다.
(라고 지난 학기 데이터베이스 수업에서 아주 여러번 들었다)

그래서 현재 진행중인 졸업 프로젝트에서 구현해 보려고 알아보던 중
Spring Boot에서 제공하는 actuator를 알게 되었다.

Actuator

image

시스템을 움직이거나 제어하는데 쓰이는 기계장치라는 뜻으로
기계공학 전공자들이 좋아하게 생겼다

엔드포인트
https://docs.spring.io/spring-boot/reference/actuator/endpoints.html#actuator.endpoints 주요 엔드포인트

  • bean : 스프링 컨테이너에 등록된 스프링 빈을 보여준다.
  • health : 애플리케이션 헬스 정보를 보여준다.
  • info : 애플리케이션 정보를 보여준다.
  • loggers : 애플리케이션 로거 설정을 보여주고 서버 재시작 없이 logging level 변경 가능.
  • httpexchanges : HTTP 호출 응답 정보를 보여준다.

의존성

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

application.yml

management:
  info:
    java:
      enabled: true
    os:
      enabled: true
    env:
      enabled: true
  endpoint:
    health:
#      show-details: always
      show-components: always

  endpoints:
    web:
      exposure:
        include: "*"


info:
  app:
    name: hello-actuator
    company: gothax

Prometheus, Grafana

Metric, Micrometer

Metric이란
DB connection, CPU, memory 지표등을 숫자로 표현한 것

그런데 모니터링 툴마다 포맷이 다른데
이걸 표준화 시킨것이 Micrometer이다.

dimensional-first metrics collection facade 이라고 하는데
Facade에 대해서도 알아봐야겠다.

이 메트릭 정보를 micrometer를 통해 Prometheus가 WAS에서 수집
DB에 저장.

Image

저장된 정보를 시각화 해서
dashboard로 보여주는 것이 Grafana.

실질적인 고민

작성할 코드도 없고 사실 별거 없다.

김영한님을 따라서 해보기는 했는데
모니터링 구축해봤다고 하긴 부끄러운 수준이고
실제로 프로젝트에서 해봐야 할 것 같다.
운영 중에 장애가 생겨서, 지표들을 눈으로 확인하다 보면
중요성을 체감하게 될 것 같다.

엔드포인트로 정보를 노출하는 것이므로
보안에 신경을 써야한다고 하는데,
실질적으로 어떻게 해야하는 것인지 감이 안온다.

현재 진행중인 프로젝트에서는
버전을 올려가며 MSA로 전환할 계획이 있어서

네이버 오픈소스인
Pinpoint를 적용해 볼 것 같다.

summary 카테고리의 다른 글

Categories:

Updated: