[리뷰] Do it! 장고+부트스트랩 파이썬 웹 개발의 정석
in Review on Review, Book, Django, Bootstrap, Python, Postgresql, Nginx, Git, Docker, Cloud, Pycharm, Https, Tdd, O-auth
이지스퍼블리싱
출판사의"Do it! 장고+부트스트랩 파이썬 웹 개발의 정석(이성용, 김태곤 저)"
를 읽고 작성한 리뷰입니다.
본 도서는 Python - Django 기술을 중심으로 최신 트렌드의 기술 스택을 활용하여 웹 개발 프로젝트의 전반
을 다루는 책이다.
개인적으로는 데이터 분석에 있어 Python을 주로 다루고 있기에 같은 언어를 활용하여 시너지를 낼 수 있는 웹 프로젝트를 개발하고 싶은 마음에 본 도서를 읽게 되었다.
또 다른 이유로 그동안 웹 개발에 주로 활용해 왔던 Java 기반의 개발에서 잠시 벗어나 데브옵스 환경 및 최신 트렌드를 활용한 개발에 구미가 당기기도 했다. 책을 읽고 난 후 결론부터 얘기하면 소기의 목적에 맞는 스킬들을 이 책에서 얻을 수 있어 기뻤다.
책이 어떻게 구성되어 있고, 어떠한 내용을 다루며, 누구에게 도움이 될지 아래와 같이 장점을 중심으로 리뷰해보겠다.
웹 개발 프로젝트에 필요한
모든 과정
을 다룬다.
이 책이 그저 Django 프레임워크에 대한 설명을 다룬다던가, 아니면 웹 개발을 위한 Python 문법 정도만 다뤘다면 이 책에 높은 점수를 부여하긴 힘들었을 것이다. 그런 책은 시중에 널려있는 데다 인터넷 검색으로 쉽게 정보를 얻을 수 있기 때문이다.많은 장점 중에서도 이 책이 가지는 최고의 장점을 꼽으라면
웹 개발의 전과정
을 다루는 점을 꼽고 싶다. 웹 개발에 10년 이상 종사한 경험에 비추어 볼 때 주니어에서 시니어로 넘어가는데 겪는 어려움은 대부분 프레임워크, 서버, Echo 환경 간호환성 측면이나 연결
부분에서 발생한다. Django 프레임워크 활용법이 미숙하거나 Python 문법에 익숙치 않아 겪는 문제보다는 WebServer와 Django의 호환성, DB 연동에서의 이슈, 도커와 Git을 활용한 배포 이슈, TDD와 관련된 의사소통 등에서 주로 어려움을 겪는다. Django나 Python 자체만의 어려움은 요즘 레퍼런스들이 워낙 좋아 인터넷 검색만으로도 쉽게 트러블 슈팅이 가능하다.주니어들이 상대적으로 이런 프레임워크 및 서버 간 연동에 어려움을 겪는 이유는 대부분 경험 부족인데 웹 프로젝트 전체를 아우르는 경험이 상대적으로 부족하기 때문이다. 이런 측면에서 볼 때 웹 개발 환경 전반을 모두 다룬다는 것은 전체 프로세스에 대한 역량을 미리 쌓아볼 수 있어 큰 행운이라 할 수 있다. 책이 600p가 넘는 상당한 분량을 갖는 이유 또한 이런 전과정을 모두 다루고 있기 때문이다.
BootStrap - Git - Pycharm - Test - Docker - Cloud
에 이르는 전 과정을 그저 나열식으로 설명하는 것이 아닌타임라인에 따라 유기적으로 배치한 구성
이 일품이다. 저자 특유의 전달력으로 알기 쉽게 전달해주기 때문에 책을 읽고 생기는 궁금증만 스스로 더 능동적으로 학습한다면 최단 시간 내 시니어의 경지에 오를 수 있을것이다.- 최신 트렌드를 활용한 기술 스택이 돋보인다.
BootStrap
BootStrap은 프런트 엔드 지식이 풍부하지 않은 사람도 단 시간내에 실력있는 퍼블리셔 혹은 프런트 엔드 개발자의 퍼포먼스를 낼 수 있게 도와주는프런트 엔드 프레임워크
다. 책의 분량이 상당한데 적당한 완급 조절을 위해 그리고 너무 프런트 엔드에 치우치지 않도록 저자의 선택이 돋보였다.HTML, JavaScript, CSS 등의 지식은 독자 수준에 따라 각각의 요소마다 한 권의 책을 할당해도 설명이 부족할 수 있는 부분인데 이를 한 큐에 해결하기에는 BootStrap이 제격이다. Django의 특성 상 백엔드에 초점이 맞춰져 기술될 수 밖에 없는 주제의 특성 상 프런트 엔드에 소홀해 질 수 밖에 없는데 직접 눈으로 보고 이해하려는 UI 부분을 한정된 지면 내에 효과적으로 설명하기 위해 BootStrap을 사용한 것은 최신 트렌드에 부합하며 독자들의 집중력 유지에 도움을 준다고 평할 수 있겠다.
Docker와 클라우드
데브옵스
의 개념이 널리 퍼진지 오래이지만 그럼에도 아직까지 Docker를 사용하지 않는 회사가 더 많을 것이다. 대부분 사내 데이터 혹은 인프라 센터를 보유하고 있기 때문이다. 이를 거꾸로 생각하면 사내 레거시에 배포하는 것 보다 데브옵스의 개발환경에 익숙치 않은 개발자들이 많다는 의미일 것이기에 상대적으로 보다 최신 트렌드인 데브 옵스 환경을 간접적으로 경험하고 싶은 이들에게 본 도서는 유기적인 프로젝트 수행 능력을 향상시키는데 도움을 준다.AWS와 같은 클라우드를 활용할 기회가 없던 독자에게는
클라우드의 기본 맛을 보는데 이만한 경량 예제도 없다
는 생각이 든다. 더불어 Docker 기반으로 개발한 프로젝트를 AWS로 이식하는데 얼마나 편리한지 느끼며 현재의 레거시를 데브옵스 환경으로 바꾸기 위한 최소한의 기술을 습득할 수 있을 것이다.Git
아직도 사내에 Git을 사용하지 않는 회사가 많다. 인력, 예산 등의 문제로 인해 기존 레거시를 업그레이드 하지 못한 회사도 있을 것이고 GitHub 오픈소스 정책과 부합하지 않는 면도 있을텐데 버전 관리에 있어 역시 최신 트렌드를 활용함으로써 SVN 등의 전통적인 형상 관리에서 벗어나 Git을 익히고 싶은 독자에게는 큰 도움이 될 수 있는 부분이다.특히 Git은 1개의 챕터에서 모두 설명하고 끝나는 방식이 아닌 처음 블로그 예제를 개발하며 리포지토리를 설정하고
중간 중간 필요시마다 커밋하는 등 실전과 동일한 이벤트마다 활용
하고 설명해주고 있기에 보다 빠른 이해와 습득이 가능할 것이다.TDD(테스트 주도 개발)
물론 테스트 주도 개발은 나온지 꽤 오래된 개념이다. 개인적으로 2005년 Ruby 기반의 TDD 번역서에서 처음으로 접했기에 이미 상당히 오래된 개념인데 실제로 프로젝트를 수행하면서 TDD를 제대로 접목하여 쓴 경험이 별로 없다.하지만 Django 기반의 TDD는 적어도 국내에서는 역사가 그리 깊지 않다. Python 자체가 웹 프로그래밍에 있어 주류가 아닌데다 최근 AI, 데이터 주도의 열풍에 힘입어 다시 각광받기 시작했기에 이런 특수한 환경을 고려할 때
Django 기반의 TDD 능력을 향상
시키는데 도움이 된다. 더불어 규모가 작은 회사의 인력 문제로 QA부서가 없거나 테스트 환경이 변변찮은 회사에서의 경험만 있는 이에게도 최소한의 커뮤니케이션 능력을 갖추는데 보탬이 될 것이다.Pycharm과 그 외의 것들
Python에 있어 Pycharm을 뛰어넘는 IDE는 아직 들어본 적이 없다. 개인적으로 PyCharm을 사용하면 할수록 편리하게 느껴지는 매력을 느끼고 있으며, 문명이 발전할수록 시간의 소중함에 대한 인식은 점차 증가하기에 최근에는알고리즘의 성능만큼이나 개발자 생산성 측면에서의 퍼포먼스
도 중요시 되어가고 있다.그 외에도 구글 O-Auth를 활용한 소셜 로그인 연동 기능과 HTTPS 인증서를 개인 차원에서 무료로 발급받고 웹서버와 연동하는 방법도 다루고 있다.
Django 본연의 목적에 대한 설명도 충실하다.
Django 프레임워크 본연에 대한 설명도 일품이지만, Java 진영에 Spring이라는 뛰어난 프레임워크만이 가지고 있는 장점이 있듯Django만이 가진 Python 생태계에서만 활용 가능한 장점
이 소개되어 있다.MVC 기법과 유사한
MTV 패턴을 시작으로 템플릿, 다대다 관계의 카테고리, Tag 모델 및 페이지, 외부라이브러리 활용법, 댓글, 검색, 아바타, 대문, 자기소개
등 웹 페이지에서 개발하는 대부분의 컴포넌트 및 페이지를 하나의 블로그를 완성해가며 꼼꼼히 다룬다. 놀라운 것은 Django 파트만 발췌해도 능히 훌륭한 책인데 앞서 언급했던 장점들인 유관 Echo들을 전부 다루고 있기에 종합 선물같은 느낌을 받을 수 있다.가급적 연관된 모든 개념을 설명하고자 노력한다.
책의 실습과정 중간에 HTML Escaping, Mixin 같은 개념들이 나오는데 사실 웹 프로젝트를 진행하는데 알아둬야 할 내용이긴 하지만 Django와 직접적인 관련이 없기에 굳이 설명하지 않는다고 해도 나무랄 독자는 적을 것이다.그럼에도 이런 번외 개념조차 “알아두면 좋아요” 박스와 같은 별도의 구성을 통해 하나하나 짚어보고
애매한 개념을 그냥 지나가는 법이 없다
. 저자의 장인정신과 가르치고자 하는 의지 그리고 꼼꼼함이 모두 녹아 있는 듯 해서 매우 만족스러웠다. 책을 쓰는 것은 보통 고된 작업이 아니므로 대부분 어느 지점에는 타협을 보게 마련일텐데 ‘네가 아무리 노력이 부족하고, 능력이 부족할지라도 반드시 알 수 밖에 없을 것이다.’라고 말하는 듯한 저자의 강한 의지가 느껴졌다.개념을 쉽게 풀이해준다.
앞서 언급했듯 웹 개발의 A to Z를 다루기에 분량이 상당하다는 점, 배울 것이 많다는 점을 저자들도 충분히 알고 있는 듯 하다. 어려운 개념을 매우 쉽게 설명하고자 노력하는 점,가급적 원론 보다는 실습코드와 시각화를 통해 이해를 유도
하는 점, 특히 깊이있는 설명을 할 수 있음에도실습 진행에 필요한 최소한의 개념만 언급하며 완급 조절
하는 점에서 독자들을 위한 배려가 느껴졌다.저자 본인들이 겪었던 시행착오나 삽질을 그대로 녹였다.
또 하나 상당히 마음에 들었던 점은 프로젝트 완성 목표 지점에 도착하는 것만으로도 보통 일이 아닐텐데 아래 그림처럼가끔 일부러 실수를 유발하도록 안내
한다는 점이다. 초보자들이 자주 겪는 실수나 혹은 저자 본인들이 겪었던 실수를 그대로 따라해보고 어떻게 해결해야 하는지 언급하는 구성이 종종 눈에 띈다.이런 설명은 단순히 실수를 방지하는 차원을 떠나 Django 프레임워크의 눈에 보이지 않는 내부 매커니즘에 대한 감을 깨닫는데 큰 도움이 된다. 실수야 반복을 통해 충분히 보완할 수 있지만
내부 매커니즘의 감을 잡는다는 것은 전문가를 위한 길이며 긴 경험 없이는 결코 축적하기 어렵기 때문
에 박수 갈채를 보내고 싶다.Do-it! 도서 시리즈의 최대 장점, End-to-End 구성
요즈음 머신러닝 진영의 파이프라인 구성 트렌드는 End-to-End 구성이다. Input이 바로 Output으로 직결된다는 의미인데 그와 유사하게 Do-it!시리즈는아무것도 모르는 독자가 전문가 수준의 퍼포먼스
를 내는데 가장 빠른 지름길이라는 생각을 여러번 해왔다. 전혀 경험하지 못한 지식을 빠르게 익히고 싶을 때 나는 보통 Do-it! 시리즈 중 출간된 책이 있는지 확인하는 편이다.물론 Do-it! 시리즈가 초급 기술을 주로 겨냥하고 있어 아쉬운 측면도 있다. 이제 나름 업계 짬밥도 차고 실력이 늘어가니 예전만큼 Do-it! 시리즈를 접할일이 줄어들고 있기 때문이다. 하지만 적어도 웹 개발이 전무하거나 Django 등 위에서 소개한 기술 스택이 하나라도 처음인 독자가 있다면 이 책이 분명 효율적인 지름길이 될 것이다.