한빛미디어 서평단 <나는리뷰어다> 활동을 위해서 책을 협찬받아 작성된 서평입니다.
게임 클라이언트 개발자로 일하면서 백엔드를 독학으로 공부하던 중에 이 책을 읽었습니다.
Spring 튜토리얼을 따라 쳐보기도 하고, AI 도구로 코드를 만들어보기도 했지만 뭔가 모르게 허전한 느낌이 있었습니다. 코드가 동작하는 건 알겠는데, 왜 이렇게 설계하는지, 현업에서는 어떤 기준으로 판단하는지가 빠져 있었거든요. 이 책은 그 공백을 채워준 책입니다.
특히 인상 깊었던 부분이 세 가지 있습니다.
첫째는 테스트에 대한 관점입니다. Unity에도 Test Framework가 있어서 테스트 자체가 생소하진 않았지만, 항상 "만들고 나서 검증하는 것"이라고 생각했습니다. 그런데 이 책을 읽으면서 테스트를 먼저 작성하는 이유가 버그를 잡기 위해서가 아니라, 테스트 가능한 구조를 강제하기 위해서라는 걸 처음으로 납득했습니다. 테스트하기 어려운 코드는 결국 의존성이 뒤엉켜 있거나 책임이 분리되지 않은 코드라는 것도요. 클라이언트 코드를 짤 때도 이 관점이 계속 생각났습니다.
둘째는 고가용성과 복원력에 대한 사고방식입니다. 클라이언트 개발자 입장에서 서버는 늘 "당연히 응답해야 하는 것"이었는데, 이 책을 통해 백엔드 설계의 출발점이 "서버는 반드시 실패한다"는 전제라는 걸 알게 됐습니다. Kubernetes나 Redis 같은 기술을 쓴다고 자동으로 안정성이 보장되는 게 아니라, 실패를 어떻게 격리하고 복구할지를 설계 단계에서 미리 정해놔야 한다는 것이요. 이 관점을 알고 나서 서버와 통신하는 클라이언트 코드를 다시 보게 됐습니다. 타임아웃 처리나 재시도 로직을 단순히 예외 처리 수준으로만 다뤘던 게 부끄럽더라고요.
셋째는 지속 가능한 성장에 대한 부분입니다. AI 도구로 빠르게 코드를 만들 수 있는 시대지만, 결국 그 코드가 좋은지 나쁜지 판단하는 기준은 개발자 본인의 지식에서 나온다는 점을 다시 확인했습니다. AI가 만든 코드가 돌아는 가지만 유지보수가 힘든 구조일 수도 있고, 간단한 기능을 필요 이상으로 복잡하게 만들어놓는 경우도 있거든요. 기초 원칙을 이해하고 있어야 그 판단이 가능하다는 걸 이 책이 다시 상기시켜줬습니다.
클라이언트 개발을 하면서 백엔드가 궁금해진 분, 혹은 이제 막 백엔드 공부를 시작하려는 주니어 개발자분들께 첫 번째 책으로 강하게 추천드립니다. 코드보다 사고방식을 먼저 잡고 싶은 분이라면 특히 더요.

