SDI 4 Apps - Uptake of open geographic information through innovative services based on linked data

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:

Cloud computing

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

SaaS is sometimes referred to as “on-demand software” or “application service providing (ASP)”. The SaaS provider provides the software in the form of downloadable executable code which runs locally in e.g. JavaScript in user’s web browser or natively on user’s operating system (MS Windows, Linux, OS X, Android, iOS, etc.). The client code calls some platform-independent API (Application Programming Interface) on the provider’s servers. Such an API is often based on the HTTP protocol and sometimes it can be called by third party applications. A nice example of such an open API is the Google API which allows third parties to develop applications that can use the functionality provided by Google servers.

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)
  • Amazon Elastic Beanstalk (provides Ruby, PHP, Python, .NET, Java, JavaScript)
  • Heroku (provides Ruby, PHP, Python, Java, JavaScript, Perl)
  • Microsoft Azure Websites (provides PHP, Python, .NET, JavaScript)
  • Red Hat OpenShift (provides Ruby, Python, PHP, JavaScript, Perl, Java, Haskell, .NET)

The platforms usually provide a set of programming languages with their standard libraries and a selection of popular frameworks written in those languages, like Django for Python, Ruby on Rails for Ruby, or Node.js for JavaScript. Additionally they provide some means for storing data, usually relational databases such as MySQL, PostgreSQL, Oracle, MS SQL, and some non-SQL databases optimized for high scalability such as Google’s BigTable or Amazon’s DynamoDB.

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:

  • OpenNebula
  • OpenStack
  • Eucalyptus
  • 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.

Summary

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.

Share this: