From an infrastructure perspective, Fidelity Investments uses a combination of private cloud hosted in company data centers plus multiple public cloud platforms, leading to the question, how to manage this hybrid infrastructure?
One key is being flexible, say Maria Azua Himmel, senior vice president of distributed systems at the 71-year old multi-national with $2.13 trillion in assets under management.
Azua is attempting to implement strategies among Fidelity’s application developers to ensure that when new apps are built they can be run in almost any environment, whether it be one of the public clouds the company uses or inside its own data centers. To do this Azua is advocating for the use of application containers and software-defined infrastructure that can be controlled via application programming interfaces (APIs).
“Cloud is not about infrastructure,” Azua said in an interview before her presentation at the Open Networking User Group in New York earlier this month. “Cloud is about automation; it’s about the application pipeline, standardizing processes and scaling horizontally.”
Cloud is not magic
Azua says despite the cloud market’s maturity, there are still misconceptions about it. “A lot of consumers of cloud expect magic,” she says. “They want to go from spaghetti code that is not well defined to a hybrid world.” The way to scale most traditional applications is to use larger servers to increase capacity. Azua says this scaling upwards is an inefficient way to grow because it results in perpetually higher costs.
“If you’re going to the cloud, you need to refactor your application,” she says, noting the preferred method is to scale horizontally. This means building out a series of infrastructure components that can be provisioned and managed through APIs and developing applications in a microservices architecture. A key to this is embracing the 12-Factor Application development approach, she says.
Adam Wiggins, one of the founders of the popular application development platform Heroku (which was purchased by Salesforce in 2012 for $212 million) created the now-popular 12-Factor process. Concepts include: declaring and isolating dependencies of the application; treating back-end services as attached resources; executing the app as one or more stateless services; allowing apps to be disposable, meaning they can be started up fast and gracefully shut down; offering maximum portability of the app across execution environments; and keeping development, staging and production environments as similar as possible.
“Gone are the days of writing code and specifying an IP address of where the app will run,” Azua explains. “That just doesn't scale.” Developers should build apps that are “componentized,” she says, that are able to run in any infrastructure environment.