What is cloud
With this article we hope to outline what is Cloud computing, how we use it and how it can help our clients to leverage the benefits of it.
Cloud computing is typically defined as a type of computing that relies on on-demand computing resources (network, servers, storage, services - computers that shares resources) rather than having local servers.
Cloud providers try to maximize the effectiveness of this shared resources and prices are adjusted on each improvement.
Advantages of cloud
- Elasticity: an organization is able to scale very quickly to thousand of machines
- Costs: reducing upfront IT costs and eliminate the need for technical personnel to maintain servers and local infrastructure
- Backups and HA: most cloud providers have high availability and SLA of 99.999%
Cloud computing solutions are grouped in multiple categories depending how the resources are exposed to final users.
As shown in the image, the main differences between the platform is regarding what resources are managed by the user and which are managed by the cloud provider on each solution.
We’ll describe them in more depth in the next sections.
IaaS - Infrastructure as a Service
Provides access to computing resources in a virtualized environment. Basically users of IaaS will receive virtual servers that they will manage:
- AWS - One of the oldest cloud providers and according to Gartner Magic Quadrant has most of the market share. For new customers they offer a Free Tier that enables them to use it freely for 1 year with some limited resources. For a new application or website with few users, the resources should be more than enough.
- Azure - Microsoft cloud solution is intensively promoted and has a large base of customers, most notably Apple. The solution is not limited to Microsoft products and can be used on any OS's like Linux.
- Google Compute Engine - The new kid on the block, is stable and lowering the price continuously. Their datacenter is limited at this time only to a few countries but expanding.
We’re an AWS partner and for suitable solutions we choose AWS as it is very mature, stable with multiple services and prices are very competitive. We also have experience with Microsoft Azure and Google Compute Engine and we use them when appropriate.
PaaS - Platform as a Service
Is a form of cloud computing that provides a platform (runtime) and environment to allow developers to build applications.
One of the advantages of PaaS is that there is no need to have operations teams to monitor infrastructure. User is focusing only on the application itself. Most notable PaaS providers are Heroku, Google App Engine, IBM Bluemix, OpenShift, SalesForce.
One of the advantages of Google App Engine is the datastore database, a schema-less NoSQL database. Most notable users of GAE are Snapchat, Khan Academy.
Heroku is very friendly for developers but lacks storage so you will need to rely on third parties like Amazon S3.
SaaS - Software as a Service
Is a business model where software is licensed and delivered. SaaS Is basically on-demand software for end users.
At this moment lots of startups choose this business model for delivering software solutions to consumers. One advantage for end users is that does not have to update software ever, on cloud it is always running the latest version.
Most notably for SaaS are services like Evernote, Gmail, Facebook, Office 365, Google Apps, etc.
BaaS - Backend as a Service
Is an approach to cloud computing that provides a backend for applications (mostly mobile). They provide an API and tools for different computer languages to integrate with their backend. They also provide additional services like storage, Analytics, Push notifications, dashboards, social integration.
Somehow it is similar to SaaS, but BaaS is mostly targeted at developers, where SaaS is targeted at end users.
Parse is the most known BaaS and it was acquired by Facebook on 2013. Provides integration with most computer languages and covers all services needed by an application. They offer a free tier for small apps.
Another popular BaaS is Firebase, acquired recently by Google. It is targeted mostly at realtime apps and also offers storage.
BaaS is highly recommended if the solution has to be developed very fast with a stable backend. We use Parse for our projects when the application requirements need such a solution.
Public vs Private Cloud
Public cloud is a type of cloud where resources are shared between multiple users and are publicly available to any company/user.
Downside for a public cloud is the risk for virtual machines to break the virtualization sandbox that can lead to security issues.
To mitigate this issue a client can choose a private cloud where hardware, storage and network are dedicated to a single client. Also to get compliance with PCI, HIPAA is much easier with a private cloud.
We think that Cloud computing is already mature and businesses are relying more and more on it.
The choice of solution depends in most cases on the budget and the level of control that is needed. A small startup will prefer to use a PaaS, but a large enterprise will prefer a hybrid solution between On Premises combined with IaaS.
The use of Cloud solutions will grow more as technologies like Docker will mature and became more popular. Many cloud providers already added Docker integration or plan to do so.
I hope that this article brings some understanding of cloud solutions and that our expertise is available for your next project to make use of the advantages of using cloud solutions.