서버 모니터링 및 장애대응시 tomcat threadpool과 hikaricp 관련 메트릭은 중요한 요소다. (경험상 두 메트릭 지표 관련 장애를 몇번 겪었기에 더 뼈저리게 느끼고 있다) 이번 포스팅에선 AWS ECS 환경에서 스프링부트의 actuator 를 활용하여 DataDog 에 커스텀 메트릭을 연동했던 트러블슈팅 과정을 기록하고자 한다. 실...
[Spring] 스프링부트3버전에서 존재하지 않는 리소스 요청시 예외가 발생하는 문제 해결기
spring boot3 버전 마이그레이션후로 ‘/favicon.ico/’ 요청에 대해 500 status 응답이 떨어지는 현상이 발생하였다. api 서버이기에 favicon을 별도 관리하지 않아 고객에게 이어지는 치명적인 상황은 아니었지만 제품운영 관점에서 에러로그가 너무 과도하게 찍히고있어, 실제 고객의 제품 사용 도중 발생한 오류들을 시스템적으로 ...
[Database] Master&Slave Replication
고가용성 시스템을 구축하려면 DB 이중화는 필수적인 요소이다. DB 이중화 방식에는 두 가지가 존재한다. Clustering: 여러 개의 DB를 수평적인 구조로 구축하는 방식, 동기 방식으로 노드들 간의 데이터를 동기화 Replication: 여러 개의 DB를 권한에 따라 수직적인 구조(Master-Slave)로 구축하는 방식, 비동기 방...
[MSA] Service Mesh
기존 모놀리틱 구조에서 MSA로 전환하면서 독립성 및 확장성과 같은 많은 이점을 얻은만큼, 아래와 같은 단점도 존재하였다. 서비스가 분산되어 있어, 서비스간 통신에 복잡성 증가 장애 추적 및 모니터링 어려움 Service Discovery: 호출되는 서비스의 논리적, 물리적 위치가 변경되었을때 호출하는 서비스가 찾기 어려움 Circu...
프로파일러로 시스템 성능 향상시키기
토스 SLASH23 의 ‘프로파일러로 시스템 성능 향상시키기’’ 에 대한 학습 내용을 정리하기 위한 목적의 TIL 포스팅입니다.🙆♂️ pinpoint MSA 환경에서 클라이언트 요청은 여러 서비스들을 통해 처리되곤하다보니 한 서버의 문제가 다른 서버로 영향을 미치게됨 pinpoint는 분산 트랜잭션 툴 서비스간 호출 확인 및 어...
지속 성장 가능한 코드를 만들어 가는 방법
토스 SLASH22 의 ‘지속 성장 가능한 코드를 만들어가는 방법’’ 에 대한 학습 내용을 정리하기 위한 목적의 TIL 포스팅입니다.🙆♂️ 햄버거 서비스의 생성자를 통해 해당 클래스가 어떤 클래스인지 암시적으로 들어냄. 너무 과한 의존성이 걸려있는게 아닌지 고민 필요 import 문을 기준으로 pa...
멀티 모듈 구성
프로젝트를 멀티 모듈로 구성하는것은 아래와 같은 이점들을 챙길 수 있다. 1)계층간 의존성에 대한 제약을 두어 올바른 소프트웨어 아키텍처를 유지하기 위해(ex. api -> domain -> dao 식으로 단방향으로만 유지시키기 위해) => 관심사의 분리를 통해 단방향으로만 의존하게함으로써 변경으로 인한 영향...
[MSA] 유용한 MSA 시스템 아키텍처 레퍼런스 모음
유용한 MSA 시스템 아키텍처 관련 레퍼런스들을 정리할 예정입니다🤳 2200만 사용자를 위한 채팅 시스템 아키텍처 - 서호석 솔루션즈 아키텍트, AWS / 변규현 SW 엔지니어, 당근마켓 :: AWS Summit Korea 2022 - YouTube https://www.youtube.com/watch?v=lCxgddyxDyg&list=...
[AWS] ECS
ECS란? ECS 는 AWS 에서 제공하는 확장성이 뛰어나고 빠른 컨테이너 오케스트레이션 서비스이다. 이를 사용하여 클러스터에서 컨테이너를 실행, 중지 및 관리할 수 있다. ECS 구성 요소 ECS 는 ECR, Task Definition, ECS Task, ECS Service, ECS Cluster 로 이루어진다. ECR: 컨테이너 이미지...
[LLM] JSON 스키마 LLM 연동
LLM 기반 인터뷰 기능을 개발하면서 질문에 대한 사용자 답변이 지정된 평가 기준들에 부합하는지를 LLM 을 통해 피드백 받는 로직을 구현하면서 LLM 응답을 단순 텍스트 파싱처리외에 좀 더 안전하게 처리할 수 있는 방법이 없을까 고민하다 Structured Outputs(구조화된 출력)에 대해 알게 되었다. 또한 이전까지 제품에서의 대부분은 LLM...