Cloud Applications Architecture - Building Resilient Systems In Optimized Costs

Cloud Applications Architecture 

This article discusses the responsibilities of a cloud architect, cloud design patterns, and cloud building blocks. Optimization strategies to minimize costs in the cloud and automation are also discussed. Also, the process of learning cloud technology is also explained in detail.

Cloud Architect

Cloud architect develops the computing strategy for any company or for the projects. From incorporating cloud adoption plans, designing cloud applications to management and monitoring of the application in the cloud, the cloud architect looks overall.

Responsibilities of a Cloud Architect

  • Culture
  • Collaboration 
  • Adoption Framework 
  • Cloud Architecture 

Culture

There is a quote, “Culture eats strategy for breakfast”. For any cloud architect, who leads teams, it is essential to understand that it isn’t just a great aptitude for skills or technology stack we know. The success with implementing and delivering any product holds its foundation to the team. No matter, how strong strategic plans are inscribed, the efficacy will be hurdled if the member of the team doesn’t share the appropriate culture. It's important to build the team first, the culture, and then move to implement strategies.

Collaboration

The collaboration during any software development life cycle is monumental. The team members need to have technical skills and non-technical skills ranging from wide ranges depending upon the scale and type of product to be delivered within any time frame.

Technical Skills

  • Application Architecture
  • Automation and Orchestration 
  • High Availability 
  • Governance 
  • Infrastructure and Operations 
  • Networking
  • ITSM/ ITOM 
  • Security

Nontechnical Skills

  • Change Management 
  • Communication and Collaboration 
  • Company / Vertical Experience 
  • Delegation 
  • Finance and Legal 
  • Self-starting

Cloud Adoption Framework for Azure 

Azure has described its cloud azure adoption framework in detail. From defining proper strategy which includes clear motivation and business outcomes and justification and then planning to rationalize all the digital assets and aligning the structures and members with the organization for the goal-setting with developing skill ready plan on the side. Azure has provided its Azure readiness guide which allows initializing the first landing zone and expansion of the blueprint. Next in the adoption phase, migration and innovation play a vital role. Keeping the penchant to the commitment of governance guidelines based upon the global location for which the application is developed and management of operational maturity will help adopt the cloud framework to a full extent.

Cloud design patterns

Cloud Design Patterns helps develop a general reusable solution to the problems which occur commonly during the designing and operation of the architecture of the cloud. Some of these patterns are as described below.

Resilience Patterns 

The applications we build should withstand the situations when things go wrong. It isn’t about when these issues arise, but moreover, architects and developers need to build systems in a way such that even in cases of failure points, the system can self-heal automatically. This is what resilience patterns aim to achieve. 

Resilience pattern is one of the types of service architecture which enables the prevention of cascading failures in order to preserve the functionality even in the cases of service failures. This can be implemented by keeping some steps in check. The process to keep in check during following the resilience pattern are,

  • Include retry logic 
  • Test your retry logic 
  • Break the circuit 
  • Watch the uninitialized state (during recycle events) 
  • Plan for Resilience 

Resilience Modeling and Analysis (RMA) 

The premise of Resilience Modeling and Analysis is that the system needs to pass a threshold of stressors, challenges, and risk to come about being a resilient system. A few key elements to take into concern for RMA are as follows,

  • Address reliability issues early in the design 
  • Prioritize reliability-related work efforts 
  • Provide tangible output for other reliability efforts 

Learn more about Cloud Architecture from Azure MVP Vishwas Lele, 

Azure SQL Database 

Azure SQL Database runs on the cloud computing platform cloud to provide a managed cloud database features for applications which is enabled with the following features. This help architects build resilient system with business continuity and disaster management. Read the previous article to learn more about Business Continuity And Disaster Recovery In Azure For SQL Database. Following are the features in Azure SQL Database provided to build such resilient systems.

  • Active geo-replication 
  • Automatic Asynchronous Replication 
  • Multiple readable secondaries 
  • Planned failover & Unplanned failover
  • User-controlled failover and failback 

 Azure Cosmos DB 

Azure Cosmos DB is a NoSQL database provided by Azure for the development of modern apps. It also consists features for building resilient systems.

  • Geo-Replication 
  • Automatic Regional Failures 
  • Multi-Master Support 

PaaS meets Virtual Network 

When apps services connect with Virtual Network, which consists of multi-tenant shared services, the connection can be done with a secured private network. The Paas resource is mapped to the private IP address and the in-built data exfiltration protection is provided by the system. This helps build a secure system with PaaS firewall only allowing traffic from internal Virtual Network (VNET).

Optimize Cloud Costs 

As a cloud architect, one of the key roles is to optimize the cost of the cloud system. The system should be designed to cost the bare minimum of expenditure which maintaining all the key requirements in check. This can be done by keeping some processes in mind while designing the cloud architecture. The workload should be managed and the Virtual machine composition should be optimized.

Azure Compute Optimizations

  • Burstable VMs 
  • VMSS with Autoscaling 
  • Low Priority 
  • Containers 

Burstable VMs 

Burstable VMs helps to efficiently handle workload spike. The credit can be saved when the VMs aren’t working at high workloads and those credits are used during the high traffic peaks. This helps minimize the cost. This can be done by following these steps.

  • Purchase VM with baseline performance, build credits to handle workload spikes 
  • Burst up to 100% of the vCPU when the application requires higher CPU perf Support sizes from 1 vcpu to 20 vcpu Memory from 0.5G to 80G 
  • This is Ideal for workloads that do not need full CPU perf continuously such as Web servers, the Proof concepts and dev build environments.

VMSS Autoscale 

The autoscale features of Azure Virtual Machine Scale sets can be utilized to minimize the expenditure. This helps optimize availability and savings. The autoscale is based on the CPU threshold and thus different VMs are deployed automatically by the system.

Low Priority 

It is really smart to leverage Azure’s spare capacity. Using Azure CLI, spot instance can be deployed. This can be done with the steps below.

  • Take advantage of Azure’s unutilized capacity at a steep fixed discounted price.
  • ~60% - 80% depending on VM type/ region 
  • At any point when Azure needs the capacity back, VMs will be evicted with 30 seconds notice.
  • Great for batch workloads where job completion time is flexible and the work distributed across many VMs.

Containers

Virtual Machine overhead can be reduced using Containers. Containerizing and using on top of AKS (Azure Kubernetes Services), applications can be tightly packed to function more application for a reduced cost. Learn about Containers and AKS from the previous article, Containers and Container-Orchestration in Azure.

Automation in the Cloud 

Infrastructure as code (IaC)

Infrastructure as a code enables the management of infrastructure like virtual machines, connection topology, load balancers, network using description model like versioning system similar to source code. It is accessed by the following.

Azure CLI

Azure Command-Line Interface enables IaC by creation of scripts in PowerShell and bash.

Azure Resource Manager (ARM)

ARM is one of the ways to implement IaC by using resources such as JSON files.

Terraform

Terraform enables the management and provisioning of cloud infrastructures and resources by simply codifying them into configuration files.

DevOps

Development and Operations can also be automated today. This is possible with Azure DevOps and Github Actions.

Azure DevOps

Azure DevOps Server provides the version control, requirement manages, reporting, project management, build automations, testing and release management features. This supports the complete lifecycle of the application providing the DevOps capabilities.

Github Actions

Github Actions helps to connect numerous tools to automate various steps of the workflow of the software development lifecycle by providing automation features.

How to learn Cloud Technology in a better way? 

Cloud Technology is a huge domain and learning it from traditional ways like university is almost not feasible. It is an ever growing and progressing field and this is only possible to learn by engaging into cloud projects immediately. Trying to connect the features of the application with cloud, the hands-on experience can be beaten by no other methodology of learning. Also, engaging with community and participating in events as an attendee or speaker in local communities will help one grow. It is crucial to realize how self-learning can provide us with an empirical growth trajectory. Familiarizing oneself with the foundation of software engineering will also be an added help. Besides, focusing on automation will help in the long run and save burn outs but moreover, is the appropriate method to work as per the industry standards of today. It always helps to collaborate with peers or seniors in this field. Following these steps, the cloud skills will truly grow with time.

In this article, we learnt about Cloud Application Architecture as a whole from the roles of a cloud architect, to adoption of cloud framework for Azure, design patterns for cloud, and various other services of Azure. We also learnt the processes to optimize the costs in Azure and cloud automation. Finally, the way to learn cloud skills was also discussed. 

References

  • https://docs.microsoft.com/en-us/azure/virtual-machines/sizes-compute 
  • https://docs.microsoft.com/en-us/dotnet/architecture/cloud-native/application-resiliency-patterns