메시징 패턴 (feat. Pub/Sub, Queue, Event Stream)
·
Etc
메시징이란메시징은 발신자와 수신자를 분리하는 방법이다. 메시징 시스템은 가장 단순하게 말하면 시스템의 한 부분에서 다른 부분으로 정보를 전달하는 것을 의미한다. 생산자가 메시지를 보내면, 브로커가 이를 저장하고 라우팅하며, 소비자가 가져가서 필요한 작업을 수행한다. 이 과정에서 서비스는 다른 서비스가 작업을 완료할 때까지 기다리지 않는다. 단지 메시지를 전달하고 곧바로 다음 일을 진행한다. 메시지는 브로커에 안전하게 저장되며, 수신자는 준비가 되었을 때 메시지를 처리한다. 만약 수신자가 실패하더라도 메시지는 대기 상태로 남아 있다. 하지만 모든 메시징 시스템이 동일한 동작 방식을 제공하는 것은 아니다. 이번 글에서는 자주 나타나는 3가지 주요 패턴에 대해 살펴 보고자한다.핵심 개념생산자, 소비자, 브로커..
Flyway 도입기
·
Etc
도입한 계기프로젝트를 진행하면서 데이터베이스 스키마 변경이 빈번하게 발생했다. 1차 MVP를 배포한 이후에는 사용자 피드백에 따라 새로운 테이블이 추가되었고, 개발 도중 기획이 바뀌면서 기존의 테이블 연관관계가 끊어지는 경우도 있었다. 시간이 지날수록 변경 범위가 커지고 데이터 구조 자체가 자주 달라지다 보니, 매번 데이터베이스에 직접 접속해 쿼리를 작성해 수정하는 과정이 번거롭게 느껴졌다. 게다가 코드만 수정하고 DB 스키마를 반영하지 않아 에러가 발생하는 일도 잦았다. 이런 경험을 겪으며 “DB 스키마도 Git처럼 형상 관리할 수 없을까?”라는 고민을 하게 되었고, 그 과정에서 Flyway를 알게 되어 프로젝트에 도입하게 되었다.Flyway란?Flyway는 오픈소스 데이터베이스 마이그레이션 툴이다. ..
서킷 브레이커(Circuit Breaker) 알아보기
·
Etc
외부 연동 서비스에, 장애가 발생했어요!외부 서비스에 과부하가 발생해 응답을 제대로 주지 못하고 있는 상황이라고 생각해보자. 연동 서비스가 정상화되기 전까지는 요청을 보내도 계속 에러만 발생하게 될 것이다. 또한, 읽기 타임아웃이 발생할 때까지 대기하느라 응답 시간도 길어지게 될 것이다.그림과 같은 상황일 때, A 서비스는 B 서비스에 요청을 보내지 않고 바로 에러를 응답하는 것이 낫다. 이렇게 하면 B 서비스의 문제가 A 서비스에 주는 영향(응답 시간 증가, 처리량 감소)을 줄일 수 있다. 또한 사용자 입장에서도 수 초를 대기하다가 에러 화면을 보는 것보다는, 빠르게 에러 화면을 보는 편이 낫다. 즉, 연동 서비스가 장애 상황일 때는, 연동 대신 바로 에러를 응답하고, 정상화되었을 때 연동을 재개하면 ..
모니터링 시스템 구축기
·
Etc
모니터링 시스템이 왜 필요할까?서비스가 정상적으로 운영되고 있을 때는 모니터링 시스템의 필요성을 쉽게 체감하지 못한다. 그러나 예기치 못한 오류나 성능 저하가 발생하면 상황은 급변한다. 사용자로부터 불만이 접수되기 시작하고, 개발자는 “무슨 일이 일어난 걸까?”라는 질문부터 던지게 된다. 이때 모니터링 시스템의 유무는 문제 해결 속도를 결정짓는 중요한 요소가 된다.모니터링 시스템은 단순히 데이터를 수집하고 시각화하는 도구가 아니다. 시스템의 상태를 실시간으로 파악하고, 장애를 빠르게 감지하며, 그 원인을 추적할 수 있도록 도와주는 운영의 필수 구성 요소다. 또한, 장기적으로는 성능 개선과 리소스 최적화에도 기여하여 서비스의 안정성과 신뢰도를 높이는 데 중요한 역할을 한다.메트릭 기반 모니터링: Prome..
캐시(Cache) 전략
·
Etc
Redis와 캐시캐시란?캐시란, 데이터의 원본보다 더 빠르고 효율적으로 엑세스할 수 있는 임시 데이터 저장소를 말한다. 캐시는 자주 사용하는 데이터를 메모리에 저장해 디스크나 데이터베이스 접근을 줄이고, 이로 인해 응답 시간을 단축시켜 전체 시스템의 성능을 향상시킨다.캐시로서의 레디스레디스는 단순하게 키-값 형태로 데이터를 저장하므로, 굉장히 간단하며 자체적으로 다양한 자료 구조를 제공하기 때문에 애플리케이션에서 사용하던 list, hash 등의 자료 구조를 변환하는 과정 없이 레디스에 바로 저장할 수 있다. 또한 레디스는 모든 데이터를 메모리에 저장하는 인메모리 데이터 저장소이기 때문에 데이터를 검색하고 반환하는 것이 상당히 빠르다는 특징을 가지고 있다.캐싱 전략읽기 전략1. Look Aside애플리케..