Application developers dream of elegantly designed applications that are loosely coupled and tightly integrated with other services with unlimited application scaling and implementation on-demand. But how can you make these dreams reality? What if, for example, you’ve adopted a hybrid cloud model and moved your enterprise to a data center to leverage the cloud and/or adopted a full move to a public cloud with Microsoft Azure?
Capitalizing on the cloud revolution
The cloud has revolutionized the software industry by making tremendous amounts of compute and storage resources readily available to developers. To effectively take advantage of these resources at scale, organizations can make use of the newly available Platform-as-a-Service (PaaS) offerings from Azure or use the Infrastructure-as-a-Service (IaaS) offerings by realigning applications and storage.
The opportunity to start on a “new state” while keeping your existing processes will make realizing the benefits of these services less risky. New design patterns become available, which means you don’t have to re-create the wheel. Compute-intensive applications and long-running services enable organizations to create high-quality services, and ultimately higher-quality applications.
If you already have computing clusters on-premises, you can extend these clusters to the cloud when you need additional resources to handle more complex computing tasks. Azure enables the construction of a high-performance computing (HPC) cluster by using high-speed, multicore CPUs and large amounts of memory that are connected by extremely fast networks with Remote Direct Memory Access.
Azure Batch service
If creating and handling a cluster seems overwhelming, Azure Batch will manage large-scale parallel workloads without the infrastructure details. There are two methods to programmatically interact with Batch: a higher-level Batch Apps API, or a lower-level Batch API.
A Task Virtual Machine (TVM) is a dedicated virtual machine allocated to run tasks. A collection of TVMs form a resource pool. A worker item becomes a scheduled job that contains several tasks.
Parallel design patterns
The Competing Consumer pattern is a design pattern you can implement for a simple parallel task execute engine. Benefits of using this advanced pattern are:
- Scaling-out as needed
- Hybrid compute
- Dynamic load balancing
As an example, this can be implemented for message processing in a communication channel queue between the application and the instances of the consumer service.
Cloud Services is Azure’s Platform-as-a-Service (PaaS). This offers the benefits of a cloud architecture by building and hosting cloud-based applications. The immediate main benefits are:
There are many complicated aspects to continuously running applications, such as hardware failure, server updates and performance scaling. Azure’s use of autoscaling, instance load balancing, fault domains and update domains helps create a well-designed application that overcomes traditional challenges.
Azure services available within a solution
In addition to the services already discussed, Azure provides a rich set of application services to help developers implement various scenarios. These include:
- Data-centric web applications
- Azure DocumentDB – a NoSQL database for JSON documents
- Azure Search – a ubiquitous search tool
- Azure CDN – a global high-bandwidth content delivery solution
- Big data and IoT
- Event hubs – an efficient facilitator of data ingress at scale
- Stream analytics – a hosted, reliable and scalable solution for real-time data analysis
- Azure Machine Learning – systems with learned/adapted behavior in classification, ranking, clustering and prediction scenarios
- Mobile applications
- Azure App Service – connection of on-premises resources for Azure
- Azure notification hubs – a Platform Notification System(PNS)
- Media Applications
- Azure Media Services – implementation of advanced media applications
Understanding how to use these new Azure services to provide a higher quality of service application is the key to successfully implementing your “new state” and achieving your dreams.