Cloud Computing is composed of several terms which are concerned with different aspects of software. BaaS or MBaaS (Backend as a Service/Mobile BaaS), IaaS (Infrastructure as a Service) , PaaS (Platform as a Service) , and SaaS (Software as a Service). You can see an overview of each term bellow.
What it is?
Cloud Computing sparked a frenzy both in the business and IT world. Despite this excitement many people have only a foggy idea of what cloud computing actually means. Without going into overbearing detail, cloud computing offers all of the benefits of having a skilled and outfitted IT department in your business without the massive investment. Cloud computing has also been used to refer to the tools and APIs provided to developers which help (Castellani, 2017).
Why use it?
There are benefits to cloud computing which should interest both business professionals and computer scientists. The greatest hurdle to building software in many cases is lack of expertise in back-end development. With the right training its possible to create an adequate back-end but often as developers learn they may make costly mistakes in implementation. With Cloud Computing developers can rely on the extended wisdom of Microsoft, Amazon or Google engineers, who won’t fall into the same pitfalls as new developers. Sidestepping the learning curve of back-end related technology leads to significantly reduce development time. Ideally this results in more time spent developing a terrific front-end. A non-traditional approach also relieves developers from having to do maintenance work, release updates and debug back-end software (Sanders 2017).
A visual example for scalability:
Cloud Computing eliminates the need for physical servers allowing smaller developers the chance to use functionality which they might have otherwise not had access to. Suppose that an app goes viral and demand now far exceeds infrastructure causing crashing and lag. In order to capitalize the developers may implement another server only for demand to decrease again. This leaves the company with more servers than it needs. (Tucker 2014).
Using Cloud Computing allows for scalability which will ensure that in the event of a spike server allocation is increased and that during a low period servers can be down scaled. The scalable nature of cloud computing coupled with the common practice of only charging customers for the data they use has contributed to Cloud Computing’s popularity.
If you are thinking of using cloud computing for your software needs it is good to be aware of the major Cloud providers. Each provider has various strengths and special offerings which could change your decision to adopt that provider:
Storage: The most common usage of cloud computing is of remotely storing data in servers in order to free up local storage resources. Each provider discussed offers some form of cloud storage for their users.
Databases: Most of the providers actually provide multiple options for databases, in the form of SQL and NoSQL databases. Firebase is the only service which only offers one option for DB (a NoSQL option). Some of these databases are custom built to interface with the other services the company provides. For instance AWS built Aurora as an Amazon specific RDBMS.
Analytics: Helps users and companies understand how their app is used and how efficient it is at its task
Security: Handling authentication and authorization requires an entirely different skill set than knowing how to code for the front end or other backend components. Identity and access management (IAM) are a standard feature offered to consumers.
User Management: Every app wants to track its user base somehow but this essential task is fraught with complications. This task is a combination of security, databases and networking. Some MBaaS providers offer ways of fulfilling this feature.
Developer Services: This category proves difficult to define because cloud computing also offers services which are meant to aid in the development of software. Each provider offers its own unique set of tools for developers to make use of.
Amazon Web Services (AWS)
|CEO: Andy Jassy||Release Date: March, 2006||Popularity: Leader in Cloud Computing|
AWS are the unlikely pioneers of cloud technology and now own half of the market in cloud computing services. The roots of the idea came simply from the technology which the e-commerce giant services relied on for its primary business. Amazon became very good at running reliable, callable, cost-effective data centers out of need. Their first marketed service was the Elastic Compute Cloud(E2C) (Miller, 2016).
Notable Use Cases:
Elastic compute cloud (EC2): AWS’s first service, this service mostly relates to client/server architectures. Essentially a user can pay to spin up Virtual Machine instances that will carry out the requests of the client.
Lambda: Similarly Lambda is meant to enable server-less computing by performing the tasks normally reserved for servers. Lamda runs developer specified code in response to events such as uploading an image from your phone online.
Simple Storage Services – S3: Meant to work in concert with EC2 and Lambda to provide a place for all of the data produced by the previous two can be stored.
Amazon’s greatest offering is the economy of scale. From my brief investigation of prices between providers it seems as if Amazon offers the best prices for the base services of any cloud provider (Storage, computational power, virtual servers).
|CEO: Satya Nadella||Release Date: Feb, 2010||Popularity: Highly used by companies/organizations|
Azure was developed as a response to AWS’s spike in popularity. With the massive resources of Microsoft behind it Azure has been making rapid growth and despite AWS’s head start Azure is not far behind in terms of profits. Microsoft reported a 90% increase in sales from 2016 to 2017 (Weinberger, 2017)
Notable Use Cases:
Virtual Machines: “Azure Virtual Machines gives you the flexibility of virtualization for a wide range of computing solutions with support for Linux, Windows Server, SQL Server, Oracle, IBM, SAP, and more.” (Azure, 2015)
SQL Database: Allows users to work in whichever programming language and OS they are most comfortable in (offers Python, Java, Node.js, PHP, Ruby, and .NET on the MacOS, Linux, and Windows platforms).
Azure App Service: This service allows developers to build web, mobile, and APIs using .NET, .NET Core, Java, Ruby, Node.js, PHP, and Python. They offer PaaS
Azure seems to be quite popular with enterprises because it is a hybrid cloud. According to the Azure website “A hybrid cloud is a computing environment that combines a public cloud and a private cloud by allowing data and applications to be shared between them.” This allows companies to keep sensitive information on premises on their own infrastructures while using the cloud services they desire. They also offer a suite of options for developers building for the Internet of Things
|CEO: Sundar Pichai||Founding: October 2011||Popularity: Unique niche and popular with developers|
GCP is left trailing in the wake of the two aforementioned businesses. One does not simply overlook Google however. Most traditional businessmen understand cloud computing as a way to outsource computer resources. GCP expanded the definition to include “renting” powerful API’s. This places the undeniable power of Google’s technology in the hands of developers.
They don’t offer infrastructure services on the same scale as AWS or Azure but everyone still watches Google intently for any development which could shift the winds in the cloud computing world. (Google Developers, 2017)
Notable Use Cases:
Big Data/BigQuery: Perhaps the core of Google’s business model and one which would certainly be crucial to any data based app.
Machine Learning: A hot topic in the industry and a topic which Google excels in. Building an entirely new AI and learning an existing one can take comparable amounts of time. There’s little chance that an in house machine learning software will perform at the same level as one developed by Google.
Google App Engine: App engine is a web framework for hosting web applications on Google managed data centers. It is useful for getting your app out there and not just running on localhost. It supports most modern programming languages and systems.
Due to Firebase being Google’s mobile platform much of the features that would be useful to mobile developers aren’t present. The good news is that GCP and Firebase are configured in such a way as to allow them work in unison. GCP is still relevant as they offer API’s and infrastructure mobile developers could find useful.
GCP specializes in big data (querying, data analytics), machine learning initiatives, and container support. Businesses working with finding information within large datasets or that want to gain insight into the best practices for them should spring for GCP.
|CEO: James Tamplin||Founding:April 2012||Popularity: Startup with great potential|
Bought by Google in 2014 Firebase has replaced the suite of features which used to make up Google’s mobile platform. Despite its fledgling status and fringe recognition Firebase has two unique selling points which make it an exciting technology (Firebase, 2016; 2017).
Notable Use Cases:
Realtime DB & Cloud Firestore: Databases are standard feature for any cloud computing venture so I was a bit taken aback that Firebase DB and Cloud Firestore were both NoSQL databases and they both offer apps the power to store and sync data in real time. It turns out that realtime DB is the older, more stable version that suffers from some organization and scaling issues. Cloud Firestore is aimed at surpassing Realtime DB by solving those problems but it is still currently in beta and suffers from performance issues (Kerpelman, 2017).
Cloud Functions: Similar to AWS Lambda, cloud functions will run in response to events in your app (the client) with code that is stored in the Firebase data centers (the server). This tool would primarily be used to create a back-end for your app.
Cloud Messaging: Firebases way of doing push notifications. Used to be Google Cloud messaging until Google bought the company and made it as their app platform.
Authentication: Provides multiple methods for signing into an app through Facebook and Github for instance. When it comes time to sign in a Google UI will appear.
- Firebase exclusively focuses on mobile apps and MBaaS.
- Using Firebase allows you to use all of the services of GCP as well since the two technologies are entirely compatible.