Continuous integration is continuous celebration
An ongoing commitment to improving what we build and how we work
At Flux we have created a Continuous Integration (CI) Guild that is a group of talented and dedicated humans who have a passion and desire to make an ongoing improvement to our product and processes.
Continuous Integration (CI) is a development practice that’s about merging code into a central repository on an ongoing basis. Automated tests and builds are then run, enabling teams to detect problems early, improve software quality and release software updates faster.
The guild structure is borrowed from Spotify and allows individuals who are not within the same teams, to collaborate on company wide initiatives.
First, the vision
It started with a challenge from our CTO to go from code commit to production in under 15 minutes. This vision, at a high level, is to increase feedback on a change, enable feature experimentation and production testing.
CI builds are the cornerstone of the process of getting code from a developer’s laptop through automation tests, merging, QA environments and to production.
It’s easier than it sounds
Let me simplify: CI helps Flux deliver quality outcomes faster through continuous visibility and feedback. There’s a notion of flow here — CI allows us to get into the flow of pushing value to production environments instead of handover and stage-gates. In a company as big as Flux is (85+ devs!) the amount of change that can happen in a short period of time is enormous. CI is the one source of truth that allows us to protect the flow and enhance it.
We define ourselves as “passionate group of people who love what we do and think beyond”, but we’re not just winging it. We have a roadmap. Our roadmap has 3 phases with corresponding actions and outcomes:
Phase 1: We know we’ll build this
- Unit tests without the database (which is hard with Ruby on Rails)
- Multiple daily releases
- Increased test coverage
- Kill flakey tests
- Autoscaling and stable CI infrastructure
- Target build time to sub-5 minutes (challenging on a 800K line codebase)
Phase 2: We think we’ll build this
- Make QA environment unnecessary
- Roll forward (instead of backwards)
- Remove all manual steps
- Canary deployments
- Multi-day releases
- Easily add new applications and gems to CI
- Target build time to sub-3 minutes
Phase 3: We might build this
- Test in Production (experimental improvements)
- Performance tests in the pipeline
- Shadow traffic deployment
- Low code workflow
- Anyone can deploy to Production at anytime
Of course, with all of this change comes a varying impact. It’s particularly confronting for people who have been with Flux for many years and who are used to working a certain way. When you start to introduce changes, you kind of flip their world upside down because there’s a loss of autonomy through the standardisation of process. But to do the right thing for Flux, a lot of standardisation needs to happen like unified builds and narrowing down processes. With standardisation, we remove organisational waste. Ultimately, we’re trying to optimise for the organisation.
CI helps our delivery team and how we scale Flux. The bigger we get, the more developments we make. To scale well we need faster and faster product iterations, which is possible with a solid CI infrastructure to keep up with the demand.
Continuous integration is about continuous celebration.
It’s about celebrating the successes we have. It’s about celebrating the future of Flux.
Previously, many of us felt that the delivery process was so exhausting that we literally forgot what we built. We spent so much time babysitting a feature through the delivery process. We forgot to celebrate the feature! With CI it’s different because once we’ve completed the change we receive immediate feedback and have high confidence of its quality.
For Fluxters who have ideas about how we can improve the delivery process, the CI Guild provides a platform to explore their ideas and put them into action. It’s a forum where we voice our thoughts, create processes for improvement and celebrate our success.