시작하기

처음 오셨다면

시작하기

가진 시간에 맞춰 읽을 글을 골라 두었습니다. 15분이면 무엇을, 한 시간이면 어디까지 읽으면 되는지 정리했습니다.

글이 천 편을 넘어 어디서 시작할지 고르기 어렵습니다. 가진 시간만큼만 읽고 나갈 수 있도록 세 가지 길을 준비했습니다.

3분

이 블로그가 무엇을 하는 곳인지 한 편으로 보기

  1. 무너지는 Spring 서버 1 - CPU는 놀고 있는데 API가 느리다: 업스트림 하나가 무관한 엔드포인트를 죽이는 과정을 thread dump 세 장으로 읽기

    업스트림 하나가 느려지면 그것을 호출하지도 않는 엔드포인트가 먼저 죽는다는 것을 thread dump 세 장으로 보인 글입니다. 재현하고, 재고, 고치고, 같은 조건에서 다시 재는 이 블로그의 기본형입니다.

15분

추론을 측정으로 바꾸는 세 가지 방식 보기

  1. ParityPay로 검증하는 결제 정합성 2 - 잠금을 필요 이상으로 오래 쥐고 있었다: 추론을 측정으로 바꾼 기록

    같은 지갑 경합의 원인을 추론이 아니라 측정으로 좁혔습니다. 잠금 보유 17ms 중 DB가 실제로 일한 시간은 2.31ms였고, 나머지는 애플리케이션을 기다린 시간이었습니다.

  2. 격리 수준의 이상 현상을 직접 만들기 - 같은 REPEATABLE READ에서 PostgreSQL은 중단시키고 MySQL은 조용히 덮어썼다

    같은 이름의 격리 수준에서 PostgreSQL은 중단시키고 MySQL은 조용히 덮어씁니다. 문서로는 같아 보이는 것이 20회 반복 측정에서 갈립니다.

  3. ParityPay로 검증하는 결제 정합성 4 - 실험 27종이 찾아낸 결함 12건: 문서와 코드를 읽어서 나온 것은 하나도 없었다

    실험 27종이 찾은 결함 12건 중 6건은 설계 문서에 "대비되어 있다"고 적혀 있던 것이었습니다. 문서와 코드를 읽어서 나온 것은 하나도 없었습니다.

한 시간

하나의 시스템을 처음부터 끝까지 따라가기

  1. ParityPay로 검증하는 결제 정합성 10개 글

    결제·원장 백엔드를 만들며 불변조건을 문장으로 쓰고, 중복 요청·동시 차감·응답 유실·프로세스 재시작 아래에서 그것이 지켜지는지 실험으로 확인한 기록입니다. 열 편이 순서대로 이어집니다.

찾는 것이 분명하다면

  • 주제 찾는 주제가 분명하다면 질문으로 묶인 허브에서 시작하는 편이 빠릅니다.
  • 실측 수치와 재현 방법만 보고 싶다면 실측 글만 모아 둔 곳이 있습니다.
  • 기술 리뷰 다른 회사가 같은 문제를 어떻게 풀었는지가 궁금하다면 원문과 리뷰의 대응표가 있습니다.