기타/관리 6

Prometheus 를 사용하고 AlertManager 를 통해 서버 부하 알림 전송 해보기

이번 게시물에서는 서버 모니터링 도구인 Prometheus 를 사용하고, 서버에 부하가 발생되면 AlertManager 를 통해 Slack 으로 알림을 전송해보도록 하겠다.     1. 애플리케이션 설정  먼저 애플리케이션에 위와 같이 의존성을 추가해준다. Micrometer 에서 제공하는 Metric 정보를 Prometheus 가 읽을 수 있도록 변경해주는 역할을 하게 해준다.      yml 파일에서 Spring Actuator 의 EndPoint 를 설정해준다.      설정을 마치고 애플리케이션을 구동한 후 /actuator/prometheus 경로에 접속해보면 Micrometer에서 제공해주는 metric 정보들을 Prometheus 가 읽을 수 있도록 변환한 것을 확인할 수 있다.     2...

기타/관리 2024.07.06

SpringBoot 3 에서 Zipkin 서버를 통한 분산 추적 해보기

MSA 환경의 각 서비스들을 호출하는 과정에서 Zipkin 서버를 설치하고 이를 활용하여 분산 추적을 해보려고 한다.      공식 홈페이지에서 zipkin 파일을 다운로드하고 실행해준다. (기본적으로 9411 포트로 열린다.)      그리고 프로젝트에 위와 같이 필요한 의존성들을 추가해준다. 만약 OpenFeign 을 사용하지 않는다면 맨 마지막 줄에 있는 의존성은 추가해주지 않아도 된다. 내부적으로 Micrometer 를 통해 zipkin 서버로 데이터를 전송하기 때문에 Micrometer 관련 의존성들이 추가되는 것을 확인할 수 있다.      그리고 위와 같이 프로젝트의 yml 파일을 열어서 설정을 추가해준다.management.tracing.sampling.proability : 보내게 될 데..

기타/관리 2024.07.05

Redis 를 사용하여 성능 최적화

오늘은 스프링 애플리케이션에 Redis 의 캐싱 기능을 적용하여 보다 빠른 응답 속도를 내도록 만들어보겠다.   0. Redis 설치로컬 PC 에서 Redis 를 설치하고 테스트할 것이다. https://github.com/microsoftarchive/redis/releases Releases · microsoftarchive/redisRedis is an in-memory database that persists on disk. The data model is key-value, but many different kind of values are supported: Strings, Lists, Sets, Sorted Sets, Hashes - microsoftarchive/redisgithub.com..

기타/관리 2024.06.01

클라우드 환경에 nginx 설치하여 분산 처리(Scale-Out)하기

이번 게시글에서는 한번에 많은 양의 요청이 들어올 때, Scale-Out 을 적용하여 분산 처리하는 방법에 대해 다뤄보려 한다.  1. Scale-Out 적용 전일단 필자의 지갑 사정이 좋지 않으므로 한 개의 EC2 서버에서 여러 개의 Docker 컨테이너를 만들어서 분산 처리에 대한 효과를 체감해보도록 하겠다.  위 사진과 같이 자바 애플리케이션의 JVM 메모리를 설정하여 다소 적은 요청에도 서버에 부하가 발생되도록 만들었다.      nGrinder를 이용해 30개의 요청을 1분동안 테스트한다.     테스트 결과이다. 에러율 5.7%를 보이면서      서버가 다운되었다.    2. nginx 설치 및 로드밸런스 설정이제 위 문제를 해결하기 위해 nginx 를 설치하여 분산 처리를 하도록 설정해보겠..

기타/관리 2024.05.24

nGrinder 설치 및 사용(부하 테스트)해보기

오늘은 내가 만든 자바 애플리케이션을 nGrinder 라는 도구를 사용해 성능 테스트를 진행해보려고 한다.  0. 동작 흐름사용하기 전에 동작 흐름을 살펴보자. 이미지 출처 그림을 보면 다소 복잡해보이지만 간단하게 설명하자면 Controller 가 서버 역할을 하고 각각의 Agent 들이 Controller 의 명령을 받아서 타겟 서버에 데이터를 전송하는 역할을 수행한다. 그리고 그에 따른 응답 정보를 Agent 가 다시 Controller 로 전송한다.  1. nGrinder 설치자 그럼 본격적으로 설치 해보자. 필자는 nGrinder 의 Controller 와 Agent 를 모두 로컬 PC 에 설치해두고 서버 컴퓨터에 부하 테스트를 진행할 예정이다.  https://github.com/naver/ng..

기타/관리 2024.05.22

[APM] Scouter 설치 및 자바 애플리케이션과 연동하기 with Docker

오늘은 내가 만든 자바 애플리케이션에 Scouter를 연동시켜보려 한다. 여기서 말하는 Scouter란 무엇일까?검색하면 바로 나오지만 그냥 간단히 말해서 자바로 만들어진 성능 관리 모니터링 도구라고 정의할 수 있겠다.  0. 동작 흐름 직접 Scouter를 사용해보기 전에 간단한 흐름을 알고 사용하면 좋다. Collector(Server) 를 띄우고 각각의 agent 들이 정보를 수집하여 Collector 로 보내는 방식이다.그리고 Collector의 정보를 Client 를 실행하여 확인이 가능하다.          1. Scouter 설치 및 실행자 그럼 본격적으로 스카우터를 설치하고 실행해보자 https://github.com/scouter-project/scouter/releases/tag/v2...

기타/관리 2024.05.17