Deezer
I joined Deezer to start a transversal technical overhaul. First on the PHP environment, then more broadly on a migration from a monolith to a service-oriented architecture (SOA).
I brought and promoted modern development practices with some concepts like Continuous Integration, Continuous Deployment/Delivery, automated testing and modular code architectures adapted to the SOA shift.
I also participated in the implementation of Kubernetes, observability of services and the construction of the required tools for team autonomy.
I supported the teams in the construction new projects, and in the migration of old ones to the new practices.
Finally, I built a GraphQL API in TypeScript with NodeJS to replace Deezer’s old APIs. I studied performance and scalability of this API.
SOA Migration & Industrialization
Improvement of development practices to include more tests and industrialization, and construction of new projects more modern.
Migration from a monolith to a service-oriented architecture (SOA)
I arrived at Deezer to participate and lead a technical overhaul. I was an actor and architect on some technical solutions and I also brought modern development and quality practices.
The Code part, in PHP, was already well in place, but was a bit behind in relation to industry standards. This had negative implications on the quality of deliveries and their speed.
I therefore built migration projects to bring both modern code practices, but also modern tools. The goal was to move from a monolithic code deployed and validated almost by hand, by a single person, to a more modular and service-oriented code deployed automatically or in full autonomy by the devs.
With the support of newly arrived colleagues and others already present, we modernized the code, built new projects on a resolutely modern base, and integrated the two together. I built and designed the entire architecture of the new projects, as well as their connections to the old ones.
GraphQL API
Creation of a GraphQL API in TypeScript to replace Deezer’s old APIs. This API replaces a heterogeneous set of REST APIs and simplifies the development of new features on all Deezer applications.
A lot of work was done on performance and scalability of the API, and I had to set up tools such as Gatling for performance tests.
I built the base of a GraphQL API to replace the heterogeneous set of Deezer APIs. I also participated in the first migrations of REST endpoints to the Graph of the new API. This project allowed me to learn and master a bit Typescript, and to understand the functioning of NodeJS in depth.
During the first implementation phase, I did a lot of digging and a lot of discussion took place with the entire team, including people responsible for the Product. This allowed to build an API, and in particular, a relevant Graph. Beyond the role of architect and backend developer, I also handled project management and coordination.
A lot of work was done on the performance and scalability of the API, and I had to set up tools such as Gatling for performance tests. This project also allowed me to understand the limits of NodeJS and GraphQL while taking advantage of their benefits.
This project was a success. It was designed so that all developers in the teams could contribute, even though they were mostly PHP developers. The teams are now autonomous to contribute and evolve this API.
Docker
As soon as it was possible and useful, use of Docker to change the delivery paradigm from a code delivery to a reusable image delivery.
Early use of Docker for some development environments.
In the wake of migrations and new projects, creation of a new development stack based on Docker. Primarily oriented towards backend development, it allowed to bring to the developers’ workstation most of the tools necessary for development and execution of automated tests. This allowed to further democratize the practice of automated testing and TDD.
Docker gradually became the delivery standard for new projects. Kubernetes arrived shortly after to allow the deployment of these images in production.
Kubernetes
Setting up Kubernetes to allow teams to deploy and maintain their service in autonomy.
Once the infra teams were able to provide us with a Kubernetes cluster, I participated in the migration of services to this cluster. I also created and implemented multiple tools and processes to facilitate the lives of developers and operators.
I supported the teams in setting up their service on Kubernetes, and their appropriation of the new tools and technologies related to Kubernetes, such as Helm and ArgoCD.
Various projects
During my time at Deezer, I also participated in many other projects. In PHP, in GO, sometimes even in python. I’ve used all these use cases to promote SRE practices and strengthen the technical proposals we had to offer to the teams. Between project templates, improving CI/CD tools for example.