Intro
안녕하세요 똑똑한 개발자에서 백엔드 개발을 하고 있는 강수빈입니다. 오늘은 파이썬의 대표적인 Web Framework 3가지를 소개하고 비교해보도록 하겠습니다.
Django
첫번째로 가장 많이 쓰이고 있는 Django입니다. Django는 20003년에 만들어져, 전 세계에서 가장 많은 인기를 누리고 있는 웹 프레임워크 중 하나로 Instagram, Youtube등에서 활용되고 있습니다.
견고하고 직관적인 특징을 갖고 있으며, 재사용 가능한 코드를 장려함으로써 큰 인기를 얻고 있습니다. 특히 풀스텍 웹 프레임워크로써는 Django가 압도적인 지지를 받고 있습니다.
장점
- Django는 보안부터 DRF(Django Rest Framework), ORM, 서드파티와의 연계 등 대부분의 기능이 갖추어져 있습니다.
- 거대한 커뮤니티와 상세한 문서를 통해서 개발하는 데에 필요한 정보를 빠르게 취득할 수 있습니다.
- 편리한 admin패널과 풀스텍 개발에 강점을 가지고 있습니다.
단점
- 다른 프레임워크에 비해 상대적으로 사이즈가 부담스러운 면이 있습니다.
- 상대적으로 느린 속도를 갖고 있습니다. 이를 위한 뛰어난 캐시시스템과 3.0이후 버전부터 ASGI를 지원하고 있지만, 무거운 느낌이 있습니다.
- Django ORM은 SQLAlchemy이전의 ORM을 쓰고 있어서, SQLAlchemy를 지원하는 다른 프레임워크에 비해 상대적으로 유연하지 않고 열등하다는 평가를 받고 있습니다.
Flask
두번째는 파이썬 웹 프레임워크로써 Django와 항상 1,2위를 다퉈온 Flask입니다. Flask는 Micro Web Framework로 설정이 쉬운 웹 개발 프레임 워크이며 최소한의 웹 애플리케이션을 개발하는데 주로 사용됩니다.
최소한의 셋팅을 제공하고 다양한 라이브러리를 통해 원하는 기능들을 제작자의 입맛에 맞게 추가하는 방식으로 확장이 용이하여 유연하다는 것이 가장 큰 특징입니다.
장점
- Flask의 유연성은 다른 세가지 프레임워크 중 최고입니다. 다른 웹 프레임워크들과는 달리 Flask의 대부분이 변경가능성을 포함하고 있습니다.
- 코드 몇 줄 이면 시작할 수 있습니다. Django 보다 코드가 10% 정도 밖에 안되는 가벼운 프레임워크 입니다. 꽤 쉽게 이해할 수 있고 꽤 쉽게 개발을 시작할 수 있습니다.
단점
- WSGI를 사용하고 있기에, 한번에 많은 트레픽을 처리하기 어렵습니다. ASGI를 지원하지 않는다면 속도에서는 항상 뒤쳐질 수 밖에 없습니다.(WSGI는 동기, ASGI는 비동기라고 이해하시면 됩니다.)
-
가벼운 프레임워크라는 말은 개발자가 하나부터 열까지 다 신경써야하는 것을 의미합니다. 빠르게 프로토타입을 개발하긴 쉬우나, 규모가 커질 수록 프레임워크에 대한 지식을 필요로 합니다.
FastAPI
마지막으로, FastAPI입니다. FastAPI는 2019년에 개발되어 아직 2년밖에 되지 않았지만, 이름처럼 빠르게 성장하고 있는 프레임워크입니다.
이름에서 알 수 있듯이, 빠른 개발과 고성능을 추구하는 프레임워크입니다. Flask만큼 코드가 간결하지만, 성능만큼은 Go나 Node.js에 견줄만큼 빠르다고 합니다.(실제 벤치마크에서는 Go나 Node.js에는 아직 못 미치는 듯하지만..)
OpenAPI, JSON 스키마 그리고 OAuth 2.0등 다양한 표준들을 기반으로 합니다.
장점
- FastAPI의 최고의 장점은 뭐니뭐니해도 속도입니다. Starlette과 Pydantic을 기반으로 하는 가장 빠른 파이썬 웹 프레임워크 중 하나입니다. starlette를 통한 ASGI지원과 Pydantic의 간편한 유효성 검사는 큰 강점입니다.
- 코드를 분석하여 OpenAPI문서를 자동으로 생성합니다.
- GraphQL을 지원합니다.
- 뛰어난 문서를 갖고 있습니다. 아직 작은 생태계를 갖고 있다는 단점을 뛰어난 문서로 보완할 수 있습니다.
단점
-
아직 2년밖에 되지 않은 프레임워크라 앞서 언급했다시피 다른 프레임워크들에 비해 커뮤니티의 규모가 작습니다.
총평
Django와Flask는 많은 기업에서 활용되어 왔고, 그로 인해 큰 커뮤니티를 형성하고 있습니다. 이는 해당 프레임워크로 개발하는 개발자에게 큰 도움이 될 수 있습니다.
FastAPI의 경우 상대적으로 작은 커뮤니티를 형성하고 있지만, 상세한 문서로 이를 보완하고 있어 새롭게 배우기 쉽도록 하고 있습니다.
Django는 여러 기능이 있고 프로덕션에서 매우 잘 작동하기 때문에 강력한 풀 스택 웹 사이트를 구축하려는 경우 완벽합니다.
Flask는 웹 애플리케이션을 빠르게 프로토 타입으로 제작가능하고, 단일 파이썬 파일로 간단한 웹 앱을 만들기 쉽습니다.
FastAPI는 성능을 추구한다면 가장 적합하다고 할 수 있습니다.
결론
이렇게 파이썬의 대표적인 웹 프레임워크 세가지를 알아봤습니다.
모든 프로젝트가 저마다의 특장점을 가지고 있기 때문에 자신이 하려는 프로젝트의 특성을 정확히 파악하고, 이에 맞는 프레임워크를 사용한다면 그게 바로 최고의 프레임워크가 되지 않을까 생각합니다.
위의 세가지 외에도 파이썬에는 많은 웹 프레임워크가 있으니 관심있으신 분들은 더 알아보셔도 좋을 것 같습니다.
오랫동안 단단한 입지를 구축하고 있는 Django, 마이크로 웹 프레임워크로 간단하면서도 유연한 Flask, 빠르게 인기를 얻고 있고 앞으로가 더 기대되는 FastAPI까지 대표적인 파이썬의 웹 프레임워크들을 알아봤습니다.