전체 글 26

Kafka 개념 넓게 알아보기 with SQS

0. 들어가기 전현재 SQS를 주로 사용하고 있지만 Kafka가 어떻게 동작하고 있는지 궁금하고, 어느정도 개념을 잡아두면 나중에 기술 비교할 때 도움이 될 거 같다는 생각이 들었습니다. 그리하여 Kafka의 전반적인 용어와 개념들을 익혀보고, SQS와 조금 비교해보면서 글을 정리하고자 합니다. 1. Kafka 기초1.1 Kafka 정의고성능 데이터 파이프라인, 스트리밍 분석 등의 애플리케이션에 사용되는 오픈 소스 분산 이벤트 스트리밍 플랫폼요약하면 대규모 데이터를 처리할 수 있는 메시지 큐1.2 Kafka 구성 용어 Kafka를 이해하기 위해서 아래의 용어들을 알아두는 것이 좋습니다.노드 : Kafka가 설치된 서버를 의미클러스터 : 여러대의 서버가 연결되어 하나의 시스템처럼 동작하는 서버의 집합. 즉..

ETC 00:03:56

멱등성 API 설계하기

0. 서론결제 시스템을 개발하면서 결제 API의 멱등성을 어떻게 보장할 수 있을까에 대해 고민해 봤습니다. 왜냐하면 결제 버튼을 두 번 클릭(일명 따닥)하거나, PG사를 통해 결제를 완료했음에도 서버 문제로 사용자가 문제를 해결할 수 없는 경우가 발생할 수 있기 때문입니다. 저는 그중 더블 클릭과 같이 여러 번 API를 호출하는 경우 멱등성을 보장하기 위한 방법을 고민하고 이를 해결하고자 합니다. 1. 멱등성 보장을 안한 경우 문제점멱등성이란?멱등성이란 동일한 연산을 여러 번 수행해도 결과가 달라지지 않는 성질을 말합니다. 멱등성은 시스템의 오류, 유저 실수로 인한 중복 처리를 방지하고, 데이터의 일관성을 유지할 수 있습니다. 멱등성은 API 설계, 클라우드 서비스, 메시지 큐 시스템에 적용할 수 있습니..

DB 2025.09.06

7장 호텔 예약 시스템

1. 문제 이해 및 설계 범위 확정1.1 기능 요구사항5000개 호텔에 100만 개 객실을 갖춘 웹사이트예약시 결제하는 서비스10% 초과 예약 가능객실 가격은 유동적 서비스 주요 기능호텔 정보 페이지 표시객실 정보 페이지 표시객실 예약 지원초과 예약 지원1.2 비기능 요구사항높은 수준의 동시성 : 성수기이거나 이벤트를 할때 특정 객실에 대해 고객이 많이 몰릴 수 있기 때문적절한 지연시간 : 예약을 할때 너무 오래만 안 기다릴 정도로 유지1.3 규모 추정예약 건수 추정총 5000개 호텔, 100만개 객실이 있다고 가정평균적으로 객실의 70%가 사용중이고, 평균 투숙 기간을 3일이라고 가정했을때일일 예약 건수는 1백만 * 0.7 / 3 = 233,333 (약 240,000)초당 예약 건수는 3에 근접해 T..

5장 지표 모니터링 및 경보 시스템

1. 문제 이해 및 설계 범위 확정1.1 개략적 요구사항 및 가정아래와 같은 요구사항과 설계 범위를 정했다고 가정어떤 정보를 수집해야하는가? 시스템 운영 지표(CPU 부하, 메모리 사용률, 디스크 사용량, RPS 등등)시스템의 규모는 어떤가? MAU 1억, 서버 풀 1000개, 풀당 서버 수 100개지표 데이터 보존 기간은? 데이터 보관 기간 1년오래 수집한 데이터는 어떻게 저장되어야 하는가? 7일, 30일 ,1년 순으로 해상도를 낮추어 보관1.2 비기능 요구사항규모 확장성 : 시스템은 늘어나는 지표 수와 경보의 양에 맞게 확장될 수 있어야함낮은 레이턴시 : 대시보드와 경보를 신속하게 처리하기 위해 쿼리에 대한 낮은 레이턴시를 보장해야함안정성 : 높은 안정성을 제공해 중요 경보를 놓치지 않도록 하기 위해..

Prometheus 파헤쳐보기

0. 서론Prometheus를 사용하고 있지만 수많은 기능들이 있고, 그 기능들이 어떤 구조와 의미를 가지는 정확히 알지 못하고 있습니다. 그래서 이를 더 잘 활용하고 다른 툴들과 비교하기 위해선 지금 사용하고 있는 기술에 대해 더 잘 이해해기 위해 글을 작성했습니다. 1. Prometheus1.1 Prometheus란SoundCloud 사에서 처음 개발된 오픈소스 System Monitoring 및 Alerting toolkit현재는 독립된 오픈소스 프로젝트를 유지중Prometheus는 메트릭을 시계열 데이터로 수집하고 저장메트릭 정보는 timestamp와 함께 저장되며, Label이라고 하는 키-값 쌍도 함께 저장1.2 Prometheus에서 제공하는 기능들메트릭 이름과 키/값 쌍으로 식별되는 시계..

ETC 2025.06.15

돌아온 회고 시간 (2025년 반기에 접어들면서)

0. 회고에 앞서정말 정신없이 다섯 달이 지나갔습니다. 작년에도 시간이 빠르다고 생각했었는데, 지금은 그것보다 빠르다는 생각이 들어서 흘러가듯이 지나가면 안 된다는 생각이 들었습니다. 그래서 2025년 반기의 막바지를 보내면서 5개월간 어떤 일들과 경험을 했고 그 과정에서 얻은 점들을 한꺼번에 정리하고 싶었습니다. 글을 쓰기 전에 지난 5개월을 돌아보면 정말 한순간의 쉴 틈 없이 살았다고 생각이 듭니다. 물론 커리어적인 성장도 있었지만 인간적인 성장도 정말 많이 하지 않았을까 예상해 봅니다. 1. 5개월간 잘한 점 1.1 시간 촘촘하게 쓰기2024년 회고하면서 세웠던 목표인데 생각보다 도움이 많이 되었다. 나는 퇴근 이후 여유시간을 커리어와 관련 없는 자기계발 시간으로도 사용하고 있다. 그래서 커리어 ..

회고 2025.06.03

ECS Service Discovery, CloudMap, Prometheus

0. 서론Spring Actuator를 통해 Prometheus 메트릭을 수집하기 위해서 몇 가지 고려사항이 필요하다고 생각했습니다.ECS Cluster에서 EC2 1대를 사용하고 있고, 해당 인스턴스에 하나의 ECS Service를 사용하여 두 개의 테스크(어플리케이션 서버)를 배치했다고 가정두 테스크를 구분하여 모니터링을 하고 싶으나, Public DNS를 통해 얻는 IP 주소만으론 구별이 어렵다고 판단요구 사항각 테스크를 구별해서 Prometheus에서 Scrape 할 수 있는 환경Public DNS를 사용하지 않고 Private DNS를 사용해서 불필요한 비용 축소 및 통신 속도 향상생각해낸 해결책ECS awsvpc 네트워크 모드 + ECS Service Discovery + CloudMap을 사..

AWS 2025.04.13

ECS Network Mode, ENI, VPC Endpoint 정리

0. 서론최근 모니터링 관련해서 알아보고 구축하는 도중 다음과 같은 개념들에 대해 알아보았습니다.ECS NetworkModeENI, VPC EndpointECS의 Service Discovery, Service Connect 그래서 해당 개념들을 그냥 넘기지말고 한번 정리하면 좋겠다고 생각하여 ECS Networkmode, EC2 ENI, VPC Endpoint가 무엇인지에 대해서 알아보고 정리해보고자 합니다. 1. AWS VPC Endpoint1.1 VPC Endpoint란?AWS VPC Endpoint는 인터넷을 거치지 않고 VPC 내부에서 AWS 서비스 연결을 해주는 서비스1.2 Gateway EndpointGateway Endpoint 역할Internet Gateway, NAT Gateway 없이..

AWS 2025.03.29

Gradle 설정 알아보기 (2편)

0. 서론0.1 왜 이걸 찾아보게 되었는가?멀티 모듈 아키텍처에서 의존성을 정리하면서 다양한 개념들이 나왔지만 필요한 것만 골라서 찾아봄그 당시에는 어떤 역할을 하는지 간단하게 알아보고 사용했기에 잠시만 기억하고, 기억에 남아 있지 않음하지만 계속 사용할 거라고 생각했기 때문에 한번 정리가 필요하다고 생각0.2 정리하고자 하는 내용gradle의 역할 및 특징, build.gradle에서 볼 수 있는 설정들을 1편에서 다루었습니다 -> https://recently0.tistory.com/18의존성과 관련된 implementation, compileOnly, runtimeOnly, runtimeClasspath와 같은 설정들에 대해 알아보려고 합니다. 1. Java Library Plugin1.1 Java..

Spring 2025.02.23

Gradle 설정 알아보기 (1편)

0. 서론0.1 왜 이걸 찾아보게 되었는가?멀티 모듈 아키텍처에서 의존성을 정리하면서 다양한 개념들이 나왔지만 필요한 것만 골라서 찾아봄그 당시에는 어떤 역할을 하는지 간단하게 알아보고 사용했기에 잠시만 기억하고, 기억에 남아 있지 않음하지만 계속 사용할거라고 생각했기 때문에 한번 정리가 필요하다고 생각0.2 정리하고자 하는 내용gradle의 역할 및 특징build.gradle에서 볼 수 있는 설정들의존성과 관련된 implementation, compileOnly, runtimeOnly, runtimeClasspath은 2편에서 다룰 예정 1. Gradle1.1 Gradle 역할 및 특징코드 컴파일 및 패키징Java, Kotlin, Groovy 등의 소스코드를 컴파일하고 JAR 또는 WAR 파일로 패키징..

Spring 2025.02.16