BackEnd/Spring Boot
-
Spring Boot 핵심 기능 5 - 모니터링 & 관리 (Grafana)BackEnd/Spring Boot 2023. 5. 17. 08:50
그라파나(Grafana) 프로메테우스가 DB라고 하면, 해당 DB에 있는 데이터를 불러서 사용자가 보기 편하게 보여주는 대시보드가 필요합니다. 그라파나는 매우 유연하고, 데이터를 그래프로 보여주는 툴입니다. 수 많은 그래프를 제공하고, 프로메테우스를 포함한 다양한 데이터소스를 지원합니다. 그라파나 설치 https://grafana.com/grafana/download Windows: https://dl.grafana.com/enterprise/release/grafana-enterprise-9.3.6.windows-amd64.zip → 압축을 푼 곳에서 bin 폴더로 이동하여 grafana-server.exe 실행 Mac: https://dl.grafana.com/enterprise/release/gra..
-
Spring Boot 핵심 기능 5 - 모니터링 & 관리 (Prometheus)BackEnd/Spring Boot 2023. 5. 16. 23:00
스프링 부트 액츄에이터와 마이크로미터를 사용하면 수 많은 메트릭을 자동으로 생성합니다. 마이크로미터 프로메테우스 구현체는 프로메테우스가 읽을 수 있는 포멧으로 메트릭을 생성합니다. 프로메테우스는 이렇게 만들어진 메트릭을 지속해서 수집합니다. 프로메테우스는 수집한 메트릭을 내부 DB에 저장합니다. 사용자는 그라파나 대시보드 툴을 통해 그래프로 편리하게 메트릭을 조회합니다. 이때 필요한 데이터는 프로메테우스를 통해서 조회합니다. 프로메테우스(Prometheus) 애플리케이션에서 발생한 메트릭을 그 순간만 확인하는 것이 아니라 과거 이력까지 함께 확인하려면 메트릭을 보관하는 데이터베이스가 필요합니다. 이렇게 하려면 어디선가 메트릭을 지속해서 수집하고 데이터베이스에 저장해야 합니다. 프로메테우스가 바로 이런 역..
-
Spring Boot 핵심 기능 5 - 모니터링 & 관리 (Micrometer)BackEnd/Spring Boot 2023. 5. 12. 07:00
서비스를 운영할 때는 애플리케이션의 CPU, 메모리, 커넥션 사용, 고객 요청 수 같은 수 많은 지표들을 확인하는 것이 필요합니다. 실무에서는 이러한 지표들을 그라파나, 데이터독, 핀포인트 등의 모니터링 툴에 전달해서 확인합니다. 모니터링 툴에 전달할 때는 모니터링 툴이 정한 포멧에 맞추어 측정하고 전달해야 합니다. 그런데 문제는 중간에 사용하는 모니터링 툴을 변경하면 기존에 측정했던 코드를 모두 변경한 툴에 맞도록 변경해야 한다는 것입니다. 이러한 문제를 해결하는 것이 마이크로미터(Micrometer) 라이브러리 입니다. 마이크로미터 추상화 마이크로미터는 애플리케이션 메트릭 파사드라고 불리는데, 애플리케이션의 메트릭(측정 지표)을 마이크로미터가 정한 표준 방법으로 모아서 제공합니다. 즉, 추상화를 통..
-
Spring Boot 핵심 기능 5 - 모니터링 & 관리 (Actuator)BackEnd/Spring Boot 2023. 5. 4. 23:00
액츄에이터(Actuator) 의존성 추가(build.gradle) implementation 'org.springframework.boot:spring-boot-starter-actuator' 액츄에이터는 /actuator 경로를 통해서 기능을 제공합니다. 액츄에이터는 헬스 상태 뿐만 아니라 수많은 기능을 제공합니다. 이런 기능이 웹 환경에 보이도록 application.yml에 다음을 추가합니다. management: endpoints: web: exposure: include: "*" 다시 실행해보면 액츄에이터가 제공하는 수 많은 기능들을 확인할 수 있습니다. 액츄에이터가 제공하는 기능 하나하나를 엔드포인트라고 합니다. 각각의 엔드포인트는 /actuator/{엔드포인트명} 과 같은 형식으로 접근할 수..
-
Spring Boot 핵심 기능 4 - 외부설정(2)BackEnd/Spring Boot 2023. 5. 4. 07:00
이전 포스팅에서 다루었던 커맨드 라인 옵션 인수, 자바 시스템 속성, OS 환경변수는 모두 외부 설정을 key=value 형식으로 사용할 수 있는 방법입니다. 그런데 어디에 있는 외부 설정값을 읽어야 하는지에 따라 각각 읽는 방법이 다르다는 단점이 있습니다. 스프링은 이 문제를 Environment와 PropertySource라는 추상화를 통해서 해결합니다. 스프링의 외부 설정 통합 스프링은 로딩 시점에 필요한 PropertySource들을 생성하고, Environment에서 사용할 수 있게 연결합니다. 모든 외부 설정은 environment.getProperty(key)를 통해서 조회하면 됩니다. application.properties, application.yml도 PropertySource에 추가..
-
Spring Boot 핵심 기능 4 - 외부설정(1)BackEnd/Spring Boot 2023. 5. 3. 22:00
유지보수하기 좋은 애플리케이션 개발의 가장 기본 원칙은 변하는 것과 변하지 않는 것을 분리하는 것입니다. 각 환경에 따라 변하는 외부 설정값은 분리하고, 변하지 않는 코드와 빌드 결과물은 유지합니다. 애플리케이션을 실행할 때 필요한 설정값을 외부에서 불러와 애플리케이션에 전달할 수 있는 방법은 일반적으로 다음 4가지가 존재합니다. OS 환경 변수: OS에서 지원하는 외부 설정, 해당 OS를 사용하는 모든 프로세스에서 사용 자바 시스템 속성: 자바에서 지원하는 외부 설정, 해당 JVM 안에서 사용 자바 커맨드 라인 인수: 커맨드 라인에서 전달하는 외부 설정, 실행 시 main(args) 메서드에서 사용 외부 파일(설정 데이터): 프로그램에서 외부 파일을 읽어 사용 OS 환경 변수 OS 환경 변수(OS en..
-
Spring Boot 핵심 기능 3 - 자동 구성(Auto Configuration)BackEnd/Spring Boot 2023. 4. 20. 07:00
스프링 부트의 자동 구성 스프링 부트는 자동 구성(Auto Configuration) 기능을 제공합니다. 일반적으로 자주 사용하는 수 많은 빈들을 자동으로 등록해주는 기능입니다. JdbcTemplate, DataSource, TransactionManager 등 스프링 부트가 자동 구성을 제공해서 자동으로 스프링 빈으로 등록됩니다. 스프링 부트 자동 구성이 동작하는 원리는 다음 순서로 확인할 수 있습니다. @SpringBootApplication @EnableAutoConfiguration @Import(AutoConfigurationImportSelector.class) resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfi..
-
Spring Boot 핵심 기능 2 - 라이브러리 관리BackEnd/Spring Boot 2023. 4. 19. 07:00
웹 프로젝트를 하나 설정하기 위해서는 스프링 WEB, 내장 톰캣, JSON 처리기, 로거 등 수많은 라이브러리들이 필요하며, 각각의 라이브러리 버전까지 선택해야 합니다. 여기서 문제는 라이브러리들 간 호환성입니다. 스프링 부트는 개발자가 라이브러리들을 편리하게 사용할 수 있는 다양한 기능들을 제공합니다. 외부 라이브러리 버전 관리 스프링 부트 스타터 제공 스프링 부트 라이브러리 버전 관리 스프링 부트는 수 많은 라이브러리의 버전을 직접 관리해줍니다. 버전 관리 기능을 사용하려면 io.spring.dependency-management 플러그인을 사용해야 합니다. plugins { id 'org.springframework.boot' version '3.0.2' id 'io.spring.dependency..