There are so many ways that businesses can build success with Azure, whether it’s lifting and shifting existing workloads to virtual machines, re-platforming legacy .NET applications or building cloud-first applications. However, while the cloud offers incredible flexibility, it also has its own challenges when it incomes to security, governance and performance. To help design and architect the best possible solutions with Azure, it helps to know the habits of highly effective Azure developers and consultants. Ultimately, there are certain design considerations and success factors that they use to design and architect impressive Azure solutions. By reviewing how others have navigated the Azure environment, you can learn valuable lessons and, most importantly, ensure your next project is a success.
Success Factors for Azure Projects
While projects in Azure can take many forms and each project is unique, there are several key contributors to success that are true to all of them:
- Requirements – it’s fundamental to have a full understanding of all performance and security requirements before making design decisions regarding Azure architecture. Non-functional requirements (NFRs) should be key inputs prior to design, accounting for things such as compliance and volume of concurrent users. These NFRs should be defined early on in a project and agreed by the business. The challenge, of course, is getting agreement across multiple teams, each with their own unique requirements.
- Proof of concept – Azure projects often use new services or products that teams have limited experience with. To mitigate the risk of integrating new elements into a project, a proof of concept (POC) is fundamental. A POC will allow all requirements and goals to be tested on a defined area before committing to a full-scale project. In addition, if new to Azure itself, Microsoft’s Azure Proof of Concept initiative allows new users the opportunity to experience it free of charge within their own working environment.
- Being agile – every developer has their own opinion on development methodologies. However, if all design decisions are made early on, there can be implications for later stages of a project. By working in an agile way rather than using a traditional waterfall method, it’s possible to get early feedback, iterate quickly and ensure everyone involved in the project is happy with the outcome.
- Collaboration – with every Azure project, there are multiple teams involved, application teams, project managers, operations and more, not to mention business stakeholders. By having a collaborative approach to the entire project lifecycle, a project is more likely to get buy-in and there won’t be any unexpected surprises for impacted teams down the line.
Essential Design Considerations
As we’ve touched on, there are many different types of Azure projects. It’s important to consider whether the project will be in a new development environment or an existing Azure subscription, exactly what the applications and application architectures are and which compliance frameworks need to be adhered to. With answers to these questions, Azure developers are better placed to think about the target architecture and design considerations, some of which include:
- Core infrastructure – infrastructure is the foundation upon which applications are built and deployed, making it one of the most important design considerations. What’s more, whatever infrastructure is put in place needs to be able to scale to support future projects. To get the basics in place, developers need to consider management groups, data, subscriptions, identity, perimeter security, third party services and more.
- Application hosting – once the infrastructure is in place, the application environment needs to be considered. There are multiple Azure services that can be leveraged. However, while that’s a good thing, it can be confusing to begin with. It’s a good idea to break solutions down into manageable pieces like data and network.
- Artefacts and deliverables – before moving forward with a project, it’s vital to define who the target audience and stakeholders are. After this, there are some core documents that are needed such as an architecture overview, high-level design and low-level design, each with specific levels of details to ensure correct management, implementation and configuration.
The Importance of Reusability
If something needs to be made from scratch, it’s always worth considering how it can be made in a reusable way. If similar Azure environments are often deployed, creating templates in a library of commonly used artefacts can help to speed up design and deployment to Azure. What’s more, when working in Azure, there is often a good chance that someone else has already faced the same challenge and created a solution with blueprints that can be referred to.
A key benefit of Azure is consistency. Development investments in one location are reusable in another and Azure delivers services to ensure deployments are consistent and repeatable across environments. When it comes to creating business apps faster, Azure delivers out-of-the-box connectors, built-in solutions for common use cases and the ease of a drag and drop interface. With the full range of services available, it’s possible to easily scale, extend and repurpose apps to quickly respond to business demands.
It’s worth highlighting also that Azure enables developers to find new ways to use emerging technologies to solve problems. While best practice and code reusability is a great starting point, it shouldn’t impede innovation and growth. Azure developers are always finding unique ways to use Azure services to create innovative solutions for business problems.
Starting Your Next Azure Project
Starting a new Azure project can be exciting and daunting in equal measure, whether you’re modernising legacy applications or building something from scratch. There are lots of services that can be used, and choosing amongst them can seem overwhelming at times. To help narrow down your wish list, it’s best to start small. Getting the basics right by following best practices, considering the target architecture and design and following some core project management processes is the best way to move forward, iterate quickly and build success.