My Internship at Endace: Why I Chose FastAPI over Flask
During my engineering internship at Endace, I was assigned an exciting project: developing a modular, templatable profile system for their core network probe products. The original requirements called for building the backend using Python and Flask. While Flask is a great framework, as I evaluated the project’s long-term needs for asynchronous workflows and scalability, I realised it might not be the most future-proof choice.
Rethinking the Stack
After researching alternatives, I proposed using FastAPI instead. FastAPI offered several advantages for this specific use case:
- Native asynchronous support
- Automatic interactive API documentation (Swagger UI builtin)
- Cleaner syntax for defining APIs
- Incredible performance
There was only one catch: I had never used FastAPI before.
Stepping Out of the Comfort Zone
To ensure I could deliver the project confidently and on time, I spent several days diving deep into FastAPI’s documentation. I built small test projects to independently validate its capabilities. Once I felt confident in my ability to execute, I prepared a presentation for the senior engineering team. I highlighted the precise benefits of moving from Flask to FastAPI for our specific use case, and to my delight, they gave me the green light.
Beyond the Backend
While the backend was my primary focus, I also noticed that the proposed user interface could be more intuitive. Going slightly outside my assigned scope, I taught myself Bootstrap and some jQuery on the fly. Doing so allowed me to design a dynamic, highly responsive UI that empowered end-users to create complex profile templates with ease.
My full-stack approach ensured close alignment between the backend and the frontend. I also documented the entire new architecture and processes in Confluence so that future maintainers wouldn’t be left in the dark.
The Impact
The result was a robust system that not only significantly streamlined the configuration process, reducing potential setup errors by end-users, but was also highly praised by the senior engineers for its scalability and user-friendliness.
This experience taught me the profound impact of:
- Questioning assumptions: Just because a project was planned a certain way doesn’t mean it’s the best way.
- Taking ownership: Taking the initiative to learn the right tools rather than sticking to what’s comfortable.
- Holistic problem solving: Seeing how the backend integration fundamentally shapes the frontend UX.
Building the Endace profile system was a brilliant experience that reinforced my technical adaptability, and I carry these critical lessons with me into every subsequent project.