Inicio » Entradas etiquetadas como «Desarrollo web»

Archivos de la etiqueta: Desarrollo web

¿Tus algoritmos no encajan? FastAPI y Python pueden ser la solución

Por Jesús María Díez Gómez

En el mundo actual, gran cantidad de servicios web utilizan algoritmos para algo, como recomendaciones de series nuevas o una persona en común en Instagram. Estos algoritmos pueden volverse muy complejos y, a veces, tienen que adaptarse al lenguaje de la plataforma. ¿Pueden integrarse, actualizarse y mantenerse sin afectar a lo demás? Aquí entran en juego Python y FastAPI, dos herramientas para diseñar algoritmos basados en modularidad. Con esto se logran algoritmos más eficientes y veloces, pero… ¿cómo funciona esto?

¿Qué es exactamente la “modularidad”?

Para entender esto, vamos a utilizar un juguete que todos hemos tenido: los LEGO. La modularidad o funcionalidad modular en programación es como dividir un algoritmo en diferentes piezas, llamadas módulos, que pueden hacer diferentes tareas.

Si nuestro algoritmo es para una aplicación del tiempo, una pieza puede calcular la temperatura media, otra limpiar los datos y otra predecir si es mejor que cojas un paraguas mañana.

Al estar todo separado, podemos cambiar esa pieza, actualizar la otra, añadir una nueva y más sin que sea necesario tocar todo el algoritmo. ¿Imaginas tener que tirar toda una pared de ladrillos porque la ventana está mal colocada? Exacto.

Pero no nos desviemos del tema. ¿Cómo ayuda Python y FastAPI a esto? Vamos a verlo.

FastAPI: Conectar tus módulos con el mundo

FastAPI es similar a un sistema de correos. Tu aplicación o web envía una petición a otra aplicación o web para pedir información (datos del clima, por ejemplo). FastAPI envía esa petición y, cuando la aceptan, recibe la respuesta y la pasa a tu estructura de módulos para que sea usada.

Ahora, esto es lo que generalmente hacen las APIs, pero FastAPI, como puede deducirse del nombre, es más rápida que otras gracias a como está configurada para esperar estos pares petición/respuesta.

Así no es necesario que tu algoritmo esté en ambas aplicaciones, lo cual implicaría hacer muchos cambios, ajustes, mantenimiento, etc. ¡Además habría que cambiar dos veces lo mismo cada vez!

A estas alturas quizás te preguntes, ¿pero tener más piezas no implica más trabajo?

Comprobar que las piezas cumplen con su función

Efectivamente, separar todo en diferentes piezas significa más a lo que prestar atención. Si todo está en una pieza y se rompe, puede ser algo muy grave. Sí, que pase con varias piezas sigue siendo grave, pero tener varias también tiene su ventaja. Si todo está separado, también significa que es más fácil aislar y detectar errores. Además, se pueden probar las partes por separado, para ver que funcionan antes de añadirlas: ver que el módulo de cálculo realiza operaciones correctamente, que las predicciones son acertadas, que los datos se reciben y almacenan correctamente…

Entonces, ya hemos visto que FastAPI y la modularidad son de gran ayuda para los algoritmos, pero hay que asegurarse que todos los módulos puedan comunicarse entre sí.

El idioma común de los módulos: las interfaces

Las interfaces sirven como las reglas que permiten a los diferentes módulos comunicarse entre sí e intercambiar información para que el algoritmo funcione, aunque aquí un C1 en inglés no va a servir de mucho.

Lo importante es que todos los módulos se mantengan conectados bajo una sola interfaz común, de forma que, si se cambia algo del módulo o se actualiza, pueda seguir “hablando” con el resto sin que todo el algoritmo falle.

Esto es de gran utilidad si, por ejemplo, se trabaja en un equipo. Mientras tú editas el módulo de predicción, tu compañero puede hacer lo mismo con el de cálculo sin miedo a que todo el sistema de desmorone.

Veamos ahora cómo se aplican estos algoritmos en Python.

De la teoría al mundo real

Muchos de los algoritmos, como hemos dicho al comienzo, pueden ser extremadamente complejos y, aunque Python puede trabajar con ello facilmente, puede consumir mucho tiempo del desarrollo de la aplicación o web. Es mejor comenzar en alguna plataforma para desarrollo matemático, como MATLAB.

Con la estructura bien organizada y perfeccionada, podemos pasarlo a Python para su implementación e introducirlo en el módulo de FastAPI para conectarlo a otros dispositivos. Python y FastAPI transforman los cálculos de MATLAB en herramientas reales a las que puede acceder cualquier dispositivo con conexión.

Conclusiones: divide y vencerás

Muchas veces, los algoritmos se escriben con código directamente en la aplicación, haciéndola mucho más pesada y más tediosa de actualizar y mantener (volvemos al tener que actualizartodo). Al separar algoritmo y plataforma la actualización y mantenimiento son mucho más cómodos y simples.

Para esto, Python y FastAPI ofrecen un método no solo práctico, sino sencillo y accesible desde cualquier dispositivo. Puede parece algo de utilidad para web y aplicaciones grandes o de empresas, pero cualquiera que trabaje con algún tipo de algoritmo puede beneficiarse. Con Python y FastAPI puedes lograr más orden, más control y menos problemas.

¿Te interesaría hacerlo incluso más eficiente? Pues no te pierdas nuestro artículo sobre Docker y contenedores.

Fuentes consultadas

Definición de interfaz registrada en la RAE: https://dle.rae.es/interfaz

Artículo científico “Investigación sobre modelos algorítmicos en Python Fast API”, Junqiao Chen: https://bcpublication.org/index.php/FSE/article/view/5591/5434