The SDI4Apps platform should be cloud-based framework, so this blog post explains what the cloud is.
Cloud computing is a general term for anything that involves delivering hosted services over the Internet.
The term cloud itself originates from the habit of symbolizing the Internet as a cloud in schematic images like this one:
There is a very precise definition of cloud computing available: The NIST Definition of Cloud Computing. However it takes several pages of abstruse text, so I will try to explain it here in simpler terms.
The most important things is that there are 3 different types of cloud computing (called “service models” in the NIST definition) – Software-as-a-Service (SaaS), Platform-as-a-Service (PaaS) and Infrastructure-as-a-Service (IaaS). They are best explained with examples.
Software as a Service (SaaS)
The Software-as-a-Service cloud service model is the one best known to computer users, because it is the only one that users directly use. It provides device independence, its resources can be accessed from any computer connected to the Internet, i.e. a PC, a notebook, a smartphone, a tablet, a smart TV, an ebook reader, an Internet kiosk etc. Some well-known examples of SaaS are:
- web mail – Gmail, Hotmail
- social networking and messaging – Facebook, Google+, Twitter
- on-line office suites – Google Docs, Microsoft Office 365
- file services – Dropbox, Google Drive, Microsoft OneDrive, ownCloud
- image libraries – Picasa, Flickr
- music libraries – Spotify, Google Play, iTunes
- video libraries – YouTube, Vimeo
- communication tools – Adobe Connect, WebEx
- business software – Salesforce, NetSuite
- web content management – Google Sites, WordPress.com
Platform as a Service (PaaS)
A platform is a software environment used to develop and run applications. The Platform-as-a-Service cloud service model is not visible to end users, it is targeted to application developers and maintainers who want to develop and deliver their SaaS applications. Some well-known examples are:
- Google App Engine (provides PHP, Python, Java, Go)
Infrastructure as a Service (IaaS)
The Infrastructure-as-a-Service service model provides a virtual data center. Its users do not have to build their own air-conditioned fire-protected computer rooms containing racks filled with computers connected by cables and network equipment, with electricity supplied by uninterruptible power sources (UPS).
An IaaS provider provides so called virtual machines (VMs) that provide a complete system platform supporting the execution of a complete operating system. Many VMs can be hosted on a single physical machine running hypervisor software (popular choices are KVM, Xen, VMware).
An IaaS provider also usually provides:
- disk images with preinstalled popular operating systems (various versions of Linux, MS-Windows)
- networking services – virtual local area networks, virtual private networks, IP addresses, firewalls, load balancers, domain name service (DNS)
- storage services – virtual block storage, file storage, object storage, relational database storage, noSQL storage, tape archive storage, content delivery network (CDN)
Large IaaS providers distribute their physical resources into separate geographically dispersed locations, so that disasters such as flooding or earthquakes can disable only a part of their infrastructure. IaaS consumers create and destroy VMs on demand, either manually or by setting up scaling rules. Such rules can state for example that a new VM should be started when existing VMs are loaded on more than 95%.
Some well-known public IaaS clouds are:
- Amazon Elastic Compute Cloud
- Google Compute Engine
- Microsoft Azure
- Rackspace Cloud Servers
It is also possible to create a private cloud using one of many available software tools, some of them are:
- VMware vCloud Suite
Resources hired from an IaaS cloud provider can be either used directly, for example for an on-demand movie rendering, or as a layer under a PaaS or SaaS cloud. For example, the SaaS cloud file hosting service Dropbox operated by Dropbox Inc., runs on top of the Amazon’s IaaS cloud, thus a SaaS cloud operated by one company can be run on top of an IaaS cloud operated by another company.
The cloud has three different service models:
- Software-as-a-Service model provides on-demand access to software, either as downloadable code executed on client computers, or through remote API calls to code executed on servers
- Platform-as-a-Service model provides on-demand software environment for deploying applications. The environment includes concrete programming languages, their specific libraries, and additional services like SQL and no-SQL storage. PaaS cloud is usually used as a layer under SaaS cloud services.
- Infrastructure-as-a-Service model provides on-demand resources from a virtual data center. The resources can be used directly or as a layer under PaaS or SaaS cloud services.
The SDI4Apps platform is PaaS cloud platform intended to be used for providing SaaS services in the domain of spatial data. The SDI4Apps platform cloud be deployed into any IaaS cloud.