[서평] 백엔드 개발을 위한 핸즈온 장고
저의 돈으로 직접 사서 직접 완독해 본 후 써보는 후기입니다. 따라서 장점은 장점대로 칭찬할 것이며, 단점은 단점대로 언급할 것입니다.
Java, Kotlin, Spring만 줄곧 사용해 오다 이번에 기회가 되어 Django REST Framework을 공부해 볼 수 있는 기간이 생겼다.
<읽은 기간>
2024/03/01 ~ 2023/03/09
<리뷰 순서>
1) 책의 표지
2) 단원별 구성
3) 읽은 소감
우선 저의 글의 앞부분만 보는 분들을 위해 먼저 간단히 4가지에 대해 답해보겠습니다.
Q 이 책을 읽기 전에 필요한 수준/ 지식은?
=> 일단, 저자는 주니어 개발자 or 입문자를 위한 책이라 하긴 했는데... 음, 개인적으로 나처럼 (다른 진영의 서버사이드 기술을 한 번쯤 공부해 본 상태에서) DRF를 처음공부하는 주니어, 입문자인 것 같다? 진짜 쌩 초보가 이걸로 서버 기술을 처음 공부하면 ORM에서 이미 정신 못 차리고 있을 것 같다 ㅋㅋㅋ
Q 이 책을 읽어야 할 필요성, 어디에 도움이 될까?
=> 우선 Django 기반의 API 생산을 경험해보고 싶은 독자에 게 정말 도움이된다. 또한 Serializer나 View에 대하여 처음 입문용으로도 좋은 것 같다.
다만 DRF 내용 자체가 여러 Serializer나 View에 대한 공부가 필요한것이 사실이라, 이 책 한 권만으로는 모든 부분을 커버하기는 어려울 것 같다. 그래도 DRF 찍먹 해보기에는 적합한 책이다.
Q 이 책을 읽은 후 추후 공부는?
=> 우선 개인적으로 DRF가 재미있긴 했어서 인프런에서 다음 강좌 또한 구매하여 수강해보게 되었다.
책에서는 얻을 수 없었던 핵심사항과 View에 대한 시야를 넓힐 수 있었던 좋은 강좌였다!
아마 이 책과, DRF 강의 정도를 들으면 다른 서버사이드 개발 경험이 있다는 가정하에 DRF로 개발이 당장 진행을 가능할 수준이 될 수 있었다. (다만 잘하는 느낌은 아니다... 레퍼런스 계속 보면서 개발해야 했다)
1. 책의 표지
표지가 아주 깔끔하다 생각된다! 군더더기 없이 마음에 드는 디자인이다!
또한 Django(장고) 인 만큼 서부의 보안관 느낌의 표지를 선택한 디자이너의 안목이 매우 훌륭하다 생각된다!
2. 단원별 구성
이책의 구성은 다음과 같다.
내가 느끼기에 크게 3개의 part로 나눠지는데, (DB, 직렬화, Controller) 이렇게 나뉘는 것 같다.
DB에서는: Django의 모델링, 마이그레이션을 통하여 DB와 모델을 매핑하는 방법을 배우고, 이후 ORM 사용법을 학습하게 된다.
직렬화에서는 : DRF에서 Json과 객체 간의 직렬화, 역직렬화하는 방법에 대하여 학습한다.
Controller에서는 : url과 view, serializer를 매핑하는 방법에 대하여 배운다.
목차 구성 초반을 보면 알겠지만, 파이썬 문법에 대한 직접적인 언급은 없다.
거의 바로 모델링과 마이그레이션, ORM과 쿼리 셋이 나오게 된다.
즉 저자가 중요하게 생각하는 부분인 Core만 담아낸 깔끔한 책이라 생각된다.
여러 장들이 다 재미있었지만, 그중 4장 직렬화 파트를 중점적으로 리뷰를 남겨볼까 한다.
3. 직렬화
3-1) 설명에 대한 흥미 유발부터!
모든 쳅터가 그러하듯, 저자는 시작단계에서 해당 기술이 나오게 된 이유나, 원리를 설명해 주는 방식을 택하고 있다.
이렇게 초반에 독자의 흥미를 끄는 방식이 매우 잘 먹혀들어간 것 같다고 생각한다.
예를 들어 위 사진에서는 "직렬화"라는 개념 자체를 처음 들어봤을 만한 초심자를 위해서 JSON <-> 객체 간의 변환 과정을 하나하나 다 설명해주시고 있다.
3-2) 어려운 내용은 그림을 적극 사용!
위 사진처럼 NOTE에 간혹 DRF와는 관련 없지만 재미있는 꿀팁이나 스토리들이 있는 점 매우 좋을 것 같다.
난 책을 읽을 때 이런 NOTE에 농담이 있는 책들을 선호하는데, 읽다가 중간에 한번 쉴 수 있는 타이밍이랄까?
여하튼 이 책은 이런 점이 있어서 좋았다!
또한 그림으로 직렬화를 설명해 주듯, 어려운 다른 개념들도 다 그림을 통해 직관적으로 이해시켜 주시려 노력하는 점이 느껴졌다.
다음 그림 또한 그 방식을 이해할 때 정말 많은 도움이 됐었다.
3-3) 코드와 설명이 필요할 때는 그만큼 자세하게~
본격적으로 직렬화에 대한 기술이 어떤 기술인지? 왜 나오게 되었는지를 설명해 주는 부분이다.
3-4) 가로로 표현한 방식! 아주 독특하다!
그리고 이 책의 가장 독특한 점이다, 다른 책에서 잘 못 보던 방식인데!! 바로!! 가로로 길게 표현하는 방식이다!!
쿼리가 동작하는 방식이나, 그림이 길어질 필요가 있는 내용을 가로로 돌려서 설명해 주는데, 이게 생각보다 좋다.
이 책은 사용자의 요청부터 응답까지의 한 사이클이 필요한 내용에 대해 90도로 돌려서 표현했다.
이 방법이 정말 참신하게 다가왔는데, 어떻게든 세로로 된 한 페이지에 표시할 수 있도록 노력하려 대부분의 책에서는 그렇게 하였으나, 이 책은 그냥 돌려서 보도록 하였다는 사실이다.
사실 모니터로 보는 것도 아니고, 조금 돌려서 보는 편이 더 잘 설명할 수 있다면, 그렇게 보면 되기 때문에 이 부분은 좋았다고 생각한다.
3-5) 이따금씩 등장하는 면접 질문들과 CS
이 책이 독특한 이유가 여러 가지 있지만, CS와 관련된 면접 질문들을 적어준 점이 정말 좋다 생각했다.
네트워크를 가볍게 공부했다면 함정에 빠질 수 있는 위와 같은 질문에 대하여 저자의 생각과 답변을 남겨주었다.
이런 부분이 많지는 않지만 쳅터당 하나 정도는 항상 있었던 것 같다.
이런 사소한 부분들이 책의 퀄리티를 전반적으로 올려준다 생각된다!
4. 읽은 소감
4-1) 장점
우선 DRF를 처음 공부하는 사람에게 매우 추천한다.
쓸데없는 내용을 거의 제거하고, 핵심적인 내용을 위주로 설명해 주시며 책을 읽을 때 레퍼런스 같은 느낌의 책은 아니라 읽는 즐거움이 있는 책이다.
특히, 이 책은 대상자인 주니어 개발자들을 위한 배려가 담긴 책이다.
기술면접에 대한 부분 등 주니어를 위한 지면이 많이 할당되어 있다.
물론 이러한 부분이 DRF 자체의 내용과 조금 떨어진 이야기 일 수 있지만, 최소한 주니어에게 설명한다는 느낌은 지속적으로 주고 있다는 것은 확실하다. 약간 DRF 주니어를 시장 자체에 보급하려는 노력이 보인달까?
추가적인 DRF에 대한 나의 경험기가 궁금하다면 다음 글 또한 읽어봐 주길 소망한다!
4-2) 단점
이 책은 일반적으로 실습하며 따라 하기에 좋은 책은 아니다.
이 책은 다른 실습기반의 책처럼 코드를 작성하며 결과를 확인하고, 그것을 이어가며 프로젝트를 완성하기 좋은 책이 아니다.
관점을 달리하여, 하나의 프로젝트를 시작해야 하는데, 장고라는 프레임워크를 이용해서 구성하려는 중이고, 그 과정을 알려주는 책에 가깝다.
Github상에 코드를 제공하고 있지만, 책에서 설명하는 코드들을 어디다 작성해야 하는지? 알기 쉽지 않다.
또한 실습 예제가 나오는데, 그 예제를 어느 파일에다 생성해서 작성해야 하는지도 알기가 쉽지 않다.
또한 실습을 하려면 기본적으로 VENV와 같은 가상환경과 Docker 기술을 조금은? 선수적으로 알아야 할 것 같다는 단점이 있다.
나 또한 어느 순간부터 코드를 치기보다는 그냥 책의 내용만 읽게 된 것이 사실이다.
DRF 처음 공부하면 이 책 강 추입니다!