As an architect at Capital One, one of my major goals is to establish better ways of performing the architect function. To me, the primary value of enterprise architecture is in defining the ‘north star’ or strategic direction for the course of one or more capabilities. An architect’s success in living up to this value can be measured in a number of ways, but based on my 10 years of experience, I propose the following four principles to help guide effective enterprise architecture:
In my work as an architect for resiliency and site reliability engineering (SRE) at Capital One, the concepts of resiliency, recovery, and reliability are fundamental to architecting proven applications. Each concept builds on the other to provide a framework of architectural considerations through different lenses that together enable a more reliable product.
But first, let’s level our understanding on the 3 R’s and their definitions.
Ever since Netflix introduced Chaos Engineering through their Simian Army toolset in 2012, the idea of inducing failure as a preventative means has become one of the preferred resilience techniques for cloud native distributed systems. Using performance and stress testing alone are legacy techniques and inadequate in unearthing comprehensive weaknesses; chaos engineering evolves and adds to this idea by conducting a series of scientific experiments designed to disrupt steady state. As a result, brittle assumptions are exposed, weaknesses are identified, and confidence is gained into a system’s reliability by addressing these weaknesses.
As an enterprise architect for resiliency, I promote the use of chaos engineering as a technique to improve reliability for our highly distributed cloud native systems. By partnering with numerous delivery teams and supporting the evolution of our chaos engineering capabilities, I learned several lessons that are elaborated below. …
Have you ever been overwhelmed by the number of cloud compute options available to support containerized applications? Do you run your containers yourself or on a cloud managed service? Have you foregone containers entirely and are running a serverless function instead? If these thoughts seem familiar, and you’ve already decided that containerized or serverless architectures are the way to go, then this blog is for you!
The spectrum of cloud compute offerings is varied. As shown in the figure below, the spectrum swings mainly along two vectors: your control and flexibility vs the cloud service’s standardization and limits. Examples from AWS, GCP and Microsoft Azure illustrate the variety of options. …
If you are thinking about getting started with serverless applications, this article is for you. While serverless provides a number of benefits, in my experience architecting serverless applications, there are several common myths that can get in the way of success.
In the quest to focus development time on application code rather than the underlying infrastructure, serverless architecture is a natural evolution for cloud-based applications.
Wouldn’t it be great to never have to respond to a 3am on call alert again? Wouldn’t it be nice to trust that your system will always be available to your end users? If so, you’re not alone! By using Cloud services and DevOps principles, attaining this nirvana should be possible. I’ve been an avid DevOps technologist for many years, most recently architecting cloud-based systems for Capital One, and my experiences in the field have lead me to create a simple four-step framework to help enable resilience.
Resilience is an outcome of a highly automated, well architected and well tested system, predicated on the following common…