Server

Server/MQ

SQS 메시지 유실이 발생하는 원인을 CloudWatch 지표로 분석하기

SQS → Consumer 파이프라인에서 메시지 수신이 실패한 상황에서 그 원인과 대응 전략을 회고하기 위한 글이다. 무슨 일이 있었나?SNS → SQS → Consumer 구조는 AWS에서 흔하게 쓰이는 패턴이다. 우리도 이 시스템을 채택하고 있었고 한 서비스가 하나의 큐를 리스닝하고 있는 구조이다. 그러나 운영 중에 서비스가 동작하지 않는다는 제보가 생겼고 큐를 확인했더니 메인 큐에 여러 메시지가 쌓여있는 것을 보았다. 🤯 하지만 DLQ에는 쌓여있는 메시지가 0개였다. 실패된 메시지에 대해서는 3번 재시도 후 DLQ로 빠지고 DLQ의 메시지 수가 증가하면 알림이 트리거 되어야 한다. 하지만 메시지가 DLQ에도 없고 메인 큐에서도 지속적으로 증가하지 않고 메시지가 증가했다가 사라지는 패턴을 반복하..

Server/Architecture

🎯 왜 OpenFeign과 Circuit Breaker를 함께 사용할까?

2025.09.12 - [Server/Architecture] - 🎯 Resilience4J 라이브러리의 개념과 Circuit Breaker의 동작 과정 🎯 Resilience4J 라이브러리의 개념과 Circuit Breaker의 동작 과정Resilience4j 란?fault tolerance (결함 허용) 라이브러리이다. 즉 오류나 장애가 발생해도 서비스가 중단되지 않게 안정적으로 도와주는 서비스이다. 이 기능을 구현하기 위한 여러 Resilience4j 모듈이 있mingyum119.tistory.com 여기서 어떻게 라이브러리의 목적이 무엇인지 알아보고, 이 목적을 구현하기 위한 여러 모듈 중 Circuit Breaker에 대해 알아보았다. 2025.09.12 - [Framework/Spring..

Server/Architecture

🎯 Resilience4J 라이브러리의 개념과 Circuit Breaker의 동작 과정

Resilience4j 란?fault tolerance (결함 허용) 라이브러리이다. 즉 오류나 장애가 발생해도 서비스가 중단되지 않게 안정적으로 도와주는 서비스이다. 이 기능을 구현하기 위한 여러 Resilience4j 모듈이 있다.장애가 전파되지 않도록 차단하는 CircuitBreaker실패 시 자동 재시작으로 장애 극복을 시도하는 Retry결과를 캐시해 장애가 나더라도 결과를 전달하게 하는 Cacjhe갑작스럽게 트래픽이 폭증한 상황에서 요청량을 제어하는 RateLimiter자원을 배분해서 장애가 나도 다른 서비스에서 작동하도록 하는 BulkHead응답시간 초과 시 타임아웃으로 지연 장애가 전파되지 않도록 하는 TimeLimiter 이 포스팅에서는 Circuit Breaker 모듈에 집중해서 알아보도..

Server/Architecture

Github Actions + Code Deploy + S3 + NginX 로 Spring Boot 블루/그린 무중단 배포 구현하기 (3)

2023.08.27 - [Server/Architecture] - Github Actions + Code Deploy + S3 + NginX 로 Spring Boot 블루/그린 무중단 배포 구현하기 (1) Github Actions + Code Deploy + S3 + NginX 로 Spring Boot 블루/그린 무중단 배포 구현하기 (1) 시스템 아키텍쳐 해당 프로젝트에서 사용한 시스템 아키텍쳐는 다음과 같다. 1. 개발자가 코드를 수정하고, 배포를 원하는 브랜치로 Github에 Push한다. 2. Github Actions에서 정해진 워크플로우에 따 mingyum119.tistory.com 2023.08.27 - [Server/Architecture] - Github Actions + Code De..

Server/Architecture

Github Actions + Code Deploy + S3 + NginX로 Spring Boot 블루/그린 무중단 배포 구현하기 (2)

2023.08.27 - [Server/Architecture] - Github Actions + Code Deploy + S3 + NginX 로 Spring Boot 블루/그린 무중단 배포 구현하기 (1) Github Actions + Code Deploy + S3 + NginX 로 Spring Boot 블루/그린 무중단 배포 구현하기 (1) 시스템 아키텍쳐 해당 프로젝트에서 사용한 시스템 아키텍쳐는 다음과 같다. 1. 개발자가 코드를 수정하고, 배포를 원하는 브랜치로 Github에 Push한다. 2. Github Actions에서 정해진 워크플로우에 따 mingyum119.tistory.com 위 포스팅에 이어서, Github Actions 워크플로우를 실행하고 CodeDeploy, S3를 이용해 EC..

Server/Architecture

Github Actions + Code Deploy + S3 + NginX 로 Spring Boot 블루/그린 무중단 배포 구현하기 (1)

시스템 아키텍쳐 해당 프로젝트에서 사용한 시스템 아키텍쳐는 다음과 같다. 1. 개발자가 코드를 수정하고, 배포를 원하는 브랜치로 Github에 Push한다. 2. Github Actions에서 정해진 워크플로우에 따라 두 가지 작업을 수행한다. (1) CodeDeploy에 배포 요청을 보낸다. (2) Gradle 빌드를 수행한 후 생성된 jar 파일을 S3 버킷에 저장한다. 3. 배포 요청을 받게 되면, CodeDeploy Agent (배포 작업을 수행하는 프로그램) 가 EC2 서버 내에서 개발자가 직접 작성한 appspec.yml를 스캔 후 빌드 스크립트를 실행하게 된다. 4. 빌드 스크립트 내에서 두 개의 포트를 번갈아가며 스위칭하여, 블루/그린 배포를 수행한다. 이 결과 8081 포트가 작동 중일 ..

Server/Docker

[Trouble Shooting] Ubuntu 환경에서 gradlew build 시 createScriptPluginFactory() 관련 오류

Could not create service of type ScriptPluginFactory \ using BuildScopeServices.createScriptPluginFactory(). > Could not create service of type CrossBuildFileHashCache \ using BuildSessionScopeServices.createCrossBuildFileHashCache(). ./gradlew build를 입력했을 때 위와 같은 에러가 뜨면서 Build가 실패되었다. ./gradlew build --stacktrace로 예외클래스를 찾아보니 ServiceCreationException이라는 친구였다. * Exception is: org.gradle.internal..

Server/Docker

[Trouble Shooting] Ubuntu 환경에서 Docker Image Build 시 Geographic area에서 Building이 멈추는 현상

RUN apt-get install -y apache2​ FROM ubuntu:20.04 MAINTAINER MINGYUM KIM RUN apt-get updatee RUN apt-get install -y apache2 EXPOSE 80 CMD ["apachectl", "-D", "FOREGROUND"] Dockefile을 위와 같이 작성하고 Docker 이미지를 빌드하였다. 그러나 아래 코드에서 "Geographic Area:"를 출력한 후 Building이 더 진행되지 않는 문제가 있었다. RUN apt-get install -y apache2 해결 방법 (1) apt 패키지 관리자가 지역 설정을 찾지 못하는 경우 FROM ubuntu:20.04 MAINTAINER MINGYUM KIM # 로케일 ..

Server/Architecture

[MSA] 터빈 서버 (Turbine Server)로 Hystrix Client 메시지 수집하기

터빈 서버란 ? 마이크로서비스에 설치된 히스트릭스 (Hystrix) 클라이언트 스트림 메시지를 터빈 서버로 통합하여 관리한다. 히스트릭스 클라이언트 스트림이란, 마이크로서비스에 설치된 ‘히스트릭스 클라이언트’ 에서 서비스 처리 요청에 대한 결괏값을 스트림으로 전달해준다. 사용자는 이를 통해 서비스가 잘 돌아갔는 지 확인할 수 있게 된다. 터빈 서버 구축하기 터빈 서버를 마이크로서비스에 등록하기 위해서는, 먼저 터빈 서버를 생성하고 build.gradle에 아래 라이브러리를 추가해준다. implementation 'org.springframework.cloud:spring-cloud-starter-netflix-turbine' 터빈 서버의 application.yml을 보면 아래와 같다. server: p..

MINGYUM
'Server' 카테고리의 글 목록