Mission :
En tant que développeur fullstack senior, vous participez à la conception et aidez au développement de nouvelles fonctionnalités sur l’API (Symfony) et sur le front d’Hozana (PWA et app en React et Next).
- Côté backend, le défi principal découle du nombre d’utilisateurs d’Hozana et de la relativement petite taille de l’équipe technique : il faut livrer une expérience de qualité dans un contexte de charge conséquente, tout en prévoyant des montées en charge futures, le tout en gardant une infrastructure simple et aisément maintenable, en assurant une couverture de test optimale, et en évitant l’accumulation de dette technique.
- Côté frontend, Hozana présente le défi d’être à la fois une PWA en single page app, et de devoir être indexée par les moteurs de recherche. Nous utilisons donc Next.js pour gérer le SSR, générer certaines pages de façon statique, et hydrater (ou non) les pages côté client. Nous accordons de façon générale une grande importance aux performances que nous cherchons toujours à optimiser. Nous visons un rendu propre sur tous les appareils. Enfin, Hozana est utilisée en plusieurs langues et sous différents fuseaux horaires, ce qui demande de gérer les traductions, les formats de temps, et les timezones.
Par ailleurs, vous accompagnez des développeurs plus juniors, transmettez vos connaissances et faites monter les autres en compétence. Vous encadrez également des bénévoles, contributeurs réguliers, ou plus ponctuellement lors des HozanHackathons que nous organisons plusieurs fois par an.
Une grande place est laissée à l’initiative personnelle.
Contexte :
- Produit : Hozana est une Progressive Web App en React / Next.js / Typescript, présente également sous forme d’application sur les stores.
- Backend : API REST en Symfony, MySQL, Elasticsearch, Redis, RabbitMQ.
- Frontend : React v17, NextJS 12, Redux, Redux-Saga, Styled-Components, Typescript, Storybook, Cypress.
- Data : Google Analytics, Metabase (pluggué sur un serveur data qui est une réplication quotidienne du MySQL de prod, après quelques adaptations d’un ETL écrit en python).
- Tooling : CircleCI, Prometheus / Grafana, Sentry, Uptime. L’environnement de dev est sous Docker.
- Tests : PHPUnit, cucumber, Sellenium, Nightwatch.
- Équipe : 20 personnes, équipe produit de 6 personnes (8 développeurs pour 5 ETP, un Product Manager, un UX/UI designer et intégrateur et régulièrement des développeurs bénévoles)
Cliquez ici pour voir un joli schéma présentant notre stack.
Voici quelques indicateurs pour vous donnez une idée de la charge d’Hozana :
- Salve quotidienne de + de 230 000 publications à dispatcher (feed, mails, push) le plus vite possible
- Côté API : pics à 6500 appels API par minute, moyenne ~ 1300 hors cache
- 218M de requêtes HTTP (tous types confondus) servies sur les 30 derniers jours, avec un taux de cache de 45%
- 47M d’événements mails (send, deliver, open, …) sur les 60 derniers jours
- 38M d’entrées de feed sur les 60 derniers jours
- Large couverture de tests backend, s’exécutent en 6 minutes pour 1845 tests et 236875 assertions
- BDD de 50 Go, avec des tables pérennes larges (50M de prières, 1,7M users, 1M intentions, 177 000 publications, …)
- 500k instructions SQL envoyées par heure, avec des pics jusqu’à 2M par heure