How to Ship Updates to 40+ Apps Every Week With Nx
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. We are adding more apps and libraries as we go.
Nx is a build tool that supports mono-repos and allows users to bring any tools/framework/technology to the mono-repo. It also helps reduce build time by allowing users to cache builds.
Maintaining this huge codebase is a challenge, especially when you must ship updates to them weekly. 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?
However, we also receive around 100 PRs per day from more than 30 teams contributing to the codebase; for each PR, we need to Run a Unit Test, build, Component Test, User Journey test, and lint.
A new feature can break your application. How do you confidently plan your release rollback to ship new features? However, it can also cause new features/ bug fixes to be rolled back from other apps. Feature flags are an answer, but how can they 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
- Release strategy
- Feature Flags
- Introducing new tools to the codebase