With all the cloud services available, how do you know which ones to choose and which provider you trust with your business? By now you’ve heard all the reasons you should be doing business on the cloud: fast and easy start-up, no hardware to maintain, no software updates to keep up with and auto scalability. You only pay for what you use. All true statements!
Not quite sure what the cloud is just yet? Learn more about the cloud here.
Transitioning to the Cloud
In your transition to the cloud, how do you decide which services to hand over to a third party, but most of all, WHO do you hand it over to. Well, that all depends upon what business you’re in and how much of your operation you’re comfortable allowing someone else to oversee. You can pick and choose from cloud packages from any one of thousands of vendors, or if you feel you need a name brand service, you can limit your decision to one of the big three: Google, Amazon or Microsoft.
One reason you may want to stick with the better known service providers is support. While many of the cloud services may be free, most of the packages you purchase will include support from the vendor. Keep in mind, a low cost version of any of these cloud services may buy you direct support, but should you choose to use a free product or service, it may not include vendor tech support. The good news though, is that since you’re using an offering that a majority of corporations are already using, there are most likely support groups and forums existing where users are already exchanging solutions to common problems.
There are many services a cloud vendor can offer, from data storage to network operations. If you’re interested in just a single cloud service like file storage or email, you can choose from one of the thousands of providers that provide cloud services and probably be satisfied with the results. However, if you’re looking for services that extend beyond the basics, you should be looking at Google, Amazon or Microsoft. They’ve been providing top tier services longer than anyone, and their offerings are vast. So numerous, in fact, that we won’t be able to cover all of them in this article. Instead, we’ll introduce you to the cloud services that most organizations are most interested in. We’ll concentrate on three areas: Virtual Machines, Applications/Functions and Data Storage.
It should be noted at this point that while all these services exist now and likely will in the future, the names of the services change frequently along with the capabilities; usually for the better. Just know the functionality may come in a package with a different name depending on when you read this.
Let’s jump right into Virtual Machines. The job of a virtual machine is to replicate a machine configuration without actually having to physically configure an actual computer. With a virtual machine, you can create a computer within a computer. This approach saves a lot of time and money, specifically in the area of testing. Cloud computing is the perfect environment for creating virtual machines since you can begin using someone else’s resources without much advance notice.
Google, Amazon and Microsoft all offer some type of Virtual Machine service. All take a slightly different approach:
Google Compute Engine
The Google Compute Engine can meet the virtualization requirements of most any enterprise. In general, Google supports Windows and Linux as operating systems, custom versions of their Compute Engine can run on any operating system you prefer.
Google Compute Engine centers around the concept of a project. All instances and resources are then created within the project. Google offers both pre-configured and custom machine types. There are four predefined categories:
- Standard - The standard configuration has a balance between processing power and memory that meets the demands of most common needs.
- High-Memory - places an emphasis on memory over computing speed for applications that need quick access to non-disk storage.
- High-CPU (Central Processing Unit) - this configuration is designed for applications that need processing speed over memory.
- Shared-Core - CPU and RAM are shared between customers
Custom Machine Types - Unless you have a need for a very unique Virtual Machine (VM) configuration, this is probably not the option one would want to choose. In most cases, one of the predefined options will be able to provide a VM that meets your needs. With expediency being one of the major benefits of a cloud based service, does it really make sense to spend time configuring something, that someone already did. One feature worthy of note is that the Google Compute Engine allows VMs migration without reboot, enabling your application to remain alive even during system maintenance.
Amazon Elastic Compute Cloud (EC2)
EC2 falls under the umbrella of all the services offered by Amazon, known as Amazon Web Services (AWS). With EC2, a user can rent preconfigured virtual computers on which to run applications. EC2 provides a Web service that allows the user to boot an Amazon Machine Image (AMI) and configure a virtual machine, or “instance”. The user can start, and stop server instances as needed. EC2 allows users to choose the geographical location for their VM instance in order to achieve low latency and the highest level of redundancy.
Spot Instances - in order to have the capacity to provide cloud users to scale as needed, cloud providers must have extra hardware on hand that they are keeping their customers from having to buy. This means providers often have more resources on hand than they themselves need at any one time. Amazon’s solution to this is something they call “spot instances”. Spot instances are sold to customers for as little as 10% of the cost of the normal instance. In exchange for the low cost, the customer lives with no service-level agreement (SLA), and as little as two minutes notice when Amazon needs their computing capacity back. Depending on the application that the spot instance is being used for, there can be some code developed by the customer to gracefully end the process, then pick up again when the computing capacity is returned from Amazon.
AWS EC2 supports several operating systems including Windows, Linux, Centos, and Amazon’s own flavor of Linux dubbed Amazon Linux AMI
Azure Virtual Machines (Azure VM)
Like Google and Amazon, Microsoft has a Virtual Machine solution, known simply as Azure Virtual Machines. Like the other vendor’s virtual machines, Azure VM saves you the cost of the computing equipment, but they don’t claim to have preconfigured instances for you to run straight out of the box, so the Azure option may require a bit more in the way of configuration management, software installation and patching.
As examples of benefits of Azure VM, Microsoft highlights that it can be used:
- To develop and test applications in multiple environments
- Use as a way to ease your applications into the world of of cloud computing
- Use as an extended data center
While they are perfect examples of what Virtual Machines should be used for, they aren’t things that Google or Amazon can’t do either.
Microsoft allows you to choose the physical location of your VM from a wide array of global locations. The location you select could improve latency and increase availability. Microsoft boasts an SLA of better than 99.9% if you deploy with premium storage for all disks. Your SLA improves to 99.95% when you deploy two or more VMs inside an availability set. Availability sets ensure that your VMs are distributed across multiple data centers with different maintenance schedules.
Azure offers any size VM you may need. The size of your VM will be determined by the workload you need. Your VM size will then dictate the processing power and storage capacity required. Azure charges by the user by minutes used with no minimum charge. If you only use 10 minutes, you’ll only pay for 10 minutes. This seems to be the pricing model for most cloud virtual machine providers.
Microsoft provides VM Extensions that enable you to customize your VM and add the ability to run custom scripts, deploy management configurations and collect diagnostic data.
Google App Engine
Google App Engine, often referred to as GAE, is a Platform as a Service (PaaS) architecture available for developing and hosting web applications on the cloud. Like other cloud products, it scales automatically as necessary. Google boasts 99.95% uptime SLA for all billed applications. This figure can be sustained even in the event of multiple datacenter outages at the same time. Google offers paid support to all customers with Premier accounts. Free users of Google GAE can usually find free answers to common questions through online forums or Q&A groups.
When developers select a platform on which to build a system, portability is always a concern. What if we need to change down the road? There is no need for developers who use GAE to be concerned about portability of their applications. Google has developed an open-source job control system called “Kubernetes” that will enable containerized applications to run on multiple infrastructures including AWS and Microsoft Azure.
Amazon Elastic Beanstalk
Elastic Beanstalk is an orchestration service from AWS that coordinates various AWS services such as EC2, Amazon Simple Storage Service (S3), Amazon Simple Notification Service (SNS) and other services used to deploy web applications. Elastic Beanstalk allows you to connect all your AWS applications together as environments. Elastic Beanstalk allows the user to simply upload their code and let Elastic Beanstalk automatically handle the deployment tasks, from capacity provisioning, load balancing, auto-scaling and health monitoring. The user does, however, have the option to perform their own AWS resource configuration at any time.
The Beanstalk platform is a combination of the operating system, the programming language runtime, web server, application server and all the Beanstalk components used.
Benefits of Amazon Elastic Beanstalk:
- Fast and easy setup using the AWS Management Console or other development environments such as Eclipse or Microsoft Visual Studio. According to Amazon, this is as simple as uploading your application and letting Elastic Beanstalk handle the rest, allowing you to be up and running within minutes.
- Elastic Beanstalk supports applications that use a variety of platforms including Java, .NET, PHP, Ruby and Python (others may be supported as well).
Compliance in Beanstalk - Elastic Beanstalk meets the criteria for many popular compliance standards, meaning applications running banking, electronic health records and other applications that require stringent data security can be run securely on the Elastic Beanstalk service.
File Storage- Beanstalk stores your application files in Amazon Simple Storage Service (S3). S3 is an object storage service offered by Amazon Web Services that provides storage through a web service interface. It is the same storage infrastructure Amazon.com uses to run its global e-commerce network. So you can count on your objects being stored in a proven environment. You can also store large objects that support your web application in S3.
Data Storage - Amazon Elastic Beanstalk works well with any of the industry-standard database systems such as MS SQL Server, Oracle, Amazon RDS or Amazon DynamoDB among others. There is also no need to make changes to code when changing from one environment to another. For example, the application code can modify the connection string to use different databases in different environments.
Cost - Elastic Beanstalk is a manager of all the other resources you utilize to run your application. So there is no cost for Elastic Beanstalk, only the resources it manages for you. You can pay for support for your AWS resources, however, as with most computing resources you may purchase, the most rapid and detailed support can usually be found on forums and online groups that specialize in developer support.
Microsoft Azure App Service
Microsoft Azure App Service is Microsoft’s offering to the world of PaaS that aids developers in publishing and maintaining web applications. App Service supports a wide variety of frameworks and programming languages including .NET, PHP, Python, and Java. Azure App Service is a fully managed platform that provides management and monitoring to meet enterprise-level performance and compliance requirements.
Azure App Service allows you to run your web apps on Windows or Linux using a fully managed platform, to perform infrastructure maintenance, load balancing, and other common functions, all with zero-downtime. Connect your apps to a variety of both SQL and NoSQL databases; running in Azure.
App Service is robust enough for enterprise level applications. Organizations of any size can use App Services to connect their web or mobile apps to enterprise systems or SaaS in minutes. Regardless of the type of cloud the user is working within (public, private, hybrid), Azure App Service can incorporate Microsoft’s Active Directory to manage user accounts. This can be particularly useful in organizations where Windows is the main operating system of choice.
You can extend the performance of your Web Applications by integrating your web applications with other App Services such as database connections to a variety of databases like Azure Cosmos DB, integration with traffic and routing information from Azure Maps, or serverless apps like Azure Functions.
Azure App Services provide endless opportunities for creative integration of components that work well together. Microsoft lists the following benefits of the Azure App Services:
- Uptime SLA of 99.95% for standard tier customers
- Continuous monitoring of site metrics
- Websites hosted on the latest versions of IIS Runtime and Windows Server.
- Authentication using Microsoft Azure Active Directory
- Support for 4 service tiers - Free, Shared, Basic and Standard (dedicated). All tiers increase in the amount of resources and functionality apportioned.
In this section we’ll review the cloud function offerings from all three providers: Google Cloud Functions, AWS Lambda and Azure Functions:
Google Cloud Functions
Google Cloud Functions are event driven, serverless functions. Google cloud enables you to develop complex scenarios with its flexibility to connect Google Cloud services with third party services. There is no hardware to provision, and Cloud Functions support many common programming languages and built-in security capabilities for hybrid and multi-cloud services.
Google Cloud Functions run code in response to events - trigger your code from Google Cloud, Firebase, Google Assistant, web, mobile or backend application calls. Functions cost nothing until called. There is no cost for idle functions. You only pay for execution time, metered to the nearest 100 milliseconds.
Open source framework technology prevents lock-in. Google Cloud Functions supports most any common programming language.
AWS Lambda is a serverless compute service that runs your code in response to events (triggers), and manages the computing resources required to execute the code. Lambda can extend other AWS services with custom logic. Lambda can respond to multiple events using the Amazon API Gateway, Amazon S3 buckets, table updates in Amazon DynamoDB and state transitions in AWS Step Functions.
Lambda runs your code on high-availability infrastructure, performs automatic resource scaling, code and security patch deployment, and code monitoring and logging. According to Amazon, you just supply the code, specify the triggers, identify roles and select a data repository. With Lambda there are no new languages to learn. Lambda supports popular languages such as Java, Go, PowerShell, Node.js, C#, Python and Ruby.
AWS promises infrastructure with high availability and fault tolerance, automatic operating system (OS) updates and patches. Lambda also provides built-in logging and application monitoring via Amazon Cloud Watch.
Functions are Azure services that enable serverless workloads in the cloud, managed for you by Microsoft. Azure Functions is a serverless compute service. Functions allow you to take advantage of a complete end-to-end development experience. Using Azure Functions you can build and debug locally, then deploy your code to operate and scale in the cloud. Services can be integrated using triggers and bindings. Azure Functions are part of the Azure Web and Mobile Suite of App Services.
Like other cloud app services Azure Functions are event-driven and run on configured events, known as triggers. You might use Azure Functions such as a timed process, an event in a document management system or other such scenarios. Any event that you want to kick off a process can be thought of as a trigger. Any Azure functions can be called in response to a trigger. Azure functions can also interact with most any database system.
Data Storage- Data Warehouses and Databases
Google, Amazon and Microsoft all have a variety of cloud storage products and services. To be honest, it’s difficult to ascertain what each and every one of these products does without performing a highly detailed feature by feature analysis of each of the databases and data warehouses. What you need to know is that Google, Amazon and Microsoft cloud services can all work with your current database systems, as well as their own proprietary database systems. Each vendor also offers data warehousing systems for faster retrieval and lower latency when querying data.
Information concerning the details of the data storage (databases and warehouses) options can be obtained under the names Google Cloud Storage, Amazon DynamoDB and Azure CosmosDB. Each of these database products and services can perform any function you could possibly want from a database to support your web application. So I don’t recommend you select your provider based on the data storage system. Instead, I would select the provider based on the applications that you feel fit your requirements best, then do a deep dive into the intricacies of the database system that goes with it.
Making a selection as to which cloud product you should consider for your business is not an easy one. Given the wide usage of all of these products, you can certainly make any of these products work for you. But the question is; which one is best for your organization. Which one is faster, easier, fits your organization going forward etc.
If you are a large enterprise already using Microsoft products and services including Active Directory, Azure may be the way for you to go. Your system administrator’s familiarity of the inner workings of Azure may help you make that decision. If you’re running an e-commerce website or anything that even resembles an e-commerce website, you may want to use
Amazon. It has robust data warehouse solutions. No doubt they’ll offer more of the functionality and query speed you need. On the other hand, Google always tends to offer a taste of everything. If the claims of the providers are accurate, Google and Amazon are easy to get up and running, literally minutes they claim. Keep in mind, if you select one provider and decide down the road that you want to change to another, they all make it easy to migrate.
From a long-term standpoint, selection of one of these cloud providers shouldn’t be made from reading material. Unfortunately, it means getting your feet wet. Try some of your web applications on each platform and see which one “feels” best to you, from the perspective as an end user and a developer.