DB 커넥션 풀이 고갈됐을 때 타임아웃과 풀 사이즈 중 어떤걸 먼저 확인해야 하는가?
들어가며 우연히 IT 관련 글을 웹서핑하다가, 어느 면접 및 기술 토론 주제로 이 질문이 언급된 걸 봤습니다. "DB 커넥션 풀이 고갈돼서 API 응답이 지연될 때, connection timeout을 줄일지 pool size를 늘릴지 뭘 먼저 해야 하는가". 단순해 보이는 질문인데 막상 답을 하려니 근거가 빈약하다는 느낌이 들어서, 직접 파고들어 정리해본…
들어가며 우연히 IT 관련 글을 웹서핑하다가, 어느 면접 및 기술 토론 주제로 이 질문이 언급된 걸 봤습니다. "DB 커넥션 풀이 고갈돼서 API 응답이 지연될 때, connection timeout을 줄일지 pool size를 늘릴지 뭘 먼저 해야 하는가". 단순해 보이는 질문인데 막상 답을 하려니 근거가 빈약하다는 느낌이 들어서, 직접 파고들어 정리해본…
들어가며 배치가 주기적으로 통계 테이블을 갱신합니다. 여기에 사용자용 갱신 버튼을 추가했습니다. 이제 같은 집계를 시작하는 경로가 둘입니다. 둘이 동시에 실행되면 통계가 깨집니다. 집계는 한 번에 하나만 돌아야 합니다. 기존 방법은 모두 어긋납니다. LOCK TABLE은 조회까지 멈춥니다. SELECT ... FOR UPDATE는 잠글 행 자체가 없습니다.…
1. 들어가며 같은 쿼리를 반복해서 실행하는데도 매번 처음 실행하는 것처럼 느리다면, 오라클이 쿼리를 파싱하는 과정 자체를 다시 반복하고 있을 가능성이 큽니다. 이런 반복 작업을 줄여서 성능을 끌어올리는 메모리 영역이 바로 Shared Pool입니다. 이 글을 읽고 나면 Shared Pool이 무엇이고, 어떤 구성 요소로 이루어져 있으며, 실무에서 왜 바인…
1. 들어가며 HTTP는 상태를 기억하지 못하는 프로토콜입니다. 그런데 실제 웹 서비스에서는 로그인 상태나 장바구니처럼 사용자의 상태를 계속 기억해야 하는 경우가 많습니다. 이 모순을 해결하기 위해 등장한 게 쿠키와 세션입니다. 이 글을 읽고 나면 쿠키와 세션이 각각 무엇이고, 어떤 상황에 어떤 걸 써야 하는지, 그리고 둘의 차이가 무엇인지 이해할 수 있게…
1. 들어가며 웹 개발을 하다 보면 로그인 상태 유지, 장바구니 기능처럼 "사용자의 상태를 어떻게 기억시킬까"를 고민하는 순간이 자주 옵니다. 이 고민의 출발점에는 HTTP라는 프로토콜 자체가 상태를 기억하지 못한다는 특성이 있습니다. 이 글을 읽고 나면 HTTP의 비연결성과 무상태성이 각각 무엇을 뜻하는지, 그리고 이 특성 때문에 왜 쿠키·세션 같은 별도…
1. 들어가며 API를 설계하거나 사용할 때 GET과 POST 중 어떤 메서드를 써야 할지 헷갈리는 경우가 많습니다. 둘 다 서버에 요청을 보낸다는 점은 같지만, 목적과 동작 방식이 다릅니다. 이 글을 읽고 나면 GET과 POST가 각각 어떤 상황에 적합한지, 그리고 둘의 구조적인 차이를 명확히 구분할 수 있게 됩니다. 2. GET과 POST란? GET과…
1. 들어가며 알고리즘 문제를 풀다 보면 어떤 집합의 모든 부분집합을 구해야 하는 경우가 자주 나옵니다. 재귀나 반복문으로도 구할 수 있지만, 비트 연산자를 활용하면 훨씬 간결하고 직관적으로 구현할 수 있습니다. 이 글을 읽고 나면 비트마스킹을 이용해 부분집합을 구하는 원리를 이해하고, 직접 코드로 구현할 수 있게 됩니다. 2. 비트 연산자란 비트마스킹을…