FastAPI vs Django vs Flask, qué framework aprender?

FastAPI vs Django vs Flask, qué framework aprender?

Python es un lenguaje de programación que está en constante evolución. Cada año, se van agregando nuevas funciones y mejoras en el lenguaje, haciéndolo más potente, rápido y fácil de usar. Actualmente, es uno de los lenguajes de programación más populares del mundo y es utilizado por millones de desarrolladores para una amplia variedad de tareas.

En este post vamos a enfocarnos en los frameworks de Python más populares, que se utilizan principalmente para hacer aplicaciones web o APIs, junto con sus ventajas, desventajas y cuándo elegir cada uno.

Django

Django es el framework más grande y establecido de Python, su extensa trayectoria y comunidad le dan una robustez imbatible. El foco mas grande de Django es (o era) proveer a los desarrolladores las herramientas necesarias para desarrollar rápidamente sin preocuparse por implementar los features más comunes y repetitivos que se utilizan en casi cualquier proyecto, como sus creadores dicen "concéntrate en escribir tu aplicación y no en reinventar la rueda".

Ventajas

  • Documentación extensa y clara.
  • Gran comunidad.
  • Muchos features ya implementados (panel de admin, seguridad, ORM).
  • Tiempo en el mercado (mucho código para poder ver y aprender).

Desventajas

  • Poca flexibilidad, el código se estructura siempre de la misma forma y salirse de eso es complicado.
  • Demasiada "magia" por detrás, tiene una baja curva de aprendizaje.
  • Agregar features a proyectos ya establecidos se hace cada vez más complejo (y lento).
  • La complejidad de los proyectos y de la codebase crece muy rápido.
  • Hay demasiado overhead de features y paquetes para aplicaciones simples o proyectos chicos.

Flask

Flask es el segundo framework más popular de Python, el foco principal de éste es ser más liviano y flexible, basándose en la simplicidad. Flask deja todas las decisiones en manos del desarrollador, con las ventajas y/o desventajas que eso implica.

Ventajas

  • Fácil para comenzar en un principio.
  • Bastante flexibilidad en cuanto a cómo estructurar el código.
  • Es fácil agregar, modificar o sacar código.

Desventajas

  • Pocos features soportados por defecto por lo que requiere instalación de varios paquetes externos y el posterior mantenimiento de los mismos, por ende, el desarrollador tiene que encargarse de mantenerlos actualizados y compatibles con el código propio.
  • Al ser tan liviano y simple, no es la mejor opción para hacer proyectos grandes.

FastAPI

FastAPI es un framework moderno, rápido y robusto creado con la idea de aprovechar de forma nativa los type-hints de Python, enfocándose en la performance y en las necesidades de las aplicaciones de la actualidad. Esta construido sobre Starlette y Pydantic, lo que le permite soportar de forma nativa numerosos features y que la developer-experience sea la mejor posible.

Ventajas

  • Fácil para comenzar en un principio.
  • Bastante flexibilidad en cuanto a cómo estructurar el código.
  • Es fácil agregar, modificar o eliminar código.
  • ASGI soportado de forma nativa.
  • Documentación autogenerada a partir de anotaciones.
  • Validación de tipos, incluso en JSON anidados.
  • Inyección de dependencias para validaciones automáticas.
  • Excelente performance.
  • Posibilidad de ser utilizado en proyectos de cualquier tamaño.

Desventajas

  • Es un framework bastante nuevo, por lo tanto la comunidad no es tan grande y el material educativo (libros, cursos, ejemplos) no es tan extenso como en otros casos.
  • El código no es estandarizado entre las diferentes empresas.
  • La documentación oficial no es tan profunda, por lo que hacer implementaciones no tan triviales requiere un esfuerzo extra a la hora de resolver problemas o desafíos de implementación.

Conclusión

El mundo de la programación y los frameworks en general se mueve a velocidades increíbles requiriendo innovación constante en todos los ámbitos, pero entonces, qué framework elegir para aprender o para arrancar un nuevo proyecto?

Yo creo que depende cuales sean los objetivos personales de cada uno y en base a eso la decisión, en mi opinión, es clara:

Dedicarse a aprender y masterizar Django es una elección que tomaría si lo que se busca es entrar a trabajar a una empresa ya establecida y se deba mantener o mejorar una codebase existente que ya este hecha en Django. Otra opción, podría ser si se quiere encarar un proyecto de gran magnitud, con una estructura clara y con una proyección a futuro sin cambios o actualizaciones constantes.

En cuanto a Flask, es un framework que no elegiría nunca bajo ningún punto de vista. Es claramente más liviano y flexible que Django pero también muy parecido a FastAPI en bastantes aspectos solo que sin la gran mayoría de features que FastAPI trae de forma nativa.

En cuanto a FastAPI, elegiría este framework si lo que se busca es entrar a trabajar a una startup o empresa que recién esta arrancando a armar sus APIs, o si se busca encarar un proyecto con un futuro más indeterminado, donde es posible que se requieran modificaciones o actualizaciones profundas.

En resumen, por todos los motivos anteriormente mencionados, yo creo que hoy en día la mejor elección es, sin duda, FastAPI. No solo por la velocidad con la que va mejorando mes a mes y adaptándose a las nuevas necesidades del mercado, si no también por el foco que se hace en cuanto a la gran rapidez y poca configuración con la que uno puede tener una API totalmente funcional, completa y productiva. Cada vez mas empresas van a empezar a priorizar FastAPI por sobre sus competidores ya que para la mayoría de ellas la velocidad de desarrollo es un punto crucial.

Si te interesa conocer mas sobre FastAPI o tenés dudas, ideas, información que quieras compartir te invito a unirte a la comunidad de FastAPI en twitter!