본문 바로가기

책 리뷰5

[책] 가상 면접 사례로 배우는 시스템 설계 2 이 책이 2편이 나왔습니다. 1편도 많이 유명했었고, 실제 업무에 도움이 되어서 좋았습니다.2편은 2회독 했고, 역시 제 생각을 넓히는 데 많은 도움이 되었습니다.(1회독 끝난 지 꽤 되었습니다. 3달 넘은 것 같네요.) 인상 깊은 내용으로는우선 redis의 big key와 hot key 문제입니다. 이 내용은 꽤 유명하고 redis 공식 문서에서도 다루고 있습니다.실제로 제가 개발하고 있는 서비스에도 hot key 문제가 보여서 수정하고 부하 테스트를 해보려고 하고 있습니다. 2번 째로 인상 깊은 내용은 전자 지갑 파트입니다.이 파트에서 잔액 이체의 트랜잭션을 위해서 redis 대신 RDBMS를 사용해서 분산 트랜잭션을 구현한다는 내용이 있습니다.실제로 정합성이나 트랜잭션이 중요한 서비스는 redis를.. 2025. 4. 20.
[책] 좋은 코드, 나쁜 코드 이번에 읽은 책은 좋은 코드, 나쁜 코드입니다. 클린 코드와 비슷한 내용이 많았지만, 저는 이 책이 더 잘 읽혔습니다. 여기서도 당연히 DI(의존성 주입)이 나옵니다. DI를 이용하여 인터페이스에 의존하도록(DIP) 할 수 있고, 이를 염두에 두고 코드를 설계하라고 합니다. 저도 최근에 우아한테크 프리코스 과제를 해보고 있는데, 이를 이용하여 유연한 코드를 작성했습니다. DI를 이용하여 의존성을 느슨하게 하는 것이 매우 중요하다는 것을 다시 알 수 있었습니다. 제일 인상 깊었던 내용은 요란한 실패와 Enum은 확장성을 염두에 두고 코드를 작성하라는 점입니다. public enum GameName { LOL, MAPLE; } public String getGame(GameName gameName) { sw.. 2023. 10. 24.
[책] 클린 아키텍처 유명한 책이라서 읽어봤습니다. 이 책에서 자주 등장하는 것이 의존성 역전입니다. 이미 알고 있던 내용이지만 자주 등장했었고, 의존성 역전이 매우 중요하다는 것을 다시 한 번 알 수 있었습니다. 김영한 님의 스프링 기본편에서도 자주 등장할 만큼 중요한 단어입니다. 인상 깊었던 것은 아키텍처를 먼저 설계하지 말라는 내용이였습니다. 추후에 필요하다면 아키텍처를 수정하거나 설계해야 한다고 강조합니다. 사실 처음부터 redis를 쓰고 kafka를 이용하여 뭐하고 이렇게 설계하면 이러한 기술에 의존도가 매우 높아져서 추후에 유지보수하기 어렵기 때문에 이러한 말을 한 것 같습니다. 잘 기억이 나지 않아서 다시 한 번 읽어봐야겠네요. 그리고 의존성을 보통 화살표로 많이 사용합니다. 여기서 순환이 있으면 유지보수 하기 .. 2023. 9. 2.
[책] 가상 면접 사례로 배우는 대규모 시스템 설계 기초 리뷰 이번에 읽은 책은 "가상 면접 사례로 배우는 대규모 시스템 설계 기초" 입니다. 평소에 대규모 트래픽 처리에 관심이 있어서 읽어봤습니다. 다양한 시스템을 설계하면서 어느 부분이 문제가 될 것이고, 이를 어떻게 해결할 것인지 점차 발전하도록 시스템을 설계합니다. 인상깊었던 점은 알림 시스템 관련 파트였습니다. 이전에 스타트업에서 인턴을 하면서 모바일 푸시 관련해서 프로젝트를 했었습니다. 그 때 kafka를 이용했었는데, 이 책에서도 메시지 큐를 이용하여 설계합니다. 그 당시에는 이 책을 읽기 전인데도 불구하고 제가 구현했었던 방법이랑 비슷한 부분이 많았습니다. 지금까지는 프로젝트를 진행하면, 대규모 시스템에 대한 고려는 잘 하지 않고 설계를 했었습니다. 하지만 대규모 시스템이 된다면 메시지 큐를 이용하여 .. 2023. 7. 25.
[책] 객체지향의 오해와 진실 리뷰 현재 프로젝트를 진행하고 있는 팀원과 이 책으로 스터디를 진행했습니다. 서로 파트를 정해서 읽고 정리하고, 개인 생각을 말하면서 스터디했었습니다. 저는 이 책에 대해 매우 만족합니다. 인상 깊었던 내용 객체의 핵심과 객체를 어떻게 설계할 것인지에 대해 설명을 해줍니다. 객체 간의 협력이 중요하고, 이를 위해 메시지가 필요하며 객체에 집중하기보다는 메시지에 집중하여 설계하라고 합니다. 객체에 집중하게 되면 객체의 데이터부터 만들게 되고, 이는 객체 내부의 데이터를 안 상태에서 메시지를 설계하기 때문에 캡슐화가 깨질 수 있습니다. 이를 데이터 주도 설계라고 합니다. 그리고 이렇게 함으로써 인터페이스로 분리할 수 있고 이는 TDD까지 이어질 수도 있습니다. 이 내용이 인상 깊었는데, 그 이유는 처음 인턴 하면.. 2023. 5. 22.