Skip to content

Split View: 국내 개발 블로그 명글 큐레이션 1 — 백엔드와 인프라, 직접 열어 확인한 14편

✨ Learn with Quiz
|

국내 개발 블로그 명글 큐레이션 1 — 백엔드와 인프라, 직접 열어 확인한 14편

이 시리즈는 순위표가 아니라 편집자의 선택입니다

이 글은 한국어로 쓰인 개발 글 중에서 읽을 만한 것을 골라 소개하는 여섯 편짜리 시리즈의 첫 번째입니다.

선정 방법을 먼저 밝힙니다. 검색으로 후보를 찾은 뒤 글을 직접 열어 확인했고, 그중에서 설명이 구체적이고 재현 가능한 것을 골랐습니다. 무엇이 재현 가능한 설명인지에 대한 기준은 단순합니다. 증상과 원인과 근거가 각각 따로 적혀 있고, 읽는 사람이 자기 환경에서 같은 확인을 해 볼 수 있으면 재현 가능한 글입니다. 반대로 결론만 있고 그 결론에 이른 관측이 없으면 아무리 맞는 말이어도 이 목록에 넣지 않았습니다.

여기에 순위는 없습니다. 조회수도, 인기도, 영향력도 측정하지 않았습니다. 저는 그런 숫자에 접근할 수단이 없고, 있는 척하지 않겠습니다. 이 목록은 편집자의 선택입니다. 다른 사람이 같은 기준으로 골랐다면 절반쯤은 다른 글이 들어왔을 것입니다.

출처는 개인 블로그를 우선했습니다. 티스토리, velog, 개인 도메인, GitHub Pages 순으로 살폈고, 기업 기술 블로그는 그 주제의 정본일 때만 넣었습니다. 이 글에는 우아한테크코스의 Tecoble 한 편이 그런 경우로 들어가 있습니다.

한 가지 더. 링크는 2026-08-12에 직접 열어 확인했습니다. 개인 블로그 글은 사라지거나 주소가 바뀔 수 있습니다.

서비스 메시와 프록시 — 트래픽이 지나가는 길을 설정으로 다루기

애플리케이션 코드에서 재시도와 타임아웃을 걷어내면 그 로직은 사라지는 게 아니라 프록시로 옮겨갑니다. 옮겨간 곳에서 그것이 어떻게 생겼는지 아는 사람은 의외로 적습니다.

Istio Sidecar로 서비스 구성 범위 좁히기

  • 블로그 · 작성자: Outsider's Dev Story
  • 한 줄 요약: Istio의 Sidecar 리소스로 워크로드가 볼 수 있는 서비스 범위를 좁히는 방법과, 그것이 왜 필요한지를 다룹니다.
  • 이런 사람에게: 클러스터가 커지면서 사이드카 프록시의 메모리와 설정 전파량이 부담이 되기 시작한 사람.

이 글이 좋은 첫 번째 이유는 이름의 혼동을 먼저 정리하고 들어간다는 점입니다. Istio의 Sidecar는 사이드카 패턴 그 자체가 아니라 CRD 이름이고, 이 둘을 섞어 쓰면 문서가 읽히지 않습니다. 그다음 xDS 프로토콜이 어떤 것들로 쪼개져 있는지를 짚은 뒤, 설정 범위를 좁힌다는 개념이 그 위에서 어떻게 작동하는지를 설명합니다. 프런트엔드 서비스가 쓸 일 없는 네임스페이스까지 알 필요가 없다는 구체적인 예가 붙어 있어서, 읽고 나면 자기 클러스터에서 무엇을 지워도 되는지 판단할 수 있습니다. 개념 설명과 실습이 분리되어 있지 않고 한 흐름으로 이어지는 것도 장점입니다.

Istio ServiceEntry로 외부 서비스 등록하기

  • 블로그 · 작성자: Outsider's Dev Story
  • 한 줄 요약: 메시 바깥의 외부 API를 ServiceEntry로 등록해 메시 안의 정책과 관측 대상에 포함시키는 방법을 정리합니다.
  • 이런 사람에게: 외부 결제사나 지도 API를 호출하는데 그 호출만 관측 사각지대로 남아 있는 사람.

외부로 나가는 트래픽을 어떻게 다룰지 결정하는 설정이 먼저 나옵니다. 전부 막을지, 전부 열지, 아니면 등록된 것만 열지를 고르는 선택인데, 이 선택이 나중에 장애 조사 난이도를 정합니다. 글은 그 선택지를 나열만 하지 않고 각각이 어떤 상황에서 합리적인지를 붙여 놓습니다. ServiceEntry로 등록하면 그때부터 외부 호출에도 서킷 브레이킹과 로깅과 메트릭이 붙는다는 대목이 이 글의 핵심입니다. 앞의 Sidecar 글과 이어 읽으면 메시의 경계가 어디까지인지에 대한 그림이 완성됩니다.

Istio External Authorization의 로컬리티 로드 밸런싱 확인하기

  • 블로그 · 작성자: Outsider's Dev Story
  • 한 줄 요약: 외부 인가 서비스를 붙였을 때도 로컬리티 기반 로드 밸런싱이 제대로 적용되는지를 Kind 클러스터에서 직접 확인합니다.
  • 이런 사람에게: 문서에 적혀 있는 동작을 그대로 믿기 전에 한 번 재현해 보는 습관을 들이고 싶은 사람.

이 글의 가치는 결론보다 방법에 있습니다. 궁금한 것이 생겼을 때 Kind로 클러스터를 띄우고, Envoy 클러스터 설정을 꺼내 보고, 트래픽 분포 메트릭을 확인하는 순서 자체가 그대로 배울 만한 절차입니다. 결과적으로 로컬리티 로드 밸런싱이 적용된다는 것을 확인하는데, 만약 적용되지 않았더라도 이 글은 여전히 좋은 글이었을 것입니다. 확인 과정이 재현 가능하게 적혀 있기 때문입니다. 서비스 메시를 도입한 조직에서 이런 검증을 누가 해야 하느냐고 묻는다면, 이 글이 그 답의 형태를 보여 줍니다.

[Envoy 이해하기] Circuit_Breaker (outlier_detection)

  • 블로그 · 작성자: 사바라다는 차곡차곡
  • 한 줄 요약: Envoy가 outlier detection으로 서킷 브레이커를 구현하는 방식을, 실패하는 백엔드를 만들어 실제로 제거되는지 관찰하며 설명합니다.
  • 이런 사람에게: 서킷 브레이커를 라이브러리로만 써 봤고 프록시 계층에서는 어떻게 생겼는지 궁금한 사람.

서킷 브레이커를 설명하는 글은 많지만 대부분 상태 다이어그램에서 끝납니다. 이 글은 연속 오류가 몇 번 쌓이면 해당 인스턴스가 로드 밸런서 풀에서 빠지는지를 직접 만들어 확인합니다. 테스트 시나리오가 붙어 있기 때문에 설정값의 의미가 문서의 설명이 아니라 관측된 동작으로 이해됩니다. 애플리케이션 레벨의 서킷 브레이커와 프록시 레벨의 그것이 어떻게 다른 문제를 푸는지도 자연스럽게 드러납니다.

[proxy] Envoy 이해하기 - Routing

  • 블로그 · 작성자: 사바라다는 차곡차곡
  • 한 줄 요약: Envoy의 네 가지 라우팅 방식을 경로, 가중치, 호스트, 헤더 기준으로 나눠 설정 예제와 함께 정리합니다.
  • 이런 사람에게: 카나리 배포나 A/B 테스트를 프록시 설정만으로 처리하고 싶은 사람.

가중치 라우팅이 점진적 배포에 쓰이고 헤더 라우팅이 A/B 테스트에 쓰인다는 대응이 명시적으로 붙어 있어서, 기능 목록이 아니라 쓸 곳의 목록으로 읽힙니다. 네 가지를 각각 설정 예제와 테스트 결과까지 붙여 놓았기 때문에 복사해서 시작하기 좋습니다. 앞의 서킷 브레이커 글과 같은 시리즈여서 이어 읽을 때 용어가 흔들리지 않는 것도 장점입니다. Istio를 쓰고 있다면 결국 그 아래에서 돌아가는 것이 이 설정들이라는 점에서 실용적입니다.

런타임과 관측 — 프로세스 안에서 일어나는 일을 바깥에서 보기

인프라를 아무리 잘 짜도 프로세스 안에서 무슨 일이 벌어지는지 모르면 조사할 수 없습니다. 이 절의 글들은 그 안쪽을 다룹니다.

[Server] 프로메테우스와 푸시 게이트웨이의 한계(Prometheus and limits of Push Gateway)

  • 블로그 · 작성자: MangKyu's Diary (망나니개발자)
  • 한 줄 요약: 프로메테우스의 풀 방식과 푸시 방식을 비교한 뒤, PushGateway의 내부 구조와 그로 인한 한계를 설명합니다.
  • 이런 사람에게: 배치 잡의 메트릭을 남기려고 PushGateway를 도입하려다 멈칫한 사람.

이 글이 드문 이유는 도구의 사용법이 아니라 한계를 다루기 때문입니다. 단일 스레드 처리, 전역 뮤텍스, 수명이 짧은 레이블이 쌓일 때의 메모리 문제까지 내려가면서, 왜 PushGateway가 만능 해법이 아닌지를 구조로 설명합니다. 도입 여부를 결정해야 하는 사람에게는 기능 소개보다 이런 글이 훨씬 쓸모 있습니다. 풀 방식이 기본인 이유를 납득하고 나면 관측 설계 전반의 판단이 달라집니다.

JVM 메모리 구조와 GC

  • 블로그 · 작성자: 기계인간 John Grib
  • 한 줄 요약: 세대별 메모리 구조가 왜 그렇게 생겼는지를 약한 세대 가설에서부터 풀어내고, Serial과 Parallel과 Concurrent 계열 수집기를 비교합니다.
  • 이런 사람에게: GC 옵션을 검색해서 붙여 본 적은 있지만 왜 그 옵션인지는 설명하지 못하는 사람.

이 글의 미덕은 순서입니다. 구조를 먼저 보여 주고 그 구조가 어떤 가설 위에 세워졌는지를 설명하기 때문에, 수집기별 차이가 임의의 목록이 아니라 같은 문제에 대한 다른 답으로 읽힙니다. 오라클 공식 문서 참조가 촘촘하게 붙어 있어서 더 파고들 경로도 열려 있습니다. 2019년에 쓰여 2022년에 갱신된 글이라 최신 수집기까지 다루지는 않지만, 기초를 잡는 용도로는 지금도 충분합니다. 위키 형식이라 필요한 절만 골라 읽기도 편합니다.

[JVM] 클래스 패스 섀도잉(Classpath Shadowing)이란?

  • 블로그 · 작성자: MangKyu's Diary (망나니개발자)
  • 한 줄 요약: 같은 이름의 클래스가 클래스패스에 여러 벌 있을 때 클래스 로더가 무엇을 고르는지, 그 결과 어떤 사고가 나는지를 설명합니다.
  • 이런 사람에게: 라이브러리 버전을 올렸는데 런타임에서만 이상한 예외가 나는 상황을 겪어 본 사람.

의존성 지옥이라고 뭉뚱그려 부르는 현상 중 상당수가 이 글이 설명하는 하나의 규칙에서 나옵니다. 클래스 로더가 먼저 찾은 것을 고정한다는 규칙인데, 이 한 문장을 알고 있느냐가 조사 시간을 몇 시간 단위로 가릅니다. 부트스트랩과 플랫폼과 애플리케이션 로더의 계층을 짚어 주기 때문에 어디에서 충돌이 났는지 추적할 위치도 잡힙니다. 개념 글이지만 실무에서 곧바로 꺼내 쓸 수 있는 종류입니다.

[Kafka] 카프카 파티션 증설 시 컨슈머의 auto.offset.reset 설정 주의사항

  • 블로그 · 작성자: MangKyu's Diary (망나니개발자)
  • 한 줄 요약: 파티션을 늘리는 순간 컨슈머의 오프셋 초기화 설정에 따라 메시지가 유실될 수 있다는 점을 그림과 함께 설명합니다.
  • 이런 사람에게: 처리량이 모자라 파티션을 늘릴 계획이 있는데 무중단으로 하고 싶은 사람.

기본값을 그대로 두면 증설 도중 도착한 메시지가 버려질 수 있다는 것이 이 글의 결론이고, 그 결론에 이르는 과정이 단계별로 그려져 있습니다. 카프카 운영에서 파티션 증설은 되돌릴 수 없는 작업이라 사전에 한 번 읽어 둘 값어치가 충분합니다. 설정 하나가 데이터 유실로 이어지는 경로를 보여 주는 글은 생각보다 드뭅니다. 증설 계획서에 그대로 인용할 만한 주의사항이 정리되어 있습니다.

서버와 네트워크의 기본기 — 오래 쓸 수 있는 것들

도구는 바뀌지만 이 절의 내용은 잘 바뀌지 않습니다. 몇 년 전 글이 여전히 유효한 이유입니다.

리눅스 서버 60초안에 상황파악하기

  • 블로그 · 작성자: Luavis' Dev Story
  • 한 줄 요약: 넷플릭스의 60초 점검 목록을 옮기면서, 열 개 남짓한 명령을 USE 방법론 기준으로 묶어 설명합니다.
  • 이런 사람에게: 서버에 들어가긴 했는데 무엇부터 쳐야 할지 매번 헤매는 사람.

느린 서버 앞에서 필요한 것은 깊은 지식보다 순서입니다. 이 글은 그 순서를 제공하고, 각 명령이 무엇을 알려 주는지를 자원과 포화와 오류라는 축으로 정리해 줍니다. 2017년 글이지만 다루는 명령들이 근본적인 것들이라 지금 그대로 써도 어긋나지 않습니다. 장애 대응 문서의 첫 장으로 붙여 두기 좋은 종류의 글입니다.

[Linux] top 명령어로 서버의 상태 파악하기

  • 블로그 · 작성자: 사바라다는 차곡차곡
  • 한 줄 요약: top의 출력 필드를 요약 영역과 프로세스 영역으로 나눠 하나씩 해석하고, 대화형 키까지 정리합니다.
  • 이런 사람에게: top을 매일 치지만 위쪽 숫자 몇 개는 아직 정확히 모르는 사람.

앞 글이 순서를 준다면 이 글은 그 순서의 마지막 칸을 채웁니다. 로드 애버리지와 CPU 상태 항목과 메모리 표시를 각각 무엇으로 읽어야 하는지를 짚고, 정렬과 필터와 스레드 보기 같은 대화형 조작까지 다룹니다. 이 정도를 알고 있으면 top 한 화면에서 얻는 정보량이 확실히 달라집니다. 기본 도구를 끝까지 쓰는 것이 새 도구를 하나 더 배우는 것보다 나을 때가 많습니다.

[Network] HTTP Keep-Alive VS TCP Keep-Alive 제대로 알기

  • 블로그 · 작성자: 사바라다는 차곡차곡
  • 한 줄 요약: 이름이 같아서 늘 섞이는 두 개념을 계층과 목적으로 갈라 설명하고, 헤더와 커널 설정과 패킷 캡처로 확인합니다.
  • 이런 사람에게: 커넥션이 끊기는 문제를 조사하다가 어느 쪽 설정을 만져야 하는지 헷갈린 적이 있는 사람.

두 기능은 이름만 같고 계층도 목적도 다릅니다. 이 글은 HTTP 쪽은 같은 연결로 여러 요청을 보내기 위한 것이고, TCP 쪽은 운영체제가 주기적으로 연결 생존을 확인하는 것이라는 구분을 먼저 세웁니다. 그 위에 리눅스 커널 파라미터와 와이어샤크 캡처를 얹어서 말로만 끝나지 않게 만듭니다. 커넥션 풀 문제를 조사할 때 이 구분이 서 있지 않으면 엉뚱한 설정을 몇 시간 만지게 됩니다.

[Server] CLI를 위한 2가지 인증 방식, Authorization Code Flow와 Device Authorization Flow

  • 블로그 · 작성자: MangKyu's Diary (망나니개발자)
  • 한 줄 요약: CLI 환경에서 쓸 수 있는 두 가지 OAuth 흐름을 비교하고, 왜 헤드리스 환경에서는 후자가 권장되는지 설명합니다.
  • 이런 사람에게: 사내 도구에 로그인을 붙여야 하는데 브라우저가 없는 서버에서도 돌아가야 하는 사람.

포트 바인딩과 로컬 브라우저 의존이라는 구체적인 제약에서 출발하기 때문에, 두 흐름의 차이가 이론이 아니라 선택 기준으로 읽힙니다. PKCE가 왜 필요한지도 공격 시나리오와 함께 짚습니다. 시퀀스 다이어그램이 붙어 있어서 구현 전에 전체 흐름을 머릿속에 넣기 좋습니다. 최근 사내 CLI 도구가 늘어나는 흐름에서 실용도가 높은 주제입니다.

로컬에서도 프로덕션과 유사한 환경에서 테스트할 수 없을까? : Testcontainers 도입기

  • 블로그 · 작성자: Tecoble (우아한테크코스) · 5기_리오
  • 한 줄 요약: 로컬 테스트는 H2, 운영은 MySQL이라는 불일치를 어떻게 좁혀 갔는지를 단계별로 기록한 도입기입니다.
  • 이런 사람에게: 로컬에서는 통과하는데 배포하면 깨지는 테스트 때문에 신뢰를 잃어 본 사람.

이 글을 기업 소속 블로그임에도 넣은 이유는, 이 주제에 대해 한국어로 쓰인 도입 과정 기록 중 단계가 가장 정직하게 남아 있기 때문입니다. 처음부터 Testcontainers로 간 것이 아니라 마이그레이션 파일을 분리하는 중간 단계를 거쳤고, 그 단계가 왜 부족했는지가 적혀 있습니다. 결론만 있는 글보다 이런 궤적이 남은 글이 자기 상황에 옮기기 쉽습니다. 도커가 필요하다는 비용까지 언급되어 있어 판단에 필요한 정보가 한쪽으로 기울지 않습니다.

이 블로그의 관련 글과 도구

시리즈의 다른 글

Korean Dev Blog Curation 1 — Backend and Infrastructure, 14 Posts I Opened and Checked

This Series Is an Editorial Pick, Not a Ranking

This is the first of a six-part series introducing developer writing worth reading in Korean.

Let me state the selection method first. I found candidates by searching and then opened each post directly to check it, keeping the ones whose explanations were concrete and reproducible. My standard for a reproducible explanation is simple. The symptom, the cause, and the evidence are each written down separately, and a reader can run the same check in their own environment. Conversely, if a post has only a conclusion and none of the observations that led to it, I left it out no matter how correct it was.

There is no ranking here. I did not measure views, popularity, or influence. I have no way to access those numbers and I am not going to pretend otherwise. This list is an editorial pick. If someone else had chosen against the same criteria, about half the entries would be different.

I gave priority to personal blogs — Tistory, velog, personal domains, GitHub Pages, in that order. Corporate engineering blogs were included only when they were the definitive writeup for a topic. One entry here, from Woowacourse's Tecoble, qualifies on that basis.

One more note, and an important one for readers outside Korea: every linked post is written in Korean. You will need Korean to read them. Machine translation handles most of these reasonably well, but the code and command output that carry the argument are language-independent anyway.

All links were opened and checked directly on 2026-08-12. Personal blog posts can disappear or change addresses.

Service Mesh and Proxies — Handling the Path Traffic Takes as Configuration

When you strip retries and timeouts out of application code, that logic does not vanish; it moves into the proxy. Surprisingly few people know what it looks like once it gets there.

Istio Sidecar로 서비스 구성 범위 좁히기

  • Blog · Author: Outsider's Dev Story
  • One-line summary: How to narrow the set of services a workload can see using Istio's Sidecar resource, and why you would want to.
  • Read this if: Your cluster has grown to the point where sidecar proxy memory and config propagation have become a burden.

The first thing this post does well is clear up a naming collision before going anywhere else. Istio's Sidecar is a CRD name, not the sidecar pattern itself, and mixing the two makes the documentation unreadable. It then covers how the xDS protocol is split up, and explains configuration scoping on top of that foundation. A concrete example — a frontend service that has no business knowing about certain namespaces — means you finish the post able to judge what you can safely delete from your own cluster. The concept and the hands-on work run as one thread rather than being split apart, which also helps.

Istio ServiceEntry로 외부 서비스 등록하기

  • Blog · Author: Outsider's Dev Story
  • One-line summary: Registering external APIs outside the mesh via ServiceEntry so they fall under in-mesh policy and observability.
  • Read this if: You call an external payment or map API and that one call is your observability blind spot.

The post starts with the setting that decides how outbound traffic is handled at all — block everything, allow everything, or allow only what is registered. That choice determines how hard your next outage will be to investigate. Rather than just listing the options, the post attaches the situation each one is reasonable for. The core of it is the point that once you register a service entry, circuit breaking, logging, and metrics start applying to external calls too. Read alongside the Sidecar post above, it completes the picture of where the mesh boundary actually sits.

Istio External Authorization의 로컬리티 로드 밸런싱 확인하기

  • Blog · Author: Outsider's Dev Story
  • One-line summary: Verifying in a Kind cluster whether locality-based load balancing still applies once an external authorization service is attached.
  • Read this if: You want to build the habit of reproducing documented behavior before trusting it.

The value here is in the method more than the conclusion. Spinning up a Kind cluster when a question comes up, pulling out the Envoy cluster configuration, and checking traffic distribution metrics is itself a procedure worth learning. The author confirms that locality load balancing does apply — but if it had not, this would still be a good post, because the verification process is written down reproducibly. If you have asked who in your organization should be doing this kind of checking after adopting a service mesh, this post shows you the shape of the answer.

[Envoy 이해하기] Circuit_Breaker (outlier_detection)

  • Blog · Author: 사바라다는 차곡차곡
  • One-line summary: How Envoy implements circuit breaking through outlier detection, demonstrated by standing up a failing backend and watching it get removed.
  • Read this if: You have only used circuit breakers as a library and want to know what they look like in the proxy layer.

Plenty of posts explain circuit breakers, but most stop at a state diagram. This one builds the thing and observes how many consecutive errors it takes before an instance drops out of the load balancer pool. Because a test scenario is included, the meaning of each configuration value comes from observed behavior rather than from documentation prose. It also brings out naturally how application-level and proxy-level circuit breakers solve different problems.

[proxy] Envoy 이해하기 - Routing

  • Blog · Author: 사바라다는 차곡차곡
  • One-line summary: Envoy's four routing approaches — by path, weight, host, and header — with configuration examples for each.
  • Read this if: You want to handle canary deploys or A/B tests purely through proxy configuration.

The mapping is made explicit: weighted routing for gradual rollouts, header routing for A/B tests. That turns a feature list into a list of places to use them. Each of the four comes with a configuration example and test results, so it is easy to copy and start from. It belongs to the same series as the circuit breaker post above, so terminology stays stable when you read them back to back. If you are running Istio, these are the settings underneath it, which makes this practical rather than academic.

Runtime and Observability — Seeing Inside a Process from Outside

You can design the infrastructure perfectly and still be unable to investigate anything if you do not know what happens inside the process. This section covers that interior.

[Server] 프로메테우스와 푸시 게이트웨이의 한계(Prometheus and limits of Push Gateway)

  • Blog · Author: MangKyu's Diary (망나니개발자)
  • One-line summary: Pull versus push metric collection in Prometheus, then the internal architecture of PushGateway and the limits that follow from it.
  • Read this if: You started adopting PushGateway for batch job metrics and then hesitated.

What makes this post uncommon is that it covers limits rather than usage. It goes down to single-threaded processing, a global mutex, and the memory behavior when short-lived labels accumulate, explaining structurally why PushGateway is not a general solution. For someone who has to make an adoption decision, that is far more useful than a feature tour. Once you understand why pull is the default, your judgment across the whole observability design shifts.

JVM 메모리 구조와 GC

  • Blog · Author: 기계인간 John Grib
  • One-line summary: Why generational memory layout looks the way it does, starting from the weak generational hypothesis, then comparing serial, parallel, and concurrent collectors.
  • Read this if: You have pasted GC flags found through search but cannot explain why those flags.

The virtue of this post is its ordering. It shows the structure first and then explains the hypothesis that structure rests on, so the differences between collectors read as different answers to the same problem rather than an arbitrary list. Dense references to the official Oracle documentation leave a path open if you want to go deeper. Written in 2019 and updated in 2022, it does not reach the newest collectors, but it is still more than adequate for building the foundation. The wiki format also makes it easy to read just the section you need.

[JVM] 클래스 패스 섀도잉(Classpath Shadowing)이란?

  • Blog · Author: MangKyu's Diary (망나니개발자)
  • One-line summary: What the class loader picks when several copies of the same class name sit on the classpath, and what goes wrong as a result.
  • Read this if: You have bumped a library version and then hit strange exceptions only at runtime.

A large share of what gets lumped together as dependency hell comes out of the single rule this post explains: the class loader locks in the first match it finds. Knowing that one sentence is the difference between an investigation measured in minutes and one measured in hours. Because it walks the bootstrap, platform, and application loader hierarchy, you also get a place to look for where the collision happened. It is a conceptual post, but the kind you can pull out at work immediately.

[Kafka] 카프카 파티션 증설 시 컨슈머의 auto.offset.reset 설정 주의사항

  • Blog · Author: MangKyu's Diary (망나니개발자)
  • One-line summary: How the consumer's offset reset setting can cause message loss the moment you add partitions, explained with diagrams.
  • Read this if: You plan to add partitions for throughput and want to do it without downtime.

The conclusion is that leaving the default in place can discard messages that arrive mid-expansion, and the path to that conclusion is drawn out step by step. Adding partitions is an irreversible operation in Kafka, which makes reading this beforehand worth the time on its own. Posts that show the exact route from one configuration value to data loss are rarer than you would expect. The cautions are written up in a form you could quote directly into a change plan.

Server and Network Fundamentals — The Parts That Last

Tools change; the material in this section mostly does not. That is why posts from several years ago still hold.

리눅스 서버 60초안에 상황파악하기

  • Blog · Author: Luavis' Dev Story
  • One-line summary: An adaptation of Netflix's sixty-second checklist, grouping about ten commands under the USE method.
  • Read this if: You get onto a slow server and lose time every single time deciding what to type first.

In front of a slow server, what you need is an order of operations more than deep knowledge. This post supplies that order and organizes what each command tells you along the axes of utilization, saturation, and errors. It is from 2017, but the commands it covers are fundamental enough that it still holds up unchanged. It is the kind of thing worth pinning as the first page of an incident response document.

[Linux] top 명령어로 서버의 상태 파악하기

  • Blog · Author: 사바라다는 차곡차곡
  • One-line summary: The output of top, split into the summary and process areas and interpreted field by field, down to the interactive keys.
  • Read this if: You run top daily but still do not know exactly what a couple of the numbers at the top mean.

If the previous post gives you the order, this one fills in its last slot. It covers how to read load average, the CPU state fields, and the memory display, then goes on to interactive operations like sorting, filtering, and toggling thread view. Knowing this much visibly changes how much information you extract from a single top screen. Using a basic tool to its end is often better than learning one more new tool.

[Network] HTTP Keep-Alive VS TCP Keep-Alive 제대로 알기

  • Blog · Author: 사바라다는 차곡차곡
  • One-line summary: Two concepts that get confused because they share a name, separated by layer and purpose, then confirmed with headers, kernel settings, and packet captures.
  • Read this if: You have investigated dropped connections and been unsure which of the two settings to touch.

The two features share only a name; their layer and their purpose both differ. The post establishes the distinction first — the HTTP one exists to send multiple requests over one connection, the TCP one is the operating system periodically confirming the connection is alive. On top of that it layers Linux kernel parameters and Wireshark captures so the explanation does not stay verbal. Without this distinction in place, investigating a connection pool problem can mean hours spent on the wrong setting.

[Server] CLI를 위한 2가지 인증 방식, Authorization Code Flow와 Device Authorization Flow

  • Blog · Author: MangKyu's Diary (망나니개발자)
  • One-line summary: Two OAuth flows usable from a CLI, compared, with the reasoning for why the latter is recommended in headless environments.
  • Read this if: You need to add login to an internal tool that also has to work on a server with no browser.

Because it starts from concrete constraints — port binding and dependence on a local browser — the difference between the two flows reads as a selection criterion rather than theory. It also covers why PKCE is needed, with the attack scenario attached. Sequence diagrams make it easy to hold the whole flow in your head before implementing. With internal CLI tooling proliferating lately, the topic has a high practical hit rate.

로컬에서도 프로덕션과 유사한 환경에서 테스트할 수 없을까? : Testcontainers 도입기

  • Blog · Author: Tecoble (Woowacourse) · 5기_리오
  • One-line summary: A step-by-step record of closing the gap between H2 in local tests and MySQL in production.
  • Read this if: You have lost trust in a test suite that passes locally and breaks on deploy.

I included this despite it being a company-affiliated blog because, among Korean-language accounts of adopting this, it keeps the most honest record of its intermediate steps. The team did not jump straight to Testcontainers; they went through a phase of splitting migration files, and why that phase fell short is written down. A post that leaves this kind of trajectory is easier to transfer to your own situation than one that only states the conclusion. The cost of requiring Docker is mentioned too, so the information you need for the decision does not lean one way.