As a company we weren’t sure whether to use AWS or Azure as our preferred cloud platform. To get a better idea of which platform is better, I decided to test them both. Here’s what I learned.
Amazon Web Services (AWS) and its competitor Microsoft’s Azure are a mixture of several types of services: infrastructure as a service (IaaS), platform as a service (PaaS) and software as a service (SaaS). These tools enable the creation of virtual servers, databases, website hosts, etc, all configured to the users needs. Cloud platforms eliminate the need for physical servers and storage which enables development on virtual servers with easier scalability. Both AWS and Azure offer free tiers that allow the user to get comfortable with their ecosystems. These offerings were quite valuable since it gave me the opportunity to explore each cloud platform and to ultimately decide which worked best for deployment of our applications.
Each of our applications have many moving parts to configure and to simplify some of our processes, using a cloud service makes sense. At BHA we specialize in web applications for improving Medicare Advantage Star Ratings. Ocular, one of our premium tools uses optical character recognition (OCR) to decipher medical charts and convert them into a text format. Users can then rapidly cycle through charts to determine whether the medical chart is compliant for certain measures using our queue. Another application we offer is the Medicare Advantage Stars Planner. The Stars Planner provides data on the various health plans and their competitors Star Ratings. It lets users experiment with different outcomes for individual measures and predict how their overall score will turn out. This accomplished using historical and competitor data for benchmarking.
My goal was to get both of our apps functioning on AWS and Microsoft Azure. One of the benefits of accomplishing this is having access to on demand scalability of our database, storage, and content delivery systems. Initially, I thought cloud deployment would be identical to deployment in my local Linux environment, but to my surprise it was a bit more complex. Development and IT have slowly merged and require a deeper understanding of both fields. These skills have become extremely valuable in today’s tech climate and led to the creation Cloud and DevOps Engineers. This is likely a result of more companies opting to use cloud services to scale their infrastructures.
To get our apps running on the cloud, there were a few things I had to figure out. Since our apps are built on the Ruby on Rails framework with MySQL, Apache, and Perl on a Linux base, I had to separate the concerns for research. This meant that I had to layer the information obtained for each installation or setup on top of each other with AWS or Azure as the base layer. Despite the large amount of documentation available for both cloud platforms, some issues encountered were very specific to our app configuration. Fortunately, resources like YouTube and Stack Overflow exist and can be a tremendous help for specific tech issues.
AWS has a ton of options to choose from with many configurations to support large scale operations or even simple web hosting services. My goal was to create a development server for our web applications. I did have some prior experience with AWS and this influenced my decision to use an EC2 instance for this purpose. EC2 stands for Elastic Compute Cloud and is a standard service for launching a virtual machine with AWS. EC2’s offer free limited usage for learning purposes and it’s very similar to another program I’m familiar with called Virtual Box. Virtual Box is a free open-source virtualization program that allows me to create containers for a new OS. The containers package the OS and its configurations independent of the existing OS on the same computer. AWS and Azure offer features like Virtual Box, but within a cloud environment independent of my computer hardware.
Microsoft Azure offers a free tier like AWS EC2 called a Virtual Machine. One benefits of Azure over AWS is the Remote Desktop Protocol (RDP) option. With AWS I deployed my application using SSH. I would imagine the deployment process using RDP to be far easier since it is the equivalent of having a Virtual Box container on the cloud. However, in the momentum of getting my app to run on both cloud platforms, I only used SSH for both installations and didn’t use RDP with Azure.
Small variations with AWS and Azure exist in their default Linux settings which altered my normal procedure for deployment. However, a valuable tool that helped me during my process was using VScode. Microsoft VScode is a free code editor that include plugins for editing AWS or Azure server files locally. I found that syncing the cloud servers with Microsoft VScode enhanced my overall workflow.
AWS and Azure are very similar in what they allowed me to do. They both allowed me to create cloud servers in which I could deploy apps to. They both have some OS defaults to be aware of during deployment. They also both offer the ability to scale your applications and other valuable services that are beyond the scope of this article. If I had to choose between AWS or Azure, I would choose AWS.
My selection is based on my experience and I have found that AWS’s larger community influenced my decision. Community is an important part of the tech space to me because members of the community create resources for its members. Azure does have a growing community, but I often relied on my own notes and the AWS community resources for deploying to Azure since some things were more difficult to find. The size and engagement of the AWS community may be a result of its current market dominance. Azure on the other hand is not far behind and is continuing to increase its market share.
Cloud Platforms have quickly become the industry standard for companies that are developing applications due to the ease of scalability and variety of services offered. As our company grows our team continues to learn and adapt new technologies to increase our reach and effectiveness as a start-up. Having the ability to develop our app using powerful cloud infrastructure is one of the many ways we continue to grow at Baltimore Health Analytics.