In this article, we are going to discuss the fundamentals of Cloud Computing and Microsoft Azure.
To read more about Azure, you can visit our Azure with ASP.NET Core page, where you can find all the articles from the series.
What is Cloud Computing?
Cloud Computing is the way of providing computing services over the Internet using a pay-as-you-go pricing model. It’s a way to rent computing power and storage from data centers maintained by other organizations, also known as Cloud Providers. We can rent computing services like servers, storage, databases, networking, software, analytics, intelligence, etc.
Here, the basic idea is that instead of maintaining CPUs and storage in our data center, we can rent them for just the time we require them. The cloud provider takes care of maintaining the underlying infrastructure for us. We can work with cloud resources just like the resources in our own data center. Once we’re done using the resources, we can return them. Above all, we’re billed only for what we use!
Benefits of Cloud Computing
The real value of cloud computing is that it enables us to quickly solve our business challenges without worrying about the infrastructure. Cloud computing is a big shift from the traditional way of managing the resources in our premises.
There are many benefits in shifting to a cloud computing model:
Firstly, cloud computing helps us to save cost. Shifting to a cloud-based model means we can get rid of the initial expenses required for buying hardware and software and setting up the data center. Furthermore, it helps us in saving operational expenses like electricity, cooling, and IT experts for managing the infrastructure.
Additionally, cloud-based services can be provisioned very quickly. We can have the right amount of computing resources we require in a few minutes with just a few mouse clicks. This gives us a lot of flexibility in terms of capacity planning.
Another important benefit of cloud computing services is the ability to scale elastically. This means we can have the right amount of resources we require, right when we need it and from the right geographic location.
Further, On-premises data centers typically require a lot of hardware and software setup, and other time-consuming IT management tasks. Cloud computing removes the need for most of these tasks. As a result, our IT team can focus more on our business goals.
Besides, big cloud providers run their services on a worldwide network of secure data centers. Furthermore, they regularly upgrade these to the latest generation of fast and efficient hardware. This can offer huge performance benefits over a single corporate datacenter.
Moreover, all big cloud providers give the option to backup data regularly. As a result, implementing disaster recovery and business continuity is much easier and less expensive. We usually get the option to mirror data at multiple geographic locations on the cloud provider’s network.
Above all, with most cloud providers, we get a broad range of security policies that can be applied to the resources that we create. On top of that, they usually have good access control mechanisms in place. All resources that we create on the cloud reside behind very powerful firewalls and gateways which help us to protect our data, apps, and infrastructure from potential threats.
Different Cloud Computing Architecture
Now let’s discuss the different cloud computing architectures.
The major cloud providers own and operate the public cloud. They deliver computing resources like servers and storage over the Internet. Microsoft Azure is a popular example of a public cloud. In the case of a public cloud, all hardware, software, and supporting infrastructure is managed by the cloud provider. We can access these services and manage our account using the cloud provider’s portal.
In a private cloud, we create all the resources exclusively for a single organization. This is usually located on the company’s on-premise datacenter. However, some companies host their private cloud on third-party cloud providers by paying a fee. In all cases, the private cloud maintains the services and infrastructure on a private network with restricted access.
Hybrid clouds combine the best of both public and private clouds and allow the sharing of data and applications between them. By allowing data and applications to move between private and public clouds, a hybrid cloud gives us greater flexibility. This also gives us more deployment options and helps us to optimize our existing infrastructure, security, and compliance. When we want to host our applications in multiple geographical locations and adhere to varying local regulations, this approach could be very helpful.
The above diagram shows various cloud computing architectures and how users access the hybrid cloud.
Types of Cloud Computing Services
We can classify cloud computing services into four broad categories:
- Infrastructure as a service (IaaS)
- Platform as a service (PaaS)
- Software as a service (SaaS)
Having a good knowledge of these concepts will help us to choose the right cloud offering for our requirements.
Infrastructure as a Service (IaaS)
This is the most basic offering of cloud computing services. With IaaS, we can rent the infrastructure like servers, virtual machines (VMs), storage, networks, operating systems, etc. from a cloud provider by paying a fee based on our usage. We can spin up resources and scale up or scale out very quickly based on our needs. Of course, once we no longer need the resources, we can delete them and pay only for the time we used them.
Platform as a Service (PaaS)
With PaaS, we can directly use the services and environments for developing, testing, delivering, and managing software applications as required. This makes it easier for developers to quickly create web, API, mobile apps, etc. without worrying about setting up or managing the underlying infrastructure of servers, storage, network, and databases, etc. needed for development.
Overlapping with PaaS, Serverless computing enables developers to build applications faster by eliminating the need for them to manage the infrastructure. When we are using a serverless application, the cloud service provider automatically provisions, scales and manages the infrastructure required to run the code. The real advantage of serverless architectures over PaaS is that they are highly scalable and event-driven, and the resources are used only when a specific function or trigger occurs. This approach enables developers to focus more on their business logic. Another advantage is that we need to pay only for the time and resources it takes to execute the code.
Software as a Service (SaaS)
When we are using a SaaS model, we consume software applications over the Internet as needed and usually based on a subscription model. Here, cloud providers are responsible for managing the underlying infrastructure, operating system, software, etc. They even take care of software upgrades and security patching. We can just connect to the application over the Internet using our browser.
These are also called the cloud computing stack because they build on top of one another:
With IaaS, we have more control over the infrastructure and as we move up the stack, we have less control.
Major Cloud Service Providers
Microsoft Azure, Google Cloud Platform, Amazon AWS, etc are few of the major cloud providers. All these providers leverage the benefits of economies of scale. Economies of scale are the ability to do things more efficiently and at a lower cost per unit when operating at a larger scale. This cost advantage is one of the major benefits of cloud computing.
When we use these major cloud providers, it benefits us in many ways. First of all, we’ll be able to acquire hardware at a lower cost. Furthermore, while operating at a large scale, cloud providers will be able to provide highly reliable services with high-speed network connectivity, at a lower price than what we would be able to achieve on our own.
Now, let’s focus more on Microsoft Azure and its various service offerings. Azure provides over 100 services that fall into different cloud service types that we discussed earlier.
For most project teams, the first step towards moving to Azure is moving their existing applications to virtual machines. Even though this is a good start, there are several additional capabilities in Azure or any cloud providers for that matter. By using Azure services, we can create solutions that are not feasible without the power of the cloud.
Microsoft Azure – Core Cloud Services
Now, let’s take a look into some of the core cloud service types offered by Microsoft Azure. We’ll discuss some of the major services that come under each type as well.
For any business, having a great web experience is very critical in today’s world. Azure provides cutting-edge technologies and services that help us build and host web apps and APIs. Let’s take a look at a few major Azure services focusing on this area.
We can use the Azure App Service to quickly create powerful cloud-native web-based apps. Using the Web Apps feature of Azure App Service, we can deploy high performing and scalable web apps. Similarly, we can use the API Apps to quickly deploy APIs in the cloud leveraging all the cloud capabilities.
Furthermore, we can use Azure SignalR Service to add real-time web functionalities into our apps. It is fully managed, highly scalable, and even supports serverless architecture.
Azure Cognitive Search is a fully managed Search as a Service. It gives us APIs and tools for adding a rich search experience in a wide variety of applications using our data.
Similarly, Azure Maps provides geospatial APIs and we can use them to integrate maps, spatial analytics, and mobility solutions to our apps.
Azure provides different types of database services which enables us to store a wide variety of data types and volumes. Besides, with great connectivity options that come out of the box, this data can be available to users all over the world instantly.
For instance, Azure SQL Database offers a fully managed relational database with auto-scaling capabilities. It also has business intelligence capabilities and robust security measures in place.
When we need a fully managed NoSQL database service for our application, Azure Cosmos DB is a great choice. It guarantees competitive response times and high availability along with automatic and instant scalability. Additionally, it supports open-source APIs for databases like MongoDB, Cassandra, etc.
On the contrary, for developers who use MySQL database, Azure Database for MySQL offers a fully managed and scalable MySQL relational database with high availability and security.
Likewise, If we want to host enterprise SQL Server apps in the cloud, SQL Server on VMs offers an excellent choice. It enables us to bring our enterprise licensed SQL Server to the cloud with all its capabilities.
Finally, we can use Azure Cache for Redis to cache frequently used and static data. By using this, we can reduce data and application latency which will improve our application’s overall response time. Of course, caching is a separate big topic in itself and there are a lot of things to consider before deciding on a caching strategy.
Azure provides several storage services. We are going to talk about a few major types.
Firstly, we can use Azure Blob storage to store very large objects, such as video files, images, documents, etc.
Azure File Storage is a fully managed file share on the cloud. It enables file shares that can be accessed and managed like a file server.
Subsequently, Azure Queue storage offers a data store that can be used for queuing and reliably delivering messages between applications.
If we need a NoSQL data store that hosts unstructured data independent of any schema, we can leverage Azure Table storage.
The first step most organizations take while moving to the Azure platform is leveraging the Compute services. When it comes to hosting applications and services, Azure provides a wide range of options. We are going to discuss a few major types.
First of all, we have Azure Virtual Machines, which are Windows or Linux virtual machines (VMs) hosted in Azure.
If we need to manage a cluster of VMs that run containerized services we can leverage Azure Kubernetes Service.
Similarly, Azure Service Fabric is a distributed systems platform that can be used to package, deploy, and manage scalable and reliable microservices and containers. It can run in Azure or on-premises.
On the other hand, If we need to run containerized apps on Azure without provisioning servers or VMs, we can use Azure Container Instances.
Azure Functions gives us an event-driven, serverless computing service that can trigger our code when some events occur. These events can be inside Azure, from external third-party services, as well as from applications or services hosted on-premises.
Finally, we can easily deploy and run containerized applications on Windows and Linux using Web App for Containers. This has built-in auto-scaling, load balancing, and streamlined CI/CD with Docker Hub, Azure Container Registry, and GitHub.
Azure provides several built-in services using which we can strengthen the security of our cloud applications. Let’s discuss a few of them.
Firstly, we can securely store keys, passwords, certificates, and other secrets using the Azure Key Vault and then access them from our app without compromising the security.
TheAzure Active Directory (Azure AD) is an enterprise identity service provider that supports single sign-on and multi-factor authentication to securely manage our user authentication.
DevOps is a term used to indicate a set of practices that combines software development (Dev) and IT operations (Ops). Its major goal is to shorten the software development life cycle and provide continuous delivery of software with high quality. This brings together people, processes, and technology and automates the software delivery process. Let’s discuss major Azure services that can help us to optimize our DevOps process.
Azure DevOps Services allows us to create Build and Release Pipelines that provide continuous integration and deployment of our applications. We can also integrate repositories, tests, application monitoring, etc. Additionally, we can create backlog items and integrate a range of third-party tools and services within Azure DevOps. This provides a consistent and replicable software delivery model. As a result, we get a streamlined build and release processes. Azure DevOps provides many development collaboration tools like build and release pipelines, free private Git repositories, configurable Kanban boards, and cloud-based automated testing.
At the same time, If we want to quickly create Windows and Linux environments on-demand to test or demo our applications directly from our deployment pipelines, we can leverage Azure DevTest Labs.
Using Azure Monitor, we can collect, analyze, and take action on telemetry from our applications hosted in cloud and on-premises. For example, we can detect and diagnose issues with our applications and their dependencies using Application Insights. Furthermore, Log Analytics helps us to drill into our monitoring data for troubleshooting.
Azure also provides several Integration Services that can seamlessly integrate applications, data, and processes for us.
Using Azure Logic Apps, we can schedule, automate, and orchestrate tasks, business processes, and workflows.
Similarly, we can use the Azure Service Bus to implement a highly reliable and complex cloud messaging service between applications and services. We can scale our applications by leveraging the power of asynchronous messaging patterns.
In this article, we have looked at Cloud Computing Concepts and various services offered by Azure. We covered the following topics in detail:
- An introduction to Cloud Computing
- The benefits of using a Cloud Computing model
- Different Cloud Computing architectures- Public, Private and Hybrid
- Various types of Cloud Service offerings- IaaS, PaaS, Serverless, and SaaS
- Major Cloud Providers
- Some of the core service types in Microsoft Azure like Web, Database, Storage, Compute, Security, DevOps, and Integration.