Django vs. Flask 전쟁


파이썬/장고 | 2019-01-15 02:01 | comments | 2,734 views


안녕하세요.

핀코인입니다.

이번에는 인터넷 커뮤니티에서 종종 볼 수 있는 Django vs. Flask 전쟁 이야기입니다.

Django vs. Flask 전쟁을 보면 예전에 vim vs. emacs 전쟁도 떠오릅니다. (참고로 저는 emacs를 쓸 줄 몰라서 vim파입니다.)

과연 Django, Flask 어느 것을 쓰는 것이 좋을지 이야기해볼까 합니다.

1. 모두 파이썬 프레임워크

Django와 Flask는 둘 다 파이썬을 기반으로하는 프레임워크입니다. 이 말은 결국 부모가 같다는 뜻이기도 합니다. 무엇보다도 둘 다 언어의 문법적인 부분에서 매우 흡사할 수 밖에 없습니다.

Django와 Flask 두 프로젝트 모두 웹 서비스 구현이라는 동일한 목표, 목적지를 향해 쓰입니다. 그러나 파이썬 언어의 장단점 또는 그 한계를 두 두 프레임워크 모두 공유합니다.

두 프로젝트의 설계철학이 좀 다르기 때문에 소규모의 프로젝트에서는 A 대신에 B를 쓸 때 얻는 이익이 분명히 존재하고 그 차이가 큽니다. 그러나 규모가 커지면 파이썬 프레임워크로서 결국 동일한 문제를 겪기 마련입니다.

2. 배우는 학생이라면 둘 다 공부하자.

배우는 학생이라면 진리의 둘 다 입니다. 배우는 입장에서는 많이 배우고 많이 알수록 좋습니다. 같이 써보고 비교해서 어느 프레임워크가 자신과 더 맞는지 생산성을 따져보시기 바랍니다. 그리고 나서 나는 OOO 때문에 OOO을 선택했다고 이렇게 블로그 글을 쓰면 됩니다.

실무 개발자는 현업에 도입하려고 할 때 도구에 대한 선택은 신중하게 선택할 수 밖에 없습니다. 업무에 치이고 학습을 위한 시간, 노력 투자도 기회비용이기 때문입니다. 이 경우에는 가장 우선순위는 기능과 성능보다 얼마나 요구사항을 만족하는 결과물을 빨리 구현할 수 있느냐에 더 초점을 맞추는 것이 좋을 듯 합니다.

3. 골라먹는 재미의 Flask

Flask는 골라 먹는 재미가 있습니다. 어떤 확장 모듈 기능을 위한 A, B, C 선택지가 있을 때 자유롭게 선택할 수 있습니다. 반면에 Django는 A를 강요합니다.

A, B, C 선택의 자유로움은 추가로 많은 비교 분석하는 노력이 필요합니다. 하지만 A만 쓰라고 하는 Django는 그런 고민을 할 필요가 없습니다. 선택 결정장애가 있거나 잘 모르겠으면 그냥 Django를 쓰면 됩니다.

Django가 강요하는 A는 대체적으로 큰 문제가 없습니다. 특수한 경우로 내부 로직에서 어떤 기능을 지원하지 않거나 장애가 발생했을 때 이를 해결하려면 엄청난 비용이 뒤따릅니다. 보통은 중소규모 사이트가 아니라 대형 사이트로 성장해가면서 Django 기반 사이트가 이런 성장통을 겪는 것으로 알려져 있습니다.

4. 게시판 or REST API 서버

대표적인 웹 프로그래밍의 사례로 게시판과 REST API 서버를 비교해볼 수 있습니다.

게시판은 사용자 인증, 권한 관리, 폼 검증, 관리자 페이지 등이 기본적으로 필요합니다. 이런 경우 일반적으로는 Django 개발이 더 생산적일 것입니다.

반면에 REST API 서버처럼 요청과 응답이 매우 확정적인 경우에는 가볍고 군더더기 없는 Flask 개발이 더 효율적일 것입니다.

나홀로 핀코인 쇼핑몰 서비스를 개발해야 하다보니 핀코인은 다양한 개발 편의를 제공해주는 Django를 선택했습니다.

4. 결국 취향 차이이다.

Django와 Flask 모두 해외 레퍼런스 사이트를 보면 대형 사이트에서 도입하고 있습니다. 즉, 기능과 성능, 확장성 문제는 시간과 돈이라는 비용의 투자가 뒤따르기 마련이지만 둘 다 극복할 수 있는 문제입니다.

소규모 사이트에서 시작해서 대형 사이트로 성장할 때 Django의 최적화 부분이 많이 어려운 것으로 알려져 있습니다. 그렇다고 너무나 신중한 나머지 굳이 Flask를 선택할 필요는 없습니다.

빠른 기능 구현으로 사이트 오픈하고 서비스를 제공해서 스타트업의 사업타당성을 따져보는 것이 더 의미 있는 일이라고 생각합니다. 그러다가 규모가 커져서 Django의 한계를 느낄 때는 이미 매출이 검증된 큰 사이트일 것이기 때문에 그 때 리뉴얼해도 늦지 않다고 생각합니다.

핀코인은 Django 기반 쇼핑몰/블로그 사이트입니다. 보다 많은 서비스를 제공하고 엄청 많은 사용자가 접속해서 scalability, availability, performance로 고민 좀 해보고 싶습니다.

대한민국 1등 온라인 상품권 쇼핑몰 핀코인!

감사합니다.


#Django #Flask


Related Posts

blog comments powered by Disqus