북 스터디/스프링 부트 핵심가이드

액추에이터 & 서버 간 통신

EnoughTT 2023. 4. 23. 20:59

액추에이터

HTTP 엔드포인트나 JMX를 활용해 애플리케이션을 모니터링 하고 관리할 수 있는 기능 제공

* JMX (Java Management Extensions)

  실행 중인 애플리케이션으 상태를 모니터링하고 설정을 변경할 수 있게 해주는 API

  JMX를 통해 리소스 관리를 하려면 MBeans(Manage Bean)를 생성해야함

액추에이터 종속성 추가

액추에이터 기능을 사용하려면 애플리케이션에 spring-boot-starter-actuaor 모듈의 종속성을 추가해야함

 

엔드포인트

애플리케이션의 모니터링을 사용하는 경로
스프링부트는 여러 내장 엔드포인트가 포함돼 있으며, 커스텀 엔드포인트를 추가 할 수 있음

액추에이터를 추가하면 기본적으로 엔드포인트 URI로 /actuator 가 추가되며, 뒤에 경로를 추가해 상세 내역에 접근

다만, 다른 경로를 사용하고 싶다면 management.endpoints.web.base-path=/custom-path 로 작성

 

엔드포인트는 활성화 여부와 노출 여부를 설정할 수 있음

활성화 - 기능 자체를 활성화할 것인지 결정, 비활성화된 엔드포인트는 애플리케이션 컨텍스트에서 완전히 제거됨

노출 여부만 설정하는 것도 가능

엔드포인트는 애플리케이션에 관한 민감한 정보를 포함하고 있어 노출 설정을 신중하게 고려해야함

 

액추에이터 기능 살펴보기

애플리케이션 기본정보 (/info)

가동 중인 애플리케이션의 정보 확인

application.properties 파일에 'info.' 으로 시작하는 속성 값들을 정의하는 것이 가장 쉬운 방법

 

애플리케이션 상태 (/health)

애플리케이션의 상태 확인

주로 네트워크 계층 중 L4 (Loadbalancing) 레벨에서 애플리케이션의 상태를 확인하기 위해 사용

  • UP
  • DOWN
  • UNKNOWN
  • OUT_OF_SERVICE

빈 정보 확인 (/beans)

스프링 컨테이너에 등록된 스프링 빈의 전체 목록 표시

JSON 형식으로 빈의 정보를 반환

 

스프링 부트의 자동설정 내역 확인 (/conditions)

스프링 부트의 자동설정 (AutoConfiguration) 조건 내역 확인

positiveMatches 와 negativeMatches 속성을 구분, 자동설정의 @Conditional에 따라 평가된 내용 표시

 

스프링 환경변수 정보 (/env)

스프링의 환경변수 정보 확인

기본적으로 application.properties 파일의 변수들이 표시, OS, JVM 환경변수도 함께 표시됨

 

로깅 레벨 확인 (/loggers)

로깅 레벨 수준 확인

출력 결과가 매우 김

 

액추에이터의 커스텀 엔드포인트는 코드로 구현되기 때문에 확장성 있는 기능을 개발 할 수 있음


서버 간 통신

RestTemplate

HTTP 통신 기능을 손쉽게 사용하도록 설계된 템플릿
RESTful 원칙을 따르는 서비스를 편리하게 만들 수 있음
동기방식으로 처리
  • HTTP 프로토콜의 메서드에 맞는 여러 메서드 제공
  • RESTful 형식을 갖춘 템플릿
  • HTTP 요청 후 JSON, XML, 문자열 등의 다양한 형식으로 응답을 받을 수 있음
  • 블로킹 (blocking) I/O 기반 동기 방식
  • 다른 API를 호출할 때 HTTP 헤더에 다양한 값 설정

RestTemplate 의 동작 원리

  • RestTemplate 선언, URI와 HTTP 메서드, Body 등 설정
  • API 요청 → HttpMessageConverter 를 통해 RequestEntity 를 요청 메시지로 변환
  • ClientHttpRequestFactory 를 통해 ClientHttpRequest 로 가져온 후 외부 API로 요청을 보냄
  • RestTemplate 은 ResponseErrorHandler 로 오류 확인, 오류가 있다면 ClientHttpResponse 에서 응답 데이터 처리
  • 데이터가 정상적이라면 HttpMessageConverter 를 거쳐 자바 객체로 변환 후 반환

RestTemplate 커스텀 설정

아파치에서 제공하는 HttpClient 로 대체해서 사용하는 방식

WebClient

스프링 부트 최신버전에서는 RestTemplate이 지원 중단, WebClient를 사용할 것을 권고

  • 논블로킹 (Non-Blocking) I/O 지원
  • 리액티브 스트림 (Reactive Streams) 의 백 프레셔 (Back Pressure) 지원
  • 적은 하드웨어 리소스로 동시성 지원
  •  함수형 API 지원
  • 동기, 비동기 상호작용 지원
  • 스트리밍 지원

'북 스터디 > 스프링 부트 핵심가이드' 카테고리의 다른 글

서비스의 인증과 권한 부여  (0) 2023.04.30
유효성 검사와 예외처리  (0) 2023.04.16
연관관계 매핑  (0) 2023.04.09
Spring Data JPA  (0) 2023.04.01
데이터베이스 연동 - 2  (0) 2023.03.26