Curious Y

「Stay curious, keep learning and keep growing.」

Latency 관리 전략

시스템의 안정성과 사용자 경험을 향상시키기

latency 관리 전략 Consumer가 트래픽을 감당하지 못해 지연(latency)이 발생할 때, 이를 완화하거나 해결하기 위한 다양한 전략이 있다. 시스템의 성능을 유지하고, 트래픽 급증 시에도 안정성을 보장하기 위해 설계하기 위함이다. 일반적으로 대용량 트래픽 처리와 관련된 latency 전략에는 보통 이런 것들이 있다. 로드 밸런싱...

API Rate Limiting

시스템의 안정성과 사용자 경험을 향상시키기

API Rate Limiting란? API Rate Limiting은 API에 대한 요청 수를 일정 시간 동안 제한하는 메커니즘이다. 주로 서비스의 안정성을 유지하고, 특정 API에 대한 과도한 요청으로 인해 발생할 수 있는 문제를 방지하기 위해 사용된다. 예를 들어, 특정 API가 초당 100개의 요청만 허용한다고 설정하면, 그 한도를 초과하는 요청...

Dead Letter Queue

Architecture

DLQ(Dead Letter Queue)란? 애플리케이션이 메시지를 처리하는 과정에서 예상치 못한 문제가 발생할 수 있다. 메시지가 특정 조건을 만족하지 않거나, 여러 번의 재시도에도 불구하고 성공적으로 처리되지 않는 경우, 이러한 메시지는 어떻게 처리해야 할까? 이때 사용되는 것이 바로 Dead Letter Queue(DLQ)이다. DLQ의 개념...

8월 24일 (토)

요즘 일상

8/9 토스뱅크의 테크밋업 Tech.nic에 가다. 토스는 내가 대학생때부터 송금 앱으로 사용하던 서비스이다. 나 또한 토스뱅크의 고객이기도 하고, 토스의 다양한 서비스들은 지금까지 매일 수차례 사용하는 서비스다. 편리하고 간단명료하고 매력적이다. 몇 년간 팬의 마음으로 SLASH 영상들을 챙겨보았다. 좋았던 주제를 가끔 다시보기도 하다가, T...

Spring - Scheduling 방식

Scheduler, Cron 표현식, Quartz

Scheduling 이란? 일정시간 간격으로 반복적인 작업을 수행하는 도구 배치 스케줄링과 다른 점: 배치 프로그램은 대량의 데이터를 처리하는 작업을 자동화 하는 프로그램을 의미한다. 배치 프로그램은 일괄 처리를 위한 프로그램이며 정해진 시간에 실행되지 않고 사용자의 명령이 있을 때 실행한다. 스케줄...

메세지 큐

Architecture

메세지 큐란? 메세지 큐(Message Queue)는 소프트웨어 시스템에서 데이터를 비동기적으로 교환하기 위해 사용하는 통신 방법 중 하나이다. 생산자(producer)가 보낸 메세지를 일시적으로 저장하고, 소비자(consumer)가 필요할 때 그 메세지를 가져가 처리할 수 있도록 돕는다. 이를 통해 두 시스템 간에 데이터 전송이 이루어지며...

Spring - 의존성 주입

스프링의 원리

스프링의 핵심 원리 IoC (Inversion of Control) IoC : 제어의 역전 객체 생성과 의존 관계 설정을 개발자가 직접 관리하는 대신 스프링 컨테이너가 담당하도록 하는 것 기존 방식: 1 2 3 4 class Service { private Dao dao = new DaoImpl(); // 개발자가 직접 생성 ...

7월 13일 (토)

상반기의 책

상반기의 책 리뷰 올해 시야를 넓혀준 아주 좋은 책이 있다. 이번 프로젝트에서 설계에 대한 고민을 많이 하다보니, 큰 그림을 그려가며 설계하고 싶다는 생각이 자연스레 들었는데, 그 궁금증을 해결해준 책이다. 가상 면접 사례로 배우는 대규모 시스템 설계 기초이다. 1권을 읽기 시작하니까, 너무 재밌어서 출퇴근 길에 멀미 나는 줄도 모르고 버스에서 열...

Spring - 레이어드 아키텍처, 클린 아키텍처, 핵사고날 아키텍처, 도메인 주도 설계

아키텍처에 대한 고찰

최근 2주간 집중적으로 사이드 프로젝트로 개발을 해보며 느낀 것 1. 단일 책임 원칙(SRP)을 따르는 방법은 무엇인가? 서비스 구조를 설계하면서 고민이 되었던 부분이 있다. 서비스 계층으로 책임을 분리할 것인가, 도메인 계층으로 책임을 분리할 것인가? 내가 여기서 말한 서비스 계층으로 책임을 분리한다는 것은 서비스가 다른 서비스를 호출하는...

Spring - JPA의 mapped by

jpa 이해하기

JPA에서 Mapped by 1. Mapped by란 무엇인가? JPA에서 @OneToMany 및 @ManyToMany 관계를 정의할 때 사용하는 어노테이션이다. 주체 엔티티에서 역관계 엔티티를 참조하는 필드에 사용하며, 역관계 엔티티에서 주체 엔티티를 참조하는 필드를 찾도록 지시하는 역할을 한다. 주체(owning) 엔티티에서 역방향 관계(inv...