Architecting and Managing Cloud-Native Infrastructure
Becoming a cloud architect is a challenge. To become a cloud architect, you must have knowledge and experience above what other architects have. Cloud architects are expected to be experts in cloud technology and be the cloud thought leaders within their organization.
There are many different types of software architects with responsibilities that vary greatly. A cloud architect is a system architect responsible for putting together all the building blocks of a system to make an operating application. This includes understanding networking, network protocols, server management, security, scaling, deployment pipelines and secrets management. They must understand what it takes to keep systems operational. All of this is in addition to the basics of understanding what the application does and how it works.
A cloud architect takes these system architect responsibilities and applies them to the cloud and cloud-native technologies exclusively.
The best cloud architects are highly effective software architects in their own right but also have expertise in leveraging cloud resources effectively to build the infrastructure that operates our modern applications.
What skills does a cloud architect need over and above a traditional application architect? Here are a few.
The cloud enables on-the-fly or just-in-time resource allocation. This means that resources can be added or removed from an application at a moment’s notice, allowing for resource scaling and resource replacement. However, to use these dynamic resources effectively, you must enable and support their use in your application and infrastructure designs. This requires extensive application modification and support to facilitate variable resource availability.
Dynamic infrastructures provide huge scaling advantages and ongoing cost savings by reducing stale and unused resources. But traditional applications are used to static resources—resources that were always available to them—and this goes against the fundamentally dynamic nature of the cloud and cloud-native architecture.
Cloud architects must be skilled in leveraging dynamic infrastructures and enhancing static applications to make them operate effectively in a dynamic infrastructure.
The cloud is based on the premise that if something goes wrong with a resource, terminate it and restart it. That extends from the application layer down to the lowest infrastructure components composing the cloud itself.
This “restart to repair” mentality means that applications must be prepared for infrastructure to fail at any time. Servers disappear, network connections fall apart and data vanishes.
This means you have to architect your applications and infrastructure to act defensively. For example, your application must be able to handle when server instances fail, network connections go down and even when entire data centers go offline. This means redundancy and self-repair are critical aspects of cloud-native applications. Yet, while this adds requirements to how you build your applications, these requirements lead to higher availability and reliability for your application.
Managing these sorts of issues requires extensive architectural experience. Cloud architects must always ask, “What if this fails?” and “What if that fails?” These questions are always on the mind of any good cloud architect.
Cloud architects must understand microservice architectures, container technology and how containers operate in an orchestration framework, such as Kubernetes.
They also have to understand the importance of relying on third-party services to provide capabilities to their applications. Cloud services, including datastores such as S3, communications technology such as SQS, and non-SQL databases such as DynamoDB, are essential components of any cloud-native application infrastructure.
All of these requirements fall under a general umbrella of cloud-native technologies. Cloud-native describes a series of interrelated technologies that enable the use of the cloud in a way that enhances its capabilities.
Maintaining security is a joint responsibility between the cloud vendor and the application owner for cloud-native applications. This means the cloud architect is responsible for understanding what parts of the application security are driven by the cloud vendors and which parts must be driven by the application owner. For those parts driven by the application owner, the cloud architect is responsible for creating the environment that enables this security to exist and the application to stay secure.
This joint responsibility is called the principle of shared responsibility, and the cloud architect plays an integral part in maintaining the security of the entire application.
The Changing and Growing Role of Cloud Architects
Cloud architects are responsible for designing, creating, operating and maintaining the health and security of a cloud-native application. As a result, the cloud architect has an extensive breadth of responsibility that covers issues substantially broader than a typical application architect has to deal with.