
요즘 우아한 백엔드 개발카프카, 데이터베이스, 엘라스틱서치, AI 활용까지, 수천만 유저가 사용하는 배달의민족 백엔드 개발 이야기
우아한형제들 지음서비스가 커지면 코드는 그대로인데 문제는 달라진다. 어제까지 잘 돌던 API가 트래픽이 몰리자 느려지고, 멀쩡하던 배치가 데이터 정합성을 깨뜨린다. 검색은 점점 느려지고, 외부 연동 하나가 전체 서비스를 멈춰 세운다. 백엔드 개발자로 한 걸음 더 나아가는 순간, 마주하는 건 늘 이런 문제들이다.
이 책은 정답을 알려주지 않는다. 대신 우아한형제들 개발자들이 배달의민족과 B마트를 운영하며 실제로 어떤 상황에서 무엇을 고민했고, 어떤 트레이드오프를 받아들였는지를 보여준다. C++로 짠 대규모 시스템을 자바로 옮긴 이유, 카프카 대신 RDB 기반 큐를 택한 판단, 분산 락으로 재고 이관의 정합성을 지킨 과정. 깔끔하게 정리된 결론이 아니라, 결론에 이르기까지의 맥락과 시행착오가 그대로 담겨 있다.
가령 잘 돌아가던 캐시 코드가 어느 날 예외를 뱉기 시작한다. 코틀린 record를 Redis에 캐싱하자 역직렬화가 깨진 것이다. 이 책은 그 원인을 어떻게 추적하고 어떻게 막았는지를, 당시 개발자가 본 화면 그대로 따라가게 해준다. 검색이 느려졌을 때 엘라스틱서치 인덱스를 다시 설계한 과정, 재고가 꼬이지 않도록 분산 락을 어디에 걸었는지, 외부 연동이 전체 서비스를 멈추지 않게 서킷브레이커를 어떻게 끼워 넣었는지도 마찬가지다. 결론만 요약된 글에서는 보이지 않는, 판단의 과정이 그대로 남아 있다.
이 책은 정답을 알려주지 않는다. 대신 우아한형제들 개발자들이 배달의민족과 B마트를 운영하며 실제로 어떤 상황에서 무엇을 고민했고, 어떤 트레이드오프를 받아들였는지를 보여준다. C++로 짠 대규모 시스템을 자바로 옮긴 이유, 카프카 대신 RDB 기반 큐를 택한 판단, 분산 락으로 재고 이관의 정합성을 지킨 과정. 깔끔하게 정리된 결론이 아니라, 결론에 이르기까지의 맥락과 시행착오가 그대로 담겨 있다.
가령 잘 돌아가던 캐시 코드가 어느 날 예외를 뱉기 시작한다. 코틀린 record를 Redis에 캐싱하자 역직렬화가 깨진 것이다. 이 책은 그 원인을 어떻게 추적하고 어떻게 막았는지를, 당시 개발자가 본 화면 그대로 따라가게 해준다. 검색이 느려졌을 때 엘라스틱서치 인덱스를 다시 설계한 과정, 재고가 꼬이지 않도록 분산 락을 어디에 걸었는지, 외부 연동이 전체 서비스를 멈추지 않게 서킷브레이커를 어떻게 끼워 넣었는지도 마찬가지다. 결론만 요약된 글에서는 보이지 않는, 판단의 과정이 그대로 남아 있다.
주제 분류
