XaaS

By Jim Shingler | March 5, 2022

1. Abstract

Cloud offers a variety of solutions and approaches: IaaS, CaaS, PaaS, FaaS, and SaaS. It isn’t always clear which solutions and approaches are appropriate. The purpose of this paper is to clarify the approaches, their implications, appropriate usage, and confirm Intents.

I am trying something new. I am going write this blog post in the open. I will start writing my thoughts and ideas, and you will be able to see and comment on the blog as it is developed. Your thoughts and questions will help me to improve the this post.

2. Problem Statement

IT Solutions:

  • Business IT

  • Custom Dev

  • Cloud Native microservices

  • Legacy tightly coupled monoliths

  • Large scale Commercial Off The Shelf (COTS)

    • SAP

    • SalesForce

    • Manhattan

A clear direction and guide rails with reference architecture and implementations are required to avoid confusion, resolve competing direction and help the development teams move forward.

How do you continue the movement to the cloud?

Factors to be considered:

  • Organizational Change Management

  • Security

  • Flexibility

  • Velocity (Speed)

  • Cost

  • Staffing

  • Skills Uplift

  • Business Partners and Contracts

3. Background

Many companies have embarked on a Cloud Journey with the goal of moving as much compute to the cloud as possible. Your Company may be using Amazon (AWS), Google (GCP), Microsoft (Azure), or multiple clouds. Frequently, the cloud journey is initiated with an Infrastructure as a Service (IaaS).

With the goal of simplicity and velocity, typically expands into Container as a Service (CaaS) approach using Docker, Kubernetes or some other Container Management solution. Around 2015, Platform as a Service (PaaS) was introduced. VMWare Tanzu (Pivotal Cloud Foundry - PCF) is a leanding PaaS solution.

With the goal of shutting down Traditional OnPrem Data Centers, Your company may start a "Lift and Shift" of Virtual Machines in Data Centers to Cloud based IaaS. Your Company’s usage of the cloud to date has largely been Infrastructure as a Service (IaaS), Cloud Services, and Software as a Service (SaaS).

Definitions:

3.1. Traditional OnPrem

Traditional On Premise computing requires the company to take responsibility for sizing, acquiring, securing, and configuration of the Infrastructure (Servers, Networking Gear, and Physical Space). Once configured, the company is responsible for Operating the Infrastructure (Patching, Monitoring, Alerting, High Availability, Backup and Recovery, …​)

While not the subject of this paper, an important consideration is the Total Cost of Ownership, Large initial cash outlay, and the OPEX VS CAPEX implications.

3.2. IaaS - Infrastructure as a Service

A cloud computing service that provides a basic computing platform, typically the hardware and virtual machine (VM) infrastructure (no operating system) or the hardware and an operating system. [1]

3.3. CaaS - Container as a Service

Containers as a service (CaaS) is a cloud service model that allows users to manage and deploy containers, applications and clusters through container-based virtualization. CaaS is highly useful to IT departments and developers in building secure and scalable containerized applications. With CaaS, this can be achieved using on-premises data centers or over the cloud.

CaaS provides an easy way to set up a container cluster. Orchestration, which essentially automates key IT functions, is an essential quality of CaaS technology. Google Kubernetes, Docker Swarm, Rackspace Carina and Apache Mesos are all examples of CaaS orchestration platforms. Some public cloud CaaS providers include Google, Amazon Web Services (AWS), Rackspace and IBM.

CaaS is often considered to be a subset of IaaS (infrastructure as a service), but includes containers as its fundamental resource, as opposed to bare metal systems and virtual machines. [2]

Containers:

Container Orchestration:

3.4. PaaS - Platform as a Service

A cloud computing service that provides a comprehensive computing environment. PaaS includes the hardware, operating system, database and other necessary software for the execution of applications. It may include a complete development environment as well. PaaS is a step up from "infrastructure as a service" (IaaS), which provides only the servers and operating systems. [3]

3.5. FaaS - Function as a Service (Serverless)

A cloud computing service in which the customer pays for each function executed rather than a full server or part of a server (a virtual machine) that may be idle periodically. For example, the time required to execute the code that updates a record in a database would be charged to the serverless computing customer. Servers are indeed used, but the term implies "function as a service" (FaaS) rather than "infrastructure as a service" (see IaaS) or "platform as a service" (see PaaS). [4]

  • AWS Lambda

  • Google Cloud Functions

  • Google Serverless

  • Microsoft Azure Functions

  • IBM Openwhisk

  • KNative

  • …​

3.6. SaaS - Software as a Service

Software that is rented rather than purchased. Instead of buying applications and paying for periodic upgrades, SaaS is subscription based, and upgrades are automatic during the subscription period. When that expires, the software is no longer valid. Ideal for Cloud Computing SaaS can be implemented with local applications that expire after a certain time, but it is ideally suited for cloud computing and applications that run in any desktop or mobile device, no matter the OS. In this model, the applications are maintained in the provider’s datacenter, and every time users launch their browsers or apps and log on, they get the latest version. In addition, user data can also be stored in the cloud. [5]

4. Why has been Answered

  • Speed to Market

  • Speed to Revenue

  • Accelerate Development velocity

  • Reduce Operational Overhead

  • Eliminate Infrastructure Bottlenecks (Self Service)

5. What and How

The goal of this section is to examine the characteristics and implications of each aaS.

Traditional OnPrem will not be addressed in this post.
XaaS

5.1. IaaS

IaaS can be thought of as running solutions in the cloud providers data center instead of our datacenter. The primary benefits are the near infinity ability to scale quickly.

Benefits:

  • Scalability

  • Flexibility

Workloads:

  • Virtual Machines

  • Database Server

  • Middleware

  • Uncontainerized Commercial Of The Shelf products

  • Uncontainerized Legacy Monoliths

Implications:

  • Very little process improvements without additional efforts

  • Automation and Consistency require additional efforts

  • Skills Uplift:

    • Cloud Vendor Specific tooling and processes

    • Automation tooling

  • Additional supporting efforts required for success

  • Minimal Application impacts (Our VMs vs Cloud Provider VMs)

5.2. CaaS

CaaS is the next level of Virtualization. Virtual machines have complete copies of an operating system and run on a hypervisor. Virtual Machines use significantly more resources compared to Container Technology. Containers share an underlying OS Kernal and contain only the minimum additional components. Containers are typically much lighter weight and faster compared to virtual machines,

Benefits:

  • Scalability

  • Flexibility

  • Resource Usage

Workloads:

  • Containerized Legacy Monoliths

  • Commercial Products

  • If not already containerized will they?

  • Open Source Products If not should we containerize it, do we want to contribute to the product?

    • Redis

    • Kafka

    • Rabbit MQ

    • DevSecOps Tools:

      • Concourse / Jenkins / Github Actions / GitLab

      • Binary Repo (Nexus) Container Repo (Harbor, Clair) SonarQube

Implications:

  • Very little process improvements without additional efforts

  • Automation and Consistency require additional efforts

  • Skills Uplift: (Development and Platform Teams)

    • Cloud Vendor Specific tooling and processes

    • Automation tooling

    • Container Technology (Docker)

    • Container Specification and Orchestration Technology (Kubernetes)

    • Network (Development Team)

    • Security (Development Team)

  • Additional supporting efforts required for success

  • Roles and Responsibility Clarification

  • What is Development Teams Responsibility?

5.3. PaaS

PaaS is an opinionated Application Infrastructure Framework that enable Development Speed. While opinionated, PaaS is still relatively flexible.

Not all PaaSs are equal. PaaSs offer a variety of capabilities and restrictions. For Example: VMWare Tanzu (Pivotal Cloud Foundry - PCF) offers additional value added capabilites overy Open Source Cloud Foundry.

Benefits:

  • Developer Experience and Effectiveness

  • Very low barrier of development entry

  • Development isn’t required to learn Networking and Infrastructure

  • Scalability

  • Self-Service

  • Easy to use

Workloads:

  • Customer Development Business Services

  • Web Frontends

  • Batch

  • Event Processing

Implications:

  • Cloud Foundry may have additional Licensing Costs

  • Lends itself to Automation, Consistency, and DevSecOps

  • Skills Uplift is relatively easy and focuses on Cloud Native Implementation

5.4. FaaS

FaaS is the Newest of the "aaS" solutions. FaaS further extends the capabilities and benefits of PaaS.

Additional Research and Monitoring recommended. KNative while still young shows a great degree of promise.

Benefits:

  • TBD

Workloads:

  • TBD

Implications:

  • Many of the current FaaS solutions are vendor specific and cause vendor coupling.

  • TBD

5.5. SaaS

SaaS evolved out of Application Service Providers and is the most mature and well known of the "aaS"s.

Benefits:

  • Operations handled by Vendor

  • Standardize Solutions

  • Minimal Investment of Time and Money

Workloads:

  • Anything NOT the Business Secret Sauce.

  • Context Business Needs [6]

Implications:

  • Maybe completely Outsource

  • Dont Generate Revenue

  • Easily Replaced

5.6. Where should I run my application

The below represents, at a high level, where an application should run in the cloud.

Work in progress
run dt
The above diagram is adapted from prior work by Doug Hoke

5.7. When to CaaS Containerize

Containers are the preferred approach for making application deployment and Dev/Ops fundamental to all applications and their teams. There are things to take into account when making your decision to modify your application to run in a container. Provided below is a decision tree to help with making this determination.

Work in progress
when caas
The above diagram is adapted from prior work by Doug Hoke

6. Additional Considerations

  • Databases

  • ML / AI

  • Analytics & Reporting

  • Security

comments powered by Disqus