4 principles to guide successful architects and architecture

2 animated men in yellow jackets and construction hats staring at blue buildings
2 animated men in yellow jackets and construction hats staring at blue buildings

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:

  1. Contextual understanding over siloed decision making.
  2. Tangible direction over stale documentation.
  3. Driving behavior over enforcing standards.
  4. Evolution over frameworks. …

Using the 3 R’s as a lens to architect reliable applications

line of construction worker characters in different poses
line of construction worker characters in different poses

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.

Defining Resiliency, Recovery, and Reliability

  1. Resiliency is the ability to avoid or mitigate impact from an adverse event by quickly responding to, and fully recovering after, a failure. A focus on resiliency typically amounts to an emphasis on high availability. …

Tree bending in the wind as a symbol of resiliency.
Tree bending in the wind as a symbol of resiliency.

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. …

Choosing the Right Option on the Cloud Compute Spectrum

turquoise overlapping circles on a purple background with grey dots and gridlines
turquoise overlapping circles on a purple background with grey dots and gridlines

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. …

Lessons Learned from Architecting Serverless Applications on AWS

Image for post
Image for post

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.

Myth #1: Serverless Means Functions as a Service (FaaS)

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.

Image for post
Image for post

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.

First, What is Resilience?

Resilience is an outcome of a highly automated, well architected and well tested system, predicated on the following common…


Tanusree McCabe

Architect at Capital One, focused on Monitoring, Resiliency, Cloud, Containers, Serverless and DevOps

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store