가장 빠른 풀스택을 위한 Flask & FastAPI - 한 권으로 정리하는 파이썬 백엔드
Dave Lee 지음 / 비제이퍼블릭 / 2024년 5월
평점 :
장바구니담기


왜 Flask & FastAPI인가?

우선 한 가지 질문부터. Flask면 Flask고, FastAPI면 FastAPI지 왜 둘을 한 권에 묶어놓았을까? 서로 장단점이 갈릴 수야 있겠지만, 결국 상호보완적으로 함께 쓰이기보단 둘 중 하나(주로 FastAPI)만 사용하게 되지 않나?

내가 보기에 그 이유는 첫째, 둘이 비슷하다. 하나 배우고 조금 더 보태면 나머지 하나도 배울 수 있다. 둘 다 한 권으로 묶어야 이 책의 8장처럼 함께 본격적으로 비교하는 챕터도 자연스럽게 실릴 수 있다.

둘째, 아마도 Flask와 FastAPI 둘을 비교한 후 이 중에 하나를 선택하고자 하는 독자들이 많을 것이다. 혹시 그런 비교에 관심없고 동전을 던져서 아무거나 하나를 고르려는 사람이 있다고 할지라도, 선택의 이유에 대한 질문을 언젠가는 받게 될 것이다. 월급 받는 직원이 동전 던져서 정했다고 하면 동전처럼 던져질지도 모른다. 즉 이러한 실질적인 수요를 충족시키기 위한 구성이다.



쉽지만은 않은 책이다


처음 "Hello World" 코드를 보았을 때만 해도 쉬운 내용일 줄 알았다. 이를 응용해서 서버와 입출력 값을 주고받는 간단한 덧셈 계산기를 Falsk와 FastAPI로 아래와 같이 뚝딱 만들어보았고, 이 과정에서 특별히 막히지 않았다. 쉽네 쉬워~



──라는 생각은, 하지만 페이지를 넘길수록 점점 바뀌게 되는데 …… ㅋ 아무리 편리하고 간소화된 프레임워크라고 해도 서버에 대해서, 데이터베이스에 대해서 알아야 할 최소한의 지식들을 면제해주진 않는다.


  파이썬 기초 문법만 떼고 넘어온 독자라도 책에 나온대로 코드 치니까 서버도 켜지고 다 되네? 하며 많은 부분을 대충 얼버무리고 떼우는 데 그럭저럭 성공할 수 있을지 모른다. 하지만 아마도 다음 세 가지 허들만큼은 그런 식으로 쉽게 넘어가기 힘들 것이다.


 1. DB/SQL : ORM에 대해 어느 정도 설명하긴 하지만, 그 밑바탕이 되는 데이터베이스 이론부터 이 책이 차근차근 알려주진 않는다. 책에서도 SQL을 사용할 줄 알고 PC에도 이미 설치되어 있다는 전제로 설명한다고 아예 명시하였다. 아무리 CRUD 개념을 직관적으로 단순하게 받아들인다 해도, Transaction과 Rollback의 의미조차 모르면 곤란할 것이다.


 2. HTML/CSS/JavaScript : 역시 알고 와야 한다. 이 책의 웹 코드는 Bootstrap을 사용하는데, 물론 Bootstrap이 별 거 아니긴 하다(ㅋ). 그래도 코드를 읽고 Bootstrap을 써서 스타일을 꾸몄구나 하는 정도는 이해할 수 있어야 한다. 


 3. 비동기 프로그래밍 : 마찬가지로 이 책의 도움을 받기보단 스스로 넘어와야 할 문턱이다. 비동기 프로그래밍의 개념을 이해하고, 구체적으로 async 키워드가 붙은 구문의 흐름을 따라갈 수 있어야 한다.


  즉 "Full Stack"은 결코 동네 강아지 이름이 아니다! 말 그대로 프론트/백엔드 모두를 다룰 준비가 되어 있어야 한다.


  하지만 그럼에도 불구하고, "Hello World"부터 시작하여 agile하게 살을 붙여나가는 구성은 초반의 허들을 낮춰주는 데 큰 역할을 하였다고 생각한다. 예전에 Django를 공부할 적에는 직관적으로 잘 와닿지 않는 MVT 패턴이 뭔지 이해하느라 입구에서부터 분투했었는데, 이 책은 app.py(또는 main.py) 안에 일단 모든 코드를 다 때려넣고 나중에 가서 사실은 이걸 코드가 수행하는 내용에 따라 models.py, controllers.py로 나눠서 작성하면 더 좋다고 알려준다. 이쪽의 설명 흐름이 더 받아들이기 수월하다고 생각한다.



실습 책에 나온 코드를 직접 실행해보자! 아래 깃허브 주소에 들어가면 저자가 본문에 등장하는 모든 코드를 올려두었다. https://github.com/DaveLee-fun

 

내 경우엔 이 코드를 완전히 똑같이 쓰진 않고, 약간 수정하였다. 왜냐하면 실행환경으로 선택한 Replit에서 MySQL을 지원하지 않아서 대신 SQLite를 써야 했기 때문이다. 바꿔야 할 부분은 놀라울 정도로 많지 않았다. DB URL을 담은 변수의 문자열 값 한 줄만 바꿔주면, 나머지 코드는 DB의 종류에 불문하고 정상적으로 작동하였다. 이는 SQL이 CS의 역사에서 유래없이 성공적으로 표준화된 언어여서이기도 하고, 또한 ORM 라이브러리인 SQLAlchemy가 그만큼 잘 만들어진 탓이기도 할 것이다. 이 SQLAlchemy를 알게 된 것이 중요한 소득 중 하나라고 생각한다.




자동 문서화 : Swagger / Redoc SQLAlchemy 못지 않은 소득이 또 있다. FastAPI는 Swagger와 Redoc이라는 자동 문서화 기능을 기본적으로 제공한다. URL 뒤에 각각 /docs, /redoc을 붙이면 해당 문서로 접속된다. 얼마나 잘 만들어줄까 싶었는데 완성도가 엄청나다.


이러한 자동 문서화 기능을 알게 된 이상, 다시는 직접 손으로 문서를 작성하지 못 할 것 같다.ㅋ



결론 : 나의 선택은 FastAPI

처음에는 Flask가 좀 더 단순하다는 인상이 있었지만, 생각해보니 그 인상의 대부분은 Flask를 동기식 프로그래밍과, FastAPI를 비동기식 프로그래밍과 묶어서 생각한 탓이었던 것 같다. FastAPI가 보다 비동기식 프로그래밍에 친화적이긴 하지만, 그것이 곧 두 프레임워크간의 본질적인 복잡성 차이를 결정짓진 않는다.

Flask는 보안 측면에서 보다 취약하고, FastAPI의 물리적 성능이 더 좋으며, 게다가 FastAPI에는 자동 문서화가 기본 옵션으로 따라온다! Flask가 보안이며 자동 문서화며 부족한 부분을 외부에서 끌어와서 만회하다보면 그만큼 더 복잡성이 커질 것이다. 자, 이제 누가 더 복잡하지? 현업에서도 대체로 Flask에서 FastAPI로 마이그레이션하지 그 반대의 경우는 없다는 것 같다.

Flask & FastAPI는 당장 쓰기 위한 공부였다. 이 책을 읽고 구체적인 근거를 바탕으로 명확한 결정을 내릴 수 있었다.



댓글(0) 먼댓글(0) 좋아요(1)
좋아요
공유하기 북마크하기찜하기 thankstoThanksTo
 
 
 
줄리아 프로그래밍 - 수리 계산, 통계 분석, 딥러닝, 데이터 시각화를 위한
류대식.전기현 지음 / 비제이퍼블릭 / 2024년 4월
평점 :
장바구니담기


저자의 설명을 따라가면서 그동안 줄리아에 대해 궁금했던 많은 부분을 해소할 수 있는 유익한 시간이었다. 무엇보다 인상적이었던 이 책의 탁월한 부분이 있는데, 분석 목적으로 줄리아를 배우려는 非 CS 전공의 학습자들에게 모르면 아쉽고 알면 요긴한 CS 지식을 적재적소에서 꼼꼼하게 짚어준다는 점이다.

데이터 분석이라는 게 CS 지식을 깊이 몰라도 약간 나사 하나 빠진 채로(?) 어떻게든 할 수 있는 일이면서도, 그 빠진 나사 구멍에서 영원히 물이 샐 수가 있는데(ㅋ), 나도 이 책을 읽으면서 구멍을 몇 개 막았다. '일급 객체' '문법적 설탕' 같은 용어들을 비롯하여, 일반적으로 좋은 함수가 추구하는 방향과 정반대로 가는 익명 함수의 아이러니라든지 등등 ……

이 책을 읽으면서 당연히 줄리아를 어느 정도 익히게 될 줄은 알았다. 하지만 이 구멍들을 여기서 막을 줄은 몰랐다. 특히 함수형 프로그래밍 챕터는 줄리아라는 언어를 떼어놓고 일반적인 언어론 관점에서 봐도 알찬 공부가 되는 내용이었다고 생각한다.

다만 한 가지 아쉬운 부분이 있다면 책의 소스 코드를 공개 저장소에 오픈해두지 않았다는 점인데, 사실 내가 그런 코드들 깃허브에서 잔뜩 스타만 찍어놓고 다시 들여다본 역사가 없기 때문에(ㅋ) 가슴에 손을 얹고 그리 아쉬운 일이 아닌 것 같기도 …… ? 책에 나오는 예시 코드들의 분량이 그렇게 길지도 않고, 블로그에 가면 책이랑 약간 구성이 다르긴 하지만 웬만한 코드들 다 있다. 그러므로 큰 문제 없다.


보다 자세한 리뷰는 아래 블로그 링크를 참고해주세요!

http://blog.naver.com/kimpro82/223461284769


댓글(0) 먼댓글(0) 좋아요(0)
좋아요
공유하기 북마크하기찜하기 thankstoThanksTo
 
 
 
Super Trader 슈퍼 트레이더 - 슈퍼 트레이더가 갖추어야 할 단 하나의 황금률!
반 K. 타프 지음, 신가을 옮김 / 이레미디어 / 2012년 9월
평점 :
구판절판


아무도 보지 마세요 …… 금서입니다. 저만 볼 겁니다.

댓글(0) 먼댓글(0) 좋아요(0)
좋아요
공유하기 북마크하기찜하기 thankstoThanksTo