서버 개발을 하면서 “트래픽이 늘었어요”, “DB가 느려요”, “서버가 못 버텨요” 같은 말을 들었을 때 QPS, TPS, IOPS 단어에 대해 종종 들었다. 해당 단어들은 시스템 상태를 수치로 설명해 주는 대표적인 지표이다. QPS (Queries Per Second)서버(API)에 초당 들어오는 요청 수일반적으로 API 서버 기준으로 계산한다./login API 초당 500번 호출됨 → QPS = 500 실무 관점QPS는 “얼마나 많은 트래픽이 들어오고 있는지”를 파악하는 지표이다. 중요한 점은 QPS가 높다고 항상 문제가 되는 것은 아니다.서버 CPU, Memory 여유가 있다면 충분히 감당 가능하고 캐시(Hit)가 높다면 DB 부하는 크지 않을 수 있다. 즉, QPS는 절대적인 문제 지표가 아..
12월 6일에 MongoDB Korea에서 AI 온라인 워크숍을 한다는 것을 알게 되었다.3주 동안 매주 토요일에 AI 교육을 해주고 있는데, 나는 늦게 알게 되어서 2주차 "RAG 앱 구축" 교육부터 들었다. 오늘 교육을 통해서 AI 애플리케이션에서 MongoDB가 어떻게 사용될 수 있는지RAG를 어떻게 구축할 수 있는지RAG 검색 및 생성 컴포넌트 등 다양한 내용을 배울 수 있어서 감사했다. 특히 애매했던 RAG 생성 컴포넌트와 Vector Index에 대해 개념을 다시 잡을 수 있어서 너무 유익한 시간이었다.(다음주 AI Agent 교육도 꼭 들을거다!!) https://event-us.kr/iinwe/event/116765?utm_source=slack&utm_campaign=b1rrbrg1l4..
Raft - 분산 시스템의 합의 메커니즘Raft는 Etcd, ElasticSearch, Kafka 등 수많은 분산 시스템에서 사용되는 합의(Consensus) 알고리즘이다. 복잡한 Paxos 알고리즘을 단순화하여 이해하기 쉽게 만든 합의 방식으로, “모든 노드가 같은 상태를 가지도록 보장”하는 것이 핵심 목표이다. 합의 알고리즘이 필요한 이유분산 환경에서는 항상 네트워크 지연, 장애, 분리 같은 상황이 발생한다. 예를 들어 한 서버에서는 데이터가 갱신되었지만, 다른 서버에는 아직 반영되지 않을 수 있다.이때 어떤 노드의 데이터가 “진짜 최신인지” 판단하지 못하면 시스템의 일관성이 깨진다. 이를 해결하기 위해 Raft는 클러스터 내 모든 노드가 동일한 명령(Log)을 같은 순서로 실행하도록 강제한다. Ra..
Redis 활용한 동시성 처리‘광고 슬로건 이벤트’ 로직을 구현하면서 상품 개수에 대해 동시성 문제를 처리해야 했다.Spring 환경에서 동시성을 처리하기 위해서는 여러 방법이 있는데, 나는 Redis Lua Script를 활용해서 처리했다. 방법 1) Spring synchronized, reentrantlock위 방법 같은 경우에는 멀티 스레드 환경에서 동시성을 보장하기 위한 방법이다.이는 멀티 스레드 환경에서 단일 스레드처럼 실행되도록 하여 동시성을 보장하는 방법이다. 현재 개발하고 있는 기능은 실시간으로 선착순에 따라 상품을 지급해야 해서 더 빠른 방법으로 처리해야 했다. 방법 2) RDB 비관적 락 걸기DB로는 MySQL을 사용했는데, 동시성 처리를 해결하기 위해 이벤트 상품 테이블에 Lock..