[파이썬 백엔드] Django vs FastAPI 무엇을 써야할까?

Soonyoung·2024년 5월 4일
1
post-thumbnail

개요

백엔드 개발이라고 하면 주로 자바의 Spring을 이용해서 많이 합니다. 아무래도 오래되다보니, JWT와 같은 다양한 기능을 제공하여 많은 IT 기업에서 선택하는 주류입니다. 특히 한국에서는 백엔드 개발자라고 하면 보통 Spring 개발자를 말하는 경우가 많습니다. 그러나, 최근에는 파이썬을 활용한 백엔드 개발이 점차 늘어나고 있습니다. 파이썬은 배우기가 쉽고 데이터 분석 및 AI 분야에서의 편리함으로 인해 접근성이 좋아지고 있습니다. 또한, 과거에는 성능 문제로 인해 파이썬의 백엔드 개발이 제한적이었지만, C 기반 코드와의 결합으로 인한 속도 향상 또한 파이썬 백엔드 개발이 늘어나는 요인 중 하나입니다. 백엔드 개발자로서 취업에는 자바 스프링이 훨씬 수요가 많긴 합니다.

빠르게 상승하고 있는 python 언어의 인기! 참고 : Python Web development in 2022: Which web frameworks are the most popular by Github stars?

Django와 FastAPI 는 무엇일까?

Django와 FastAPI란 파이썬으로 백엔드를 개발할 때 사용되는 대표적인 웹 프레임워크입니다. 즉, 웹 애플리케이션을 빠르게 개발할 수 있도록 도와줍니다. 가장 오래되고 표준이라고 여겨지는 것은 Django 이고, FastAPI의 경우는 명확한 장점 때문에 점점 인기가 많아지는 프레임워크입니다. 인기가 많아진다고 무턱대고 FastAPI를 사용할 필요는 없습니다. 각각의 장단점을 살펴보고 처음 백엔드 개발 프로젝트를 하는 사람 입장에서 어떤 프레임워크를 사용해야 하는지 도움이 되었으면 좋겠습니다. Flask도 많이 사용되었으나, 제 주변에서는 사용하시는 분을 많이 못 봐서 저는 배울 때 고려하지 않았습니다.

Django의 특징

파이썬 백엔드 개발의 밀-키트!

Django는 재료와 조리방법이 준비되어 있는 밀키트라고 생각하면 됩니다. 요리를 위한 모든 것이 준비되어 있고 그 순서대로 진행하면 됩니다. Django는 웹 개발의 표준으로써 과거부터 현재까지 가장 많이 사용되어 왔습니다. JWT 인증, ORM 기능, 관리자 인터페이스, 템플릿 등 웹 개발에 필요한 대부분의 기능을 포함하고 있어서 개발자 입장에서 신경쓰고 새롭게 구현해야 할 것이 적기 때문에 높은 생산성을 보여줍니다. 또한, 간단한 MTV 패턴을 통해 동작하기 때문에 각각의 컴포넌트만 이해하고 잘 작성해주면 훌륭한 웹사이트가 됩니다. 블로그, 쇼핑몰 등 전통적인 웹사이트를 만드는 사람에게 적합합니다. 단점으로는 다양한 기능이 서로 의존성이 높기 때문에Monolithic 한 경향이 있어서 유연성이 다소 떨어질 수 있습니다.

FastAPI의 특징

빠르다. 전문 주방 도구!

FastAPI는 성능좋은 식칼, 믹서기 등 다양한 주방도구라고 생각하면 됩니다. 다양한 도구를 사용할줄만 알면 빠르게 요리를 할 수 있습니다. 데이터베이스와 통신을 위해 외부의 SQLAlchemy 라이브러리를 사용한다던지, 새로운 기능을 위해서는 다른 라이브러리를 추가 결합해야 하지만 최소한의 기능만 들어있으므로 목표에 맞게 빠르게 개발이 가능합니다. 특히, 비동기를 지원하여 대용량 데이터 처리를 위한 API개발에 특화되어있습니다. 그 외에도 유효성검사, 라우팅, 의존성주입 등을 통해 높은 생산성을 보여줍니다. 따라서, API 위주의 서비스를 개발할 때 적합합니다. 전통적인 웹 사이트 보다는 클라이언트와 서버 간의 데이터 통신이 주된 목적인 경우에는 FastAPI가 더 적합할 수 있습니다. 특히, 대용량 데이터를 주고받는 머신러닝/데이터 분석 플랫폼 개발에 적합합니다. 단점으로는 아무래도 보다 새로운 프레임워크다보니 자료가 더 적고, 보안 이슈가 잠재적으로 더 있다고 볼 수도 있습니다.

장단점 정리

결론

위에서 말한 것은 대략적인 내용들입니다. 정답은 아닙니다. 세부적으로 들어가면 장점이 단점이 되고 단점이 장점이 될 수도 있습니다. 사실 Django에서 기본적으로 ORM을 지원해서 기분이 좋을 순 있지만, 복잡한 기능을 지원하지 않기 때문에 오히려 안 좋을 수도 있습니다. 학습곡선도 프로젝트의 크기에 따라 FastAPI가 더 낮을 수도 있습니다. 위의 조건들을 하나하나 따지기 보다는, 간단한 프로젝트를 위해서는 FastAPI를, 일반적인 웹사이트 기능을 처음 구현하려면 Django를 추천합니다. 두 프레임워크의 한계 또한 초보 개발자 입장에서는 크게 고려할 사항이 아니라고 생각됩니다. 빅테크 기업들은 Django, FastAPI를 모두 사용하고 있기 때문입니다. 처음 백엔드를 맡아 프로젝트를 하면서 Django vs FastAPI를 고민했던 영역이었기 때문에 글을 작성해보았으며, 검색해보시면 충분히 좋은 글 많습니다. 아래 글 들도 시간 되시면 읽어보시면 좋을 것 같습니다.

0개의 댓글