Building and managing cloud services at scale is new to most of us; we’re either building our first tranche of cloud-native applications or have started to migrate existing applications from on-premises to the cloud. In many cases we haven’t had time to prototype and pilot. We’re being driven to rapidly take businesses digital by a global pandemic and a sudden shift to remote working.
The question then is: What are the best practices for working with hyperscale clouds such as Azure? What worked well in on-premises data centers may not be a good fit for virtual infrastructures or container-based microservice orchestration using Azure. Then there’s the question of how to size and scale for the cloud, where compute resources may well be unlimited but they’re not free, and we have to account for every byte of storage and every second of CPU time.
Introducing the Azure Well-Architected Framework
Microsoft’s developer relations and professional services groups have been working to help newcomers to the cloud (as well as anyone who wants to improve existing applications). It recently published its guidelines as the Azure Well-Architected Framework, codifying best practices and tying them into the business needs of organizations beginning a migration to the cloud.
The framework covers five key areas: managing costs, implementing an operations model, ensuring efficient performance, application reliability, and running securely. All five are part of running any application infrastructure anywhere, but each has uniquely cloud-centric requirements. Running a cloud service needs a different mix of skills, especially as it leads to having separate cloud operations, virtual infrastructure operations, and application operations teams rather than a single data center operations group.
Running an assessment
At the heart of the Azure Well-Architected Framework is a self-guided review to help you assess where you are in your cloud migration and how you see your priorities. Be honest in your assessment. Otherwise you’ll get a false picture of your current state which could lead to problems in the future.
Each section of the review is a brief multiple-choice quiz. Each selection roll-over details a quick tip that can help with fulfilling any requirements. It’s a useful approach, as working your way through the questionnaire may get you thinking about steps you haven’t yet taken and wish to investigate further. It’s clear that the aim of the assessment is as much to get you thinking in a cloud-centric way as it is to collect data to help you design better applications.
Once you’ve completed the review you’re presented with a score out of 100 that indicates how close you are to the ideal architectural approach. Ratings for individual areas are shown, giving you an idea of what should be prioritized. Recommended actions are provided as links to relevant documentation, helping you consider what can be done with your application now and in future. Most of the documentation is in the Azure Architecture Center, which is Microsoft’s hub for Azure design patterns and best practices.
If you’ve worked with Microsoft technologies for some time you’ll remember its Patterns and Practices group; this is the current home for their work and should be a first port of call for any Azure development you’re planning, large or small.
Getting started with cloud-native design
Along with the five key areas, which it calls pillars, Microsoft uses its Azure architecture guidance to highlight key cloud-first design and architecture principles around automation, use of data, and flexible application design. Here it’s as much an educational approach as it is prescriptive. Having a flexible architecture makes sense because the rapid rollout and updates to Azure features and services mean you can’t be tied to one design for the entire application lifecycle. A new service or a new API may make it easier to update your code, or may simplify a procedure, making applications faster or easier to maintain.
Although much of the Azure Well-Architected Framework focuses on new-build applications, Microsoft offers tools to help with cloud migrations. The Azure Advisor tool shares many of the same principles as the framework, and can help tune existing code and infrastructure to work more effectively using cloud resources, helping with migrations and with reworking to avoid issues that can arise from a straight lift-and-shift approach.
Microsoft has tied its assessment tools to a set of Microsoft Learn pathways for architects and application designers. These provide foundational self-paced training that gets your development team thinking about how to refine and tune applications for the cloud. They’re not long—six one-hour modules (one to introduce the topic and one for each pillar).
Use these tools to keep architectural guidance up to date
Once you’ve started using tools and approaches like these with your applications, it’s important to run through them regularly. Microsoft has said it will keep the Azure Well-Architected Framework updated with current Azure best practices, so as these change with the arrival of new services and new lessons learned from other customers, the framework will update.
Before you start running an assessment, think about which of the five areas you want to work on, and how many you want to use. For example, if cost control is your main requirement, you should use that section of the framework first across your entire estate of cloud applications.
The Azure Well-Architected Framework isn’t the only Azure assessment offered. Others include a way of understanding where your business is in its cloud migration, a tool for benchmarking your governance models, and another for planning large-scale cloud migrations.
Good architectural principles are as much about governance and education as they are about code. Microsoft’s approach to well-architected Azure applications makes it very clear that working with the cloud is about giving up managing things in exchange for scale and reliability. You’re given the option of choosing the level of control you’re comfortable with, whether you’re opting for an Azure IaaS or a PaaS to host your code.