By Gerard McMahon, head of cloud center of excellence and Nick Penston, director of software engineering, Fidelity Investments
This article first appeared on The New Stack.
Moving one of the largest and most diversified financial services firms in the world to the cloud is a major initiative! But that is the challenge and we’re up to it at Fidelity Investments. Our mission is to empower the next generation of digital services for the company’s 32 million customers. Here’s a glimpse at some of what we’ve learned to date, and where we feel you should focus to ensure a successful journey to the cloud.
The Big Picture
At Fidelity, we want to modernize our applications and architectures on our way to the cloud, in order to keep our technical debt to a minimum. We also want this process to be repeatable, so that we can use it as a driver to transform how we develop and operate software at scale.
Operating Above the Value Line
A key tenet of our project was to empower our developers to operate above what we call the “value line.” That’s the line that represents the time our developers spend focusing on delivering value for our customers. Suffice to say, we always want to minimize the time our developers spend below this line, and that means minimizing tasks like manual work and toil — or even unique “snowflake” automations that have little value at scale.
We also wanted to focus on delivery excellence, which we split into two parts: engineering excellence and operational excellence. Combined, they are the pursuit of controllery in the craft of software engineering — enabling our developers to build high-quality, scalable and secure applications in the cloud, while maintaining agility in all code so that we can quickly pivot to meet the changing needs of our customers.
Maintaining CI Rigor in the Cloud
As our developers began committing code at a high cadence to production, we quickly saw the limitations of our existing continuous integration (CI) patterns — particularly regarding the lead time of feedback. The lead time, though small for any given task, started to add up in aggregate. We wanted to take that time back while maintaining the experience and the rigor of our CI process.
A big part of the solution was to mirror the CI experience on our developers’ local workstations. This caused productivity to soar, enabling developers to test changes in seconds rather than minutes — simplifying the development experience so they could focus above that prized value line.
Fortunately, we had access to a rich ecosystem of frameworks and tooling to help. Developer tooling and open source development frameworks have provided us with technology solutions for allowing developers to work locally without the need to hit remote services, as part of our development life cycle.
Integrated development environment (IDE) plug-ins also helped us shift left. If you're dealing with quality or security, IDE plug-ins offer a very basic way to get fundamental feedback. It’s an often overlooked but simple step to take.
Resiliency testing is also paramount in the cloud, but it can be a steep learning curve. Here too, we put chaos engineering technologies on the developers’ workstations to enable fast feedback in response to their changes, without the need to push out to the cloud. Getting early feedback from the desktop also helps improve compliance and security and, along with the other practices, helped us create what we call a "quality corridor” to the cloud.
These are just some of the ways we’ve accelerated engineering excellence on the road to the cloud. But how do you scale excellence and apply that across all the different teams in the enterprise?
This is where agility excellence comes in. We really see agility excellence as an exponential multiplier on top of engineering excellence. Fundamentally, it means the ability to change rapidly; and the ability of our code to react quickly when there’s an alert, a health warning, or any kind of stimulus. You can think of feedback as one type of stimulus, which means that having fast feedback is crucial to becoming agile.
Tools and technology are only part of what it takes to succeed in your cloud journey. To a greater extent it’s about having a culture of teamwork. It’s about your ability as a team — and everybody on it — to listen to that feedback and learn from it. Without that ability, it’s very hard to respond and become agile.
At Fidelity, we focus on building out our cultural transformation and instilling in everybody the importance of speed, agility, and the need for individual autonomy and ownership. This is what empowers teams to focus on creating value, on driving innovation and on "working above the value line.”
Watch our full presentation from DevOps World 2020