대규모 아키텍쳐 내용을 학습하고 면접 준비를 하면서 느낀 점을 정리하려고 한다.오늘은 FailOver 과정에서 데이터 유실에 관한 내용이다.먼저 왜 FailOver와 리더-팔로워 노드 구조가 필요한지를 작성하고 싶다.현대의 데이터 중심 애플리케이션에서 시스템의 지속적인
면접 준비하면서 얻은 내용을 하나씩 정리하고자 한다.우선 나는 비동기 방식을 해야지! 라는 생각만 하면서 CompletableFuture를 도입했다.이후 내 이력서, 코드를 보면서 궁금증이 들었다. 다음 코드를 봐보자!위 코드는 CompletableFuture에서 ru

이미지를 처리할때 메모리에 올라가지 않을정도로 크다면 어떻게 해야할까?webRTC를 잠깐 공부했던 기억이 나서 음성데이터를 바이너리 데이터로 변환한거처럼 이미지 파일도 청크단위로 나눠서 처리하면 어떨까? 라고 생각했다.면접이 끝나고 청킹을 통한 이미지 처리를 찾아보니,

알림 시스템 아키텍처 선택에 대한 고찰알림 시스템을 설계할 때 중요한 것은 메시지의 신뢰성과 처리의 원자성이다. 초기에는 Java의 CompletableFuture를 활용한 비동기 처리로 시스템을 구현했으나, 알림 발송과 로그 저장 과정에서 여러 문제점이 발생했다. 특

이전에 작성했던 pre-signed 관련 포스트파일 업로드 시스템을 구축할 때 많이 사용되는 AWS S3의 Pre-signed URL 방식에 대해 설명하고, 이를 비동기 처리와 결합하여 시스템 성능을 개선해보았습니다.Pre-signed URL은 AWS S3에 파일을 업

푸시 알림 서비스를 운영하면서 가장 큰 고민은 알림 이력 관리였습니다. 매일 수십만 건의 알림이 발생하고, 이 데이터들은 계속해서 축적되었습니다. 처음에는 단순히 RDBMS에 데이터를 쌓아두는 방식으로 시작했지만, 시간이 지날수록 다음과 같은 문제들이 발생했습니다:테이

알림 시스템은 많은 서비스에서 핵심적인 기능을 담당하고 있습니다. 특히 대량의 알림을 처리해야 하는 경우, 시스템의 안정성과 확장성이 매우 중요합니다. 이번 글에서는 기존의 단순 스케줄러 방식에서 Spring Batch를 활용한 방식으로 전환한 경험을 공유하고자 합니다

이 글은 헥사고날 아키텍쳐의 이해를 높이려는 목표로 작성했다.헥사고날 아키텍처(Hexagonal Architecture)는 포트와 어댑터 아키텍처(Ports and Adapters Architecture)라고도 불리며, 애플리케이션의 핵심 비즈니스 로직을 외부 의존성으

최근 Java 21에서 정식으로 도입된 Virtual Thread는 높은 동시성 처리를 위한 혁신적인 기능입니다. 그러나 Virtual Thread 관련 일부 API들은 아직 Preview 상태에 있어 개발자들에게 혼란을 주고 있습니다. 이번 글에서는 Preview A

현대의 소프트웨어 시스템은 점점 더 복잡해지고 있습니다. 특히 MSA(Microservice Architecture) 환경이 보편화되면서, 분산 시스템에서의 동시성 제어는 모든 개발자가 마주하는 도전 과제가 되었습니다. "동시성 문제는 이해하기도 어렵고, 재현하기는 더