주니어 백엔드 개발자가 반드시 알아야 할 실무 지식 - 7장 I/O 병목, 어떻게 해결하지 Book 백엔드 서비스는 CPU보다 I/O 때문에 느려지는 경우가 많다. DB, 파일, 네트워크, 외부 API 모두 I/O 자원이다. I/O(입출력)는 프로그램이 CPU와 메모리 바깥의 무언가와 데이터를 주고받는 일이다. 디스크에서 파일을 읽거나, 네트워크로 DB에 쿼리를 보내고 결과를 받는 일이 모두 여기에 들어간다. 이 작업들은 CPU 연산보다 훨씬 느리... 2026/03/11 주니어 백엔드 개발자가 반드시 알아야 할 실무 지식
동시성 도구의 비용 - synchronized, ReentrantLock, CAS가 경쟁에서 갈리는 지점 Notes “synchronized는 느리니 AtomicInteger를 쓰자”는 조언을 자주 듣는다. 절반만 맞다. 경쟁이 없으면 둘 다 거의 공짜이고, 경쟁이 심하면 CAS 쪽이 더 나빠지는 구간이 있다. 각 도구가 경쟁 아래에서 무엇을 하는지 보면 언제 무엇을 쓸지가 정해진다. synchronized: 경쟁이 없으면 거의 공짜다 JVM의 모니터 락은 ... 2026/03/09 Java
Postgres 커넥션 하나의 비용 - 풀을 키우면 대기가 사라지는 게 아니라 볼 수 없는 곳으로 옮겨간다 실무 사례 Notes 커넥션과 세션에서 “풀이 작으면 애플리케이션 쪽에서 대기하고, 크면 DB 안에서 보이지 않게 대기한다”고 썼다. 그 글은 문서를 근거로 썼고 마지막에 네 가지를 재 보자고 적어 뒀다. 이 글이 그 측정이다. 저장소는 data-ops-lab이고 재실행은 한 줄이다. ./.venv/bin/python experiments/connection/run.p... 2026/03/05 Database
컨슈머 그룹과 리밸런스 - eager, cooperative, static membership Notes 컨슈머를 한 대 추가했을 뿐인데 전체 처리가 몇 초 멈춘다. 배포할 때마다 랙이 튀고, 롤링 업데이트에서 인스턴스 수만큼 그 일이 반복된다. 이 글은 리밸런스가 무엇을 멈추는지, 그 멈춤을 줄이는 선택지가 무엇인지 다룬다. 그룹, 파티션, 소유권 컨슈머 그룹은 토픽의 파티션을 나눠 갖는다. 규칙은 하나다. 한 파티션은 그룹 안에서 한 컨슈머만 ... 2026/03/03 Infrastructure
2026-02-27-TIL: Codex 사용 후기 TIL 최근에 Codex를 본격적으로 사용해보았다. 나는 AI 에이전트를 능숙하게 다루지는 못하기 때문에 Claude Code보다는 오히려 Codex가 UI/UX 측면에서는 훌륭하다고 느꼈다. 현시점에서 가장 큰 차이점은 Claude Code에서 GUI기반의 데스크톱 앱을 지원하지 않는다는 것이다. 나는 개인적으로 GUI로 충분히 가능한 기능을 CLI를 통해... 2026/02/27 2026-TIL
합의 알고리즘 - Raft를 상태 기계로 읽기 Notes Kafka의 KRaft, etcd, Consul, TiDB가 전부 Raft를 쓴다. 이 도구들을 운영하면서 “리더 선출 중이라 잠깐 못 쓴다”, “과반이 살아 있어야 한다” 같은 문장을 만나는데, 그 문장들이 어디서 나오는지 알면 장애 대응이 달라진다. Raft는 이해하기 쉽도록 설계된 알고리즘이라 원논문 제목부터 “In Search of an Und... 2026/02/25 Architecture
Netty Notes Netty를 왜 배우는가 Netty는 Java에서 고성능 네트워크 서버와 클라이언트를 만들기 위한 프레임워크다. 단순한 소켓 라이브러리라기보다, NIO 기반 네트워크 프로그래밍의 복잡도를 줄여 주는 실행 모델과 파이프라인 추상화를 제공한다. 고성능 API 서버, 메시징 시스템, 게임 서버, RPC 프레임워크에서 자주 등장한다. 등장 배경 전... 2026/02/25 Web
2026-02-24-TIL: AI 활용에 대하여 TIL Today I Learned 오늘은 간만에 간단한 면접을 보았다. 이 면접을 통해 지금 내가 무엇을 공부하고 있고 어디를 향해 나아갈지 다시 한 번 생각해보는 계기가 되었다. 나는 지금 어떻게 공부하고 있고 어떻게 공부하는게 가장 효과적일까? 내가 지금 공부하는 방식은 대부분 ‘사고실험‘의 형태로 진행된다. 실무에서 경험했던 사례를 기억날때마다 구... 2026/02/24 2026-TIL
SLASH 22 리뷰 - 지속 성장 가능한 코드를 만들어가는 방법: import 문이 보내는 신호로 패키지·레이어·모듈을 다시 보기 Conference 발표 SLASH 22 연사 김재민 (토스페이먼츠 Server Developer) 자료 발표 영상 · SLASH 22 IDE가 접어 놓는 import 문을 펼쳐서 보자는 발표다. 생성자만 보... 2026/02/24 Toss 토스 커뮤니티 백엔드 발표 리뷰 14편
B+Tree 인덱스의 내부 - 노드 분할, 클러스터드와 논클러스터드, 커버링이 아끼는 것 Notes 인덱스를 “검색을 빠르게 하는 자료구조”로 알고 쓰면, 인덱스를 추가했는데 쓰기가 느려지는 이유나 ORDER BY가 인덱스를 타는 조건을 설명할 수 없다. B+Tree의 형태를 보면 그 질문들이 같은 곳에서 답을 얻는다. 왜 이진 트리가 아니라 B+Tree인가 디스크와 SSD는 바이트가 아니라 블록 단위로 읽는다. DB는 보통 8KB(Postg... 2026/02/20 Database