Developing Cloud-First Web Apps in Microsoft Azure
It’s 2018, and chances are, you’ve already moved your infrastructure “to the cloud”, or you’re prepping to do so. If a business needs any custom line-of-business application, the time is here to develop that application with a cloud-first methodology! What exactly does that mean, though? Isn’t “the cloud” just like a server rack that sits somewhere else? The answer is a resounding “No”. While all cloud offerings offer traditional server hosting (commonly called “Infrastructure as a Service” or IaaS), the cloud is a set of highly elastic, scalable resources, services and tools that bring about a whole new way of application development that is faster and more flexible than ever before.
You’ve got an archive of old Access, VB6 and mainframe applications that are ready to be re-written for the modern era, and the budget to get started on them! Again, it’s 2018 and you’re already a cloud-ready organization, so how do you go about designing new applications that are cloud-ready? Do you go about this in the same way as traditional application development? What’s this DevOps thing? This post will answer those questions at a high level and kick start your dive into building cloud-first applications for your business!
There are so many services and tools built into Microsoft Azure, it can be overwhelming trying to get started! In a legacy enterprise environment, an on-premise web server would host an application that connected to a database on a different server in the same rack, and possibly to other on-premise servers hosting other services or resources. Getting a project started often required interfacing with your Operations team to provision new physical servers for the web tier and possibly even the database tier or middle tiers if resources weren’t available elsewhere. Next, you would have to stand up the servers with new Operating Systems, IIS, SQL Server and any dependencies your application would need, being careful not to step on other applications that may be running on machines that were already in use! These headaches are gone when developing for the cloud!
IaaS, PaaS or Saas?
The first step you will need to take when you start a cloud-first project is decide on exactly how much control you want to relinquish to Azure and how much you want to continue doing manually. IaaS or “Infrastructure as a Service” is the most hands-on, or traditional way to develop an application for the cloud. The idea behind IaaS is that you are simply provisioning your servers in the cloud data centers. IaaS can facilitate the idea of just “lifting and shifting” legacy applications to the cloud with little to no overhead. Containerization of applications is a good way to facilitate the lift and shift model as well. However, there are faster and easier options if you are looking for a cloud-first architecture.
PaaS or “Platform as a Service” is the next logical step in moving to a cloud-first architecture. Using Azure as your PaaS is when you utilize cloud based services like Azure App Service and Azure SQL to replace a traditional server running IIS and a traditional server running SQL Server. Microsoft has made migration to these services as pain free as possible. Moving a traditional web application to an App Service is normally as easy as downloading a new Publishing profile, or possibly even just having the App Service integrate directly with your source code repository and auto-deploying from there! Once you move your web application to an Azure App Service, you now have auto-scaling available, and of course, you only pay for what you use! If the application can be scaled down in off-peak hours and scaled up during peak hours, you will be saving the cost and maintenance of having high powered servers doing absolutely nothing during off peak hours.
Finally, “Software as a Service” or SaaS is the final choice when deciding upon a cloud solution. SaaS doesn’t really apply to developing “custom” applications in the cloud because SaaS is, by it’s very name, software. That is, pre-packaged software that is resold to consumers, and normally resides in the cloud. This leads back into the “build vs. buy” debate, which we’ve talked about before.
If you are going to develop a cloud-first application, it’s important to understand that there are a plethora of services that Azure offers that change the architecture of a typical web application. There are way too many to go through in this post, but Service Bus, Logic Apps, CosmosDB, Azure Disks, Azure Files and Azure machine learning service are several of the different services available to take a major bite out of the custom development work that you’ll have to do to get your app up and running FAST! Why reinvent the wheel when you don’t have to?
Microsoft has made continuous deployment to Azure App Services beyond easy. Setting up a simple continuous deployment model is normally just connecting your source control provider via the Azure Portal interface. You specify a source control provider, sign into the provider with your credentials, then choose a target repository and branch, and Azure will do the rest for you, pulling and building your latest source code whenever a check-in occurs! If you have approvals or gated check-ins to deal with at your organization, you’d generally do it at the source control level, thus making the deployment process still completely automated.
DevOps is the idea of passing the Operations portion of your organization off to the Developers, rather than having a dedicated team to perform operations only. This idea is embraced by the Azure ecosystem with the ease of application deployment, as well as the ease of standing up underlying infrastructure. Since scaling web apps or worker jobs can be done with the click of a button OR easily automated with tools like Azure PowerShell, Developers are automating processes like these themselves as opposed to interfacing with Operations. This shift leads to faster, more predictable deployments and plays into increasing the overall throughput of development teams looking to get features out to Production FAST!
If you are looking at developing a brand new application harnessing the power of Microsoft Azure, you will be surprised at just how much of the work will be done for you by the Azure ecosystem. It’s easier than ever to stand up common application functionality using predefined Azure services, and even easier to get your applications deployed! As usual, you should always choose a software partner you can trust to understand what is available in the cloud before trying to custom build every single piece of a custom application. Choosing the right partner, services and cloud architecture gives you the competitive edge you need to grow your business and improve efficiency!