The last two decades have seen an incredible rise in humanity’s ability to manage information, and ultimately be in control of changing reality.

For example, through a search engine app, we can research any problem, anywhere, all the time. Not only that, we can act on that research immediately as well. We can summon food, transportation, and even adhoc labor. All this just by clicking a few buttons on a web browser or on a mobile app!

Cloud computing technology lies at the heart of these capabilities. Harnessing access to cheap, abundant, and powerful computing, storage and networking facilities; engineers are building new applications that change how we live, think, study, entertain, plan, exercise and work.

On a grossly simplified technical level, cloud computing provides users to use an internet based application for 1/ managing valuable information, and 2/ connecting with other people to decide and act on this information.

Underlying cloud computing’s magical abilities is the messaging fabric of internet with protocols like HTTPS, SMTP, TCP/IP, and DNS. So then, why do we call this new capability cloud computing? Though the difference remains evolutionary, it has had a massive impact. It brings together multiple advances in different fields together to be used by application engineers in a seamless fashion:

  1. Messaging anywhere: this is enabled through wireless communictions

  2. Compact, portable, generic computing: this is the smart phone we love to use and are addicted with.

  3. Servers that run 24x7: reliable data centers to house enormous amounts of servers.

  4. Desktop browser applications: we applications that can be streamed in real time to user devices. These web applications are composed of markup and scripting, and sophisticated enough to provide compelling user experiences.

Cloud computing refers to the general availability of 1/ standardized internet server application architecture (firewalls, load balancers, application servers, databases, …) along with 2/ high quality, managed and mostly open source toolsets (kubernetes, docker, source code control systems, golang, …).

These set of posts unpack and demystify cloud computing and provide clarity for software engineers to make good choices for their given internet application problem.

XaaS business model: X as a Service

Software as a Service (SaaS) is a solution for which users pay a software suscription fee for access to a software application. Most times, browser and mobile applications are provided. In some cases, especially for graphics heavy programs, there is an accompanying desktop app as well.

Infrastructure as a Service (IaaS) is a solution for application engineers themselves to rent or lease virtual servers, network, and storage from a commercial public cloud service provider such as AWS, GCP, Heroku, Cloudfront etc. The big win for application engineers is that they do not pony up capital to set up datacenters.

There is a subtle distinction here as well: when service providers lease managed databases and data structures such as object stores, databases, message bus, and load balancers among others; then these offerings are termed as Platform as a Service (PaaS). The big win for application engineers consuming PaaS is that they get to use managed tooling on a pay as you use model.

XaaS business models also introduce new marketing and financial process terminology that application engineers often face (when discussing new enhancements to their application programs):

  1. Freemium model: an XaaS offering that provides a permanently free usage tier to attract users, and then converts them to paid subscribers.

  2. Cohort analysis: user registrations and subscriptions to a XaaS offering grouped by time to study the effect of upgrades (additional buys) and churn in the customer base. This analysis is frequently used as justification for enhancing product offerings for either increasing revenue or reducing churn.

  3. Annual Recurring Revenue (ARR): this is the assured revenue in the XaaS business from its existing user base. Since the purchases and upgrades are performed virtually, the user base is more sticky than in the case where customers had to acquire, extend and upgrade software releases on their own.

  4. Cost to serve: XaaS providers need to manage hardware, systems, and software uptime. This number calculates how much effort in money is required. This is even true when the XaaS organization uses a public commercial cloud provider, as the cost is then attributed to the fees spent on the commercial cloud provider.

  5. Net promoter score: XaaS offered on the internet is inherently networked, and this survey score helps organizations understand how satisfied thier users are with their offering, and what is the likelyhood that they would recommend thier offering to other potential customers (ultimately resulting in a better ARR or reduced churn).

Thats all for this post. This post should help an application engineer understand and answer the following questions:

  • What is cloud computing?
  • How does cloud computing differ from previous “.com” bubble of 1990s?

In coming posts I will discuss how application engineers “run” programs in the cloud, and how to “write” programs for the cloud.