전체 글672 직접 쓴 논문 리뷰하기: JPA 성능에 대해 우리가 착각하던 세 가지 1. Intro: 회의실의 질문이 논문이 되기까지백엔드 실무를 하다 보면 종종 설계의 갈림길에 섭니다. 얼마 전 회사에서 새로운 기능을 설계할 때의 일입니다. 도메인 주도 설계의 원칙에 따라, 엔티티 간의 결합도를 낮추기 위해 연관 매핑 대신 'ID 참조' 방식으로 끊어내자는 의견을 냈습니다. 그때 돌아온 피드백은, 사실 우리 모두가 한 번쯤 해봤거나 들어봤을 법한 익숙한 우려였습니다. "그렇게 매번 ID로 다시 조회하면 결국 N+1 문제가 생겨서 시스템이 많이 느려지지 않나요? 차라리 연관 매핑을 맺고 JOIN FETCH로 한 번에 가져오는 게 안전하지 않을까요?" 속으로는 '구현하기에 따라 다르고, 설계 방식 자체가 성능을 무조건 떨어뜨리는 건 아닐 텐데'라고 생각했습니다. 하지만 제게는 그 생각을 .. 2026. 7. 29. [시스템 설계 - DynamoDB] Ep.3 지운 물건이 되살아납니다: 다이나모 아키텍처 15년과 복잡성 보존의 법칙 0. 장바구니에서 뺀 물건이 결제창에 다시 있다고? "A typical example of a collapse operation is 'merging' different versions of a customer's shopping cart. Using this reconciliation mechanism, an 'add to cart' operation is never lost. However, deleted items can resurface."충돌 병합의 대표적인 예는 고객 장바구니의 서로 다른 버전을 합치는 작업입니다. 이 조정 메커니즘을 사용하면 '장바구니에 담기' 작업은 절대 유실되지 않습니다. 하지만, 지운 물건이 다시 나타날 수는 있습니다.- Giuseppe DeCandia et al., D.. 2026. 7. 29. [시스템 설계 - 레이트 리미터] Ep.2 방패의 설계도: 트래픽 폭주 속에서 무엇을, 어디서 막을 것인가 알고리즘 여섯 개를 다 외우고 나면 실전 서비스에 바로 적용할 수 있을까요?지난 Ep.1 알고리즘 해부에서는 여섯 알고리즘을 Redis 명령어 수준까지 내려가서 뜯어봤습니다. 이번 편은 그 알고리즘을 고르기 전에 끝냈어야 할 결정들을 다룹니다. 서버를 띄우고 API를 외부로 여는 순간, 시스템은 끊임없는 시험대에 오릅니다. 어느 날 갑자기 터진 마케팅 이벤트로 인한 정상적인 트래픽 폭주일 수도 있고, 악의적인 크롤링 봇의 공격일 수도 있습니다. 혹은 유저가 결제창에서 초조한 마음에 '결제하기' 버튼을 0.1초 만에 세 번 연속 누르는(일명 '따닥') 흔한 실수일 수도 있죠. 이 모든 상황은 백엔드 시스템에 즉각적인 위협으로 다가옵니다. 적절한 제어 장치가 없는 시스템은 DB 커넥션 풀을 순식간에 고갈시키.. 2026. 7. 28. [시스템 설계 - 레이트 리미터] Ep.1 여섯 개 알고리즘 해부: Redis 명령어까지 내려가서 다 뜯어보기 "1분에 100번"이라는 동일한 요구사항을 두고, 누군가는 유저당 8바이트를 할당하고 누군가는 800바이트를 낭비합니다. 서버가 죽어도 끄떡없는 구조가 있는가 하면, 스레드 두 개만 겹쳐도 정합성이 깨지는 구조도 존재합니다. 이 차이는 어디에서 오는 걸까요? 우리는 분산 환경에서 트래픽을 제어해야 할 때 자연스럽게 레이트 리미터(Rate Limiter)를 떠올립니다. 요구사항은 대개 단순합니다. 특정 유저나 IP가 정해진 시간 동안 호출할 수 있는 API 횟수를 제한하는 것입니다. 하지만 이 단순한 규칙을 대규모 트래픽이 몰아치는 서버와 인메모리 데이터베이스(주로 Redis) 위에 올리는 순간, 이야기는 완전히 달라집니다. 같은 문제를 푸는 다섯 가지 알고리즘은 각기 다른 방식으로 메모리를 소모하고 정합.. 2026. 7. 28. 수열 속 숨은 질서 찾기: LIS와 LCS, DP로 어떻게 길을 찾아낼까? 스터디 목표LIS와 LCS 문제의 핵심 원리를 이해하고, 'DP 테이블의 상태를 어떻게 정의하고 채워나갈 것인가'에 대한 자신감을 얻는다.Part 1. 모든 것의 시작: '부분 수열' 제대로 이해하기LIS(최장 증가 부분 수열)와 LCS(최장 공통 부분 수열)를 제대로 이해하려면, 두 개념을 관통하는 핵심인 '부분 수열(Subsequence)' 이 무엇인지부터 명확히 알아야 합니다. 이것만 제대로 구분해도 앞으로의 개념 학습이 훨씬 쉬워질 거예요.📜 "그래서, 부분 수열(Subsequence)이 뭔데?"부분 수열은 아주 간단한 규칙을 따릅니다."원래 수열에서 일부 원소를 제거해서 만들 수 있는 새로운 수열"여기서 가장 중요한 핵심 키워드는 '순서 유지' 입니다. 원래 수열에 있던 원소들의 상대적인 순서.. 2025. 9. 26. 이전 1 2 3 4 ··· 135 다음