How to Ship Updates to 40+ Apps Every Week With Nx - InfoQ Summit Munich
Maintaining a huge codebase is always a challenge, you need to ship features, run the business as usual, and introduce new tools, and it becomes more challenging when you have many teams contributing to the code base.
At Celonis we use Angular and Nx for monorepo and ship updates to more than 40+ apps, which have 2 million lines of code, and we are adding more apps and libraries as we go.
Nx is a build tool, with the support for mono-repos and provides the flexibility to bring any tools/framework/technology to the mono-repo and helps to reduce build time by providing the ability to cache builds.
Maintaining this huge codebase is a challenge, especially when you need to ship updates to them every week. More challenges come with a codebase this big; you may need new tools in your codebase, and new tools are released every week. What if you need to do a Proof of Concept, add a new Angular App, or update a new version of Angular or tooling like Cypress, Playwright, or Jest?
But we also get around 100 PRs per day from more than 30 teams contributing to the codebase; for each PR, we need to Run Unit Test, build, Component Test, User Journey test, and lint.
A new feature can break your application: how do you plan your release rollback shipping new features with confidence? But it can cause new features/ bug fixes to be rolled back from other apps; feature flags are an answer, but how can it be done in a codebase this big?
In this talk, we explore the world of Nx, where we can build, test, and deploy 40+ apps every week with the help of Nx. You will learn about:
Maintaining a huge Angular code base
CI/CD, GitHub Actions, Merge Queue
Release strategy
Feature Flags
Introducing new tools to the codebase