Lately cloud computing has been trend in IT. In these post I will try to explain basic concept and models of cloud.
Cloud computing is a bit strange to define but basically it is consuming IT as a service. It can be anything from using hosted application to using your own infrastructure to achieve better effectiveness and use of shared resources. Idea is to use resource (host by third party or on local server) by clients (on their PC, tablet, phone…). Whole concept dates to the 1950’s when mainframe computers (hosts) where used by terminals (clients).
Cloud can be classified in three major groups: Private, Public and Hybrid. This classification is based on deployment model.
Private cloud (or internal cloud) offers scalability and self-service of a cloud but only for one organization. This approach gives better control over resources and security policies that organization wants to apply. Disadvantage is cost, as you need initial investment in hardware that is going to power your cloud and you will need staff to maintain both service level and hardware level. Cost can go up over the years as you are going to need spare parts, electrical power spent over time etc.
Public cloud on other hand has lower initial cost as you don’t have to invest in hardware. It uses shared resources for many organizations to cut down cost. There is no power consumption, no spare parts, no staff to maintain hardware on user side. This model of cloud allows you to use what you need, when you need it. Concept of public cloud is to use IT as utility (such as electric grid).
For example, let’s say you need powerful server with lot of memory and processors that you use only for few hours a month. With public cloud, you don’t need to invest in such a server. You can use public cloud to deploy powerful virtual server that you can use these few hours a month and keep it shut down rest of the time. This way you will be charged for only what you use and you can cut cost significantly.
Hybrid cloud, as name says, is a hybrid, a combination of public and private cloud.
There are also few other deployment models, but not so often as top three.
Community cloud shares infrastructure between organizations with similar concerns and goals. This way initial cost is shared between organizations but there is also security risk for sharing resources with other organizations.
Distributed cloud assembles resources across different locations. This can be seen in large organizations that have multiple locations and use resources in different locations to form powerful cloud.
Multicloud is use of multiple public clouds. It means using public cloud services from different vendors. It’s usually formed to cut cost as you use services that are cheaper from one vendor and other services that are cheaper at other vendor. On other hand, this model can be very complexed and hard to maintain. Also, cost of service can vary, so buying service from one vendor can be cheaper only for a short time.
Besides classifying cloud by deployment model, it can be classified by service model:
- Iaas – Infrastructure as a Service
- Paas – Platform as a Service
- Saas – Software as a Service
With private cloud you have control on all levels. You manage networking, storage, servers, virtualization, OS, middleware, runtime, data and application.
In public cloud, level of components that you manage are different by service model that you use.
To simplify, I will you use examples from Microsoft Azure but concept applies for all cloud vendors.
For networking, storage, servers and virtualization components, you have none or very little control in public cloud. You can change number of processors, RAM or IP address of your server, but still you have no control over hardware, hypervisors etc.
When using Infrastructure as a Service (IaaS) you can chose what OS you will use and customize your virtual machine on OS level any way you want. You can deploy any number of service on this VM, host application and customize anything that is possible on OS level.
When using Platform as a Service (PaaS), OS level is no longer in your control. Best example for this would be using Azure SQL Database. You still have control over some features on SQL server level, data, security… but you can’t any longer customize anything that is on OS, middleware or runtime level. On PaaS model, you can deploy database that you want to use and deploy your application. Only thing that you can customize are data and application.
Software as a Service (SaaS) takes away almost all control from user. There are some security features that you can control but that’s about it. You use software as it is and can’t customize much. Best example for this, when talking about Microsoft Azure, would be Office365 and related services.
Hope it helps someone.