Microsoft Azure: Cloud Compute Services

Microsoft Azure: Cloud Compute Services

·

15 min read

What do we mean by “cloud?”

"The cloud" refers to servers that are accessed over the Internet, and the software and databases that run on those servers. Cloud servers are located in data centers all over the world.

image.png

Characteristics of cloud computing

  • Network access to cloud services
  • Pay only what you need from a measured service
  • Multi-tenancy – many customers in same space
  • On-demand self-service to scalable resources
  • High bandwidth links to and between datacenters

Who is using cloud computing? Organizations of every type, size, and industry are using the cloud for a wide variety of use cases, such as data backup, disaster recovery, email, virtual desktops, software development and testing, big data analytics, and customer-facing web applications.

image.png

Microsoft Azure platform provides all or many of the below features by default or out of the box.

Scalability

  • Ability of system to scale by adding or removing resources.
  • Resources could be like any resources including VM, database storage and more.

Elasticity

  • Elasticity is the ability of a system to scale dynamically.

Agility

  • The ability to react quickly and allocate and deallocate resources in a very short time.
  • In the on premise world requesting resource and allocation might take weeks to months of time depending upon the resource.
  • In the cloud, resource spin up would happen in minutes and at maximum it would take a few hours for heavy resources.

Fault Tolerance

  • Ability of system to remain up and running during component and service failures
  • Major Azure cloud services have built in fault tolerance.

Disaster recovery

  • Disaster recovery is the ability of a system to recover from an event that has taken down the service
  • Disaster recovery can be easily set by setting replication in different regions.

High Availability

  • Availability is a measure of system uptime.

Large public cloud services have near-global reach

image.png

image.png

Service Model

Azure offers 3 service Models

  • Iaas (Infrastructure as a service)
  • PaaS (Platform as a service)
  • SaaS (Software as a service)

Infrastructure as a Service (IaaS)

With Infrastructure as a Service customers access raw computing resources in the form of storage space, various sizes of virtual machine, networking services, and other related management tools.

1.PNG

  • Customers pay for time and space on a server(s).
  • Responsible to install and manage their own operating system and software.

Examples: Azure Stack, ExpressRoute

Platform as a Service (PaaS)

Platform as a Service offers customers direct access to services rather than to raw computing resources for application design and deployment.

2.PNG

  • The PaaS model provides metered (pay as you go) access to services.
  • Cloud service is responsible for individual virtual machines, and managing basic resources.

Examples: Azure App Service & IoT device analytics

Cloud service models

3.PNG

Azure Compute service

Let's first understand what a compute service is... Compute resources are infrastructure resources that provide processing capabilities in the cloud. For example, virtual clusters, virtual resource pools, and physical servers are all compute resources.

image.png

Azure compute provides the infrastructure you need to run your apps. Tap in to compute capacity in the cloud and scale on demand. Containerize your applications, deploy Windows and Linux virtual machines (VMs) and take advantage of flexible options for migrating VMs to Azure. With comprehensive support for hybrid environments, deploy how and where you want to. Azure compute also includes a full-fledged identity solution, so you gain managed end-point protection and Active Directory support which helps secure access to on-premises and cloud apps.

image.png

How to choose an Azure compute service

Azure offers a number of ways to host your application code. The term compute refers to the hosting model for the computing resources that your application runs on. If your application consists of multiple workloads, evaluate each workload separately. A complete solution may incorporate two or more compute services.

image.png

  • “Lift and shift” is a strategy for migrating a workload to the cloud without redesigning the application or making code changes (this is also known as re-hosting). If you lift and shift without re-architecting, you should reserve your compute instances to reduce cost whilst you look to rearchitect later, as you’re already aware of the resource utilization on your workloads.
  • Cloud optimized is a strategy for migrating to the cloud by refactoring an application to take advantage of cloud-native features and capabilities.

Azure Virtual machines

The virtual machine is an initial IaaS stage in Azure compute options. This is the most common compute service which is used on all cloud platform widely. So when we create a virtual machine on an Azure portal then we have to deal with some important configuration parameters:

  • The Network Interface gets public and private IP address.
  • The virtual machine can have multiple disks mounted as per needs.

Some important characteristics of the virtual machine are:

  • You don’t have to manage the underlying physical servers.
  • Deploy any type of workload
  • You can stop the virtual machine whenever you don’t want the virtual machine to run
  • You can also control the traffic flow using network security groups
  • You can also monitor different underlying metrics like CPU Utilization and Network Utilization image.png

Pros of Azure Virtual machines

  • Scalability
  • Data Security/Compliance
  • High Availability
  • Cost-Effective

Cons of Azure Virtual machines

  • Requires Management
  • Requires Platform Expertise

Also, read Azure scale sets (Virtual Machine Scale Set) that play an important role in cloud computing which provides more elasticity and scalability.

Azure App Services

Setting up a web application presents many challenges: Scaling, Load-Balancing, Patch Management, Configuration Management, Security/Compliance, to name a few. In order for applications to run without issue and without downtime, it is important to deploy these applications with minimum in-service capacity. In addition, it is important to keep the OS and platform versions up to date. However, that is a cumbersome task, needing a lot of operation overhead and expertise.

To make an application highly available in Microsoft Azure, a number of cloud services must be implemented. An application gateway, for instance, is important for distributing traffic. Virtual Machines that scale based on demand are also important. Resources must be provisioned individually, yet integrating them can take a large amount of time.

Azure App Service helps solve these issues and reduces operational overhead so that developers can concentrate on web development instead of spending more time on infrastructure setup.

image.png

When we choose a service to deploy our application, it's often a choice between control, flexibility and ease of use. Cloud services offer greater control over the apps but increases developer responsibility.

Azure App Service, on the other hand, is a Platform as a Service (PAAS) that is quick to build, deploy and scale the application. It helps build enterprise ready applications quickly, accelerating time-to-go-live, all while reducing the overall day to day responsibility of managing the platform.

Pros of Azure App Service

  • Built-in HTTPS support
  • Multiple languages and frameworks
  • Production Ready Environment
  • DevOps integration
  • Security and compliance

Cons of Azure App Service

  • Pricing is High
  • Fixed Domain Name (Deployment of apps under cheap domain names)
  • No Remote Desktop
  • No Performance Counters

Azure Batch Service

Most of the enterprise and large applications run the lots of automated tasks in the background which can include anything like processing data, bringing new output, calculations, processing billing, testing software etc. In such applications the role and design are equally important for high-performance computing (HPC) and running processes in parallel to get a job DONE.

Azure batch gives you the power to use ‘Azure batch service’ which provides the facility to run large-scale parallel and high-performance computing (HPC) batch jobs efficiently in Azure without capital investment. This service is recommended to use the large-scale execution and run the parallel tasks like image analysis processing, data injection, processing data, software test case execution and much more.

image.png

How does it work? You need a Batch account to use the Batch service. Most Batch solutions also use an associated Azure Storage account for file storage and retrieval.

  • Upload the input files and applications to process the input file into Azure Storage account. These input files can be anything consisting of data to process it.
  • Create of pool of nodes (virtual machines) to execute the processes. This also consists of configuration of machines like O.S., size of nodes etc.

Then, create a job and its associated tasks to perform the actions. Azure batch service automatically schedules the job in the pool of nodes to execute it.

  • Before executing the tasks, service will download the files and applications from Azure storage to provide and execute on the node.
  • Once the job of execution of tasks is started then application can connect to batch service and monitor the progress of execution over HTTPs.
  • As the job completes Azure batch service upload the output to Azure storage. We can also fetch this output file from the node directory file system.
  • Then our client application can download the output files from Azure storage.

Pros of Azure Batch

  • Cost-effective – with proper pool management you only pay for the time the workload is executed.
  • Elastic – you can easily match VM configuration and workflow to your demands. You can choose from general usage A-tier to N-tier VMs with hundreds of RAM memory and dozens of processors.

Cons of Azure Batch

  • Complex – Azure Batch system might be difficult to manage. Setting up the whole system: pools, jobs, and tasks might be confusing for beginners and it needs some experience to make Azure batch reliable and cost-effective.
  • Limited support – Lack of in-depth documentation and poor developer support. As Azure - Batch is still strongly developed by Microsoft and the service is used mostly by big companies, it did not live to see thorough documentation and community support yet.

Azure Functions

Azure Functions is an event driven server less compute platform that lets you implement code that is triggered by events that happen in Azure or other third party services. With Azure Functions you don't need to explicitly provision or manage infrastructure in order to run the event-triggered code.

Azure Functions can be used to achieve decoupling, high throughput, reusability and shared. Being more reliable, it can also be used for the production environments.

image.png

How Do You Call Azure Function?

Azure Functions can be called when triggered by the events from other services. Being event driven, the application platform has capabilities to implement code triggered by events occurring in any third-party service or on-premise system.

How Long Can Azure Functions Run?

For any Azure Functions, a single Function execution has a maximum of 5 minutes by default to execute. If the Function is running longer than the maximum timeout, then the Azure Functions runtime can end the process at any point after the maximum timeout has been reached.

Azure Container Instances

Azure Container Instances allows you to run a container without provisioning virtual machines or having to use container orchestrators like Kubernetes or DC/OS. Container Instances are useful when you just want a container without orchestration.

image.png

Pros of using Azure Container Instances

  • Faster startup times
  • Full Container access
  • Compliant deployments
    • Hypervisor-level security
    • Customer data (Protection)

Cons of using Azure Container Instances

  • Hard to orchestrate multiple containers.
  • Hard to manage data flow or network access across them.

Since managing multiple containers in runtime is bit harder we use Azure Container Apps which provides multiple container support and platform integrational support with each other in a easier way. to learn more about it click here

Azure Kubernetes Service

Kubernetes is a fast-growing platform for managing containerized applications, storage, and networking components. It allows developers and administrators to focus on application workloads, not infrastructure components. Kubernetes provides a convenient, declarative way to deploy large numbers of containers, with a powerful set of APIs for management tasks.

Kubernetes can be complex to install and maintain, especially when running in production and at an enterprise scale. To reduce the complexity of key management and deployment operations, such as scalability and Kubernetes updates, you can use Azure Kubernetes Service (AKS), which offers managed Kubernetes services. To simplify the process, Azure manages the AKS control plane, and customers pay only for the AKS nodes the application runs on. AKS is based on the Azure Kubernetes Service Engine, which was released by Microsoft as open source.

image.png

The reference architecture is composed of:

Azure Kubernetes Service (AKS)—at the center of the architecture is AKS.

Kubernetes cluster—a cluster running your workloads, deployed on AKS. With AKS you only manage agent nodes; AKS assumes responsibility for the Kubernetes control plane.

Virtual network—AKS creates a virtual network in which agent nodes can be deployed. In advanced scenarios, you can create a virtual network first, to give you more control over configuration of subnets, local connections, IP addresses, etc.

Ingress—the ingress provides an HTTP/HTTPS path to access cluster services. Behind it, you will typically deploy an API Gateway to manage authentication and authorization.

Azure Load Balancer—created when the NGINX ingress controller is implemented. Used to route incoming traffic to the ingress.

External data storage—microservices are usually stateless and save data to external data stores, such as relational databases like Azure SQL Database or NoSQL stores like Cosmos DB.

Azure Active Directory (AD)—AKS has its own Azure AD identity, used to generate and control Azure resources for Kubernetes deployments. In addition to these mechanisms, Microsoft recommends using Azure AD to establish user authentication in client applications that use the Kubernetes cluster.

Azure Container Registry (ACR)—used to store your organization’s Docker images and use them to deploy containers to the cluster. ACR can also leverage authentication by Azure AD. Another option is to store Docker images in a third party registry, like Docker Hub.

Azure Kubernetes Service Use Cases:

We’ll take a look at different use cases where AKS can be used.

  • Migration of existing applications: You can easily migrate existing apps to containers and run them with Azure Kubernetes Service. You can also control access via Azure AD integration and SLA-based Azure Services like Azure Database using Open Service Broker for Azure (OSBA).
  • Simplifying the configuration and management of microservices-based Apps: You can also simplify the development and management of microservices-based apps as well as streamline load balancing, horizontal scaling, self-healing, and secret management with AKS.
  • Bringing DevOps and Kubernetes together: AKS is also a reliable resource to bring Kubernetes and DevOps together for securing DevOps implementation with Kubernetes. Bringing both together, it improves the security and speed of the development process with Continuous Integration and Continuous Delivery (CI/CD) with dynamic policy controls.
  • Ease of scaling: AKS can also be applied in many other use cases such as ease of scaling by using Azure Container Instances (ACI) and AKS. By doing this, you can use AKS virtual node to provision pods inside Azure Container Instance (ACI) that start within a few seconds and enables AKS to run with required resources. If your AKS cluster is run out of resources, if will scale-out additional pods automatically without any additional servers to manage in the Kubernetes environment.
  • Data streaming: AKS can also be used to ingest and process real-time data streams with data points via sensors and perform quick analysis.

Azure Spring Service

image.png

Spring Cloud Azure is an open-source project that provides seamless spring integration with Azure services. It gives developers a Spring-idiomatic way to connect and consume Azure services, with only need few lines of configuration and minimal code changes. Once you’re ready to run your spring app in the cloud, we recommend Azure Spring Cloud. Azure Spring Cloud is a fully managed Spring Cloud service, built and supported by the same team as Spring Cloud Azure.

It was the result of joint effort of Microsoft and VMware to provide an easy development experience when building cloud-native applications depending on Spring Boot, Spring Cloud, and integrating with Azure Cloud components.

Why use Azure Spring Cloud?

Being able to view your data in a single UI makes troubleshooting errors and issues much easier. Now, Spring Boot developers can enjoy that benefit in New Relic One. With Microsoft Azure’s latest integration, you can simply send your application data directly to New Relic One.

Deployment of applications to Azure Spring Cloud has so many benefits, such as:

  • Efficiently migrate existing Spring apps and manage cloud scaling and costs.
  • Modernize apps with Spring Cloud patterns to improve agility and speed of delivery.
  • Run Java at cloud scale and drive higher usage without complicated infrastructure.
  • Develop and deploy rapidly without containerization dependencies.
  • Monitor production workloads efficiently and effortlessly.

Azure Service Fabric

image.png

Azure Service Fabric handles infrastructure needs, deployment, and scaling, allowing developers to spend more time on features. Service Fabric powers core Azure infrastructure and other Microsoft services, and you can use this technology in your own software solutions to achieve high-availability, better reliability, scalability, and performance. In this course, learn about the platform's main benefits, as well as how to build Service Fabric applications for the cloud or on premises. Instructor Rodrigo Díaz Concha details the benefits of Service Fabric as a distributed microservices platform, the Service Fabric application model, as well as its overall development cycle. He also shows how to create Service Fabric clusters from the Azure Portal and CLI, develop container-based Service Fabric microservices solutions, and more.

Security responsibilities

Security is one of the most important aspects of any architecture. Good security provides confidentiality, integrity, and availability assurances against deliberate attacks and abuse of your valuable data and systems. Losing these assurances can harm your business operations and revenue, and your organization's reputation.

The various cloud services require different levels of customer engagement and responsibility for security.

Here is a link for best practices to be followed in Azure click here

Azure Security click here

image.png

Conclusion

With more than 200 services and numerous benefits, Microsoft Azure is undoubtedly the fastest-growing cloud computing platform being adopted by businesses. In fact, Microsoft Azure’s total revenue is expected to surpass $19 billion by 2020. This growth in the implementation of Azure by businesses is creating various opportunities for professionals well-versed in this technology.

So, if you are interested in a career in Azure, this is the right time to jump in. The best way to start your career in Azure is by getting certified with Azure.

I hope you enjoyed this post, and that you'll come back for the next one!

Feel free to subscribe my email newsletter for future updates and connect with me on GitHub and Twitter.

Did you find this article valuable?

Support Open Source Dev by becoming a sponsor. Any amount is appreciated!