Why Im Excited About Web Apps
If you have not taken a look at Azure Web Apps yet, I highly suggest you do. It is a PaaS offering on Azure and I am super excited about it. Below I will explain why.
Every now and then there is something that makes you rethink how you approach standard web applications. For me this was Azure Web Apps.
We are all used to spinning up an Ubuntu VM, installing Nginx, PHP, MySQL and perhaps add some caching, like Varnish, to top it off. Getting high amounts of traffic? Just add another server and a load balancer.
The problem with the above is that there are still servers to manage. After a few years of managing updates, checking firewalls, managing permissions, handling deployments, etc. I have come to appreciate how much time all these tasks actually steal from my coding time.
I love the idea of PaaS. With PaaS someone else is ensuring that my servers are up, stable, and secure while I can focus on the code.
With all that being said, Azure Web Apps just seem to take it to a new level.
With Web Apps for Linux Microsoft decided to introduce containers into their PaaS offering. This means you can run almost any stack with almost no effort. You simple select which image you want to use and in a matter of seconds you have an elastic scaling infrastructure in place.
Azure provides a few default images to choose from, but you are also able to select an image from Docker Hub (even private ones) or Azure Container Registry.
With Azure Container Registry you even get free continuous delivery for your Docker images.
Continuous Delivery of Code
It’s all good and well to have a container up and running, but how do you actually update your code and get your container to serve that code?
With Azure Web Apps it is as easy as linking a GitHub repository. Every time you push your new changes to a specified branch, Azure will retrieve those changes, run it through a build script, and then deploy those changes.
Continuous deployment with Git, Team Foundation Server, GitHub, and Visual Studio Team Services
The platform that powers the deployment is called Kudu and can be found on GitHub. Kudu even allows you to customize the build script that gets executed every time your code is updated.
A Better World With Web Apps And Friends
With the help of some other services offered by Azure it is possible to achieve a highly available, secure, elastic scaling infrastructure.
Web Apps provide a platform that provides continuous delivery for free, configurable auto scaling, and multiple deployment slots. With the click of a button you can swap the contents of 2 deployments slots almost instantly.
Azure Database for MySQL (or Postgres) provides a scalable, secure DB as a service with point-in-time recovery options.
Redis Cache provides a distributed caching layer with Azure level security, persistence and high availability taking care of all your caching needs.
Blob Storage provides a redundant file storage platform with security and various levels of redundancy.
The best thing about all these services is that they are either PaaS or SaaS. Which means there is no infrastructure for me to worry about and I can spend more time concentrating on the code.
The thing that originally made me decide on Azure as my public cloud of choice, was how well all the different services integrate and how easy they try to make it for us, the devs.
I am aware this post does not contain as much information as some of my other posts, but I am using this as a warm-up for a project I have been wanting to do for a while now. In the coming weeks I will be launching a YouTube series showing you just how easy it is to create a highly available elastic scaling application with Symfony and Azure.