Everything as a Service (EaaS)

The goal of a solution delivery team is to deliver business value fast. Modern applications help achieve this goal by separating and decoupling monolith applications into smaller functional services—or microservices—that focus on one thing and do it well. Each microservice often has its own data store and can be deployed and scaled independently. They Key aspects of modern applications:

  • Use independently scalable microservices such as serverless and containers.
  • Connect through APIs or Event Bus.
  • Deliver updates continuously.
  • Adapt quickly to change.
  • Scale globally.
  • Are fault tolerant.
  • Carefully manage state and persistence.
  • Have security built in.

While this directly addresses only the application architecture aspect, it requires other teams to build and execute in a similar manner to be successful. In order to continuously deliver features, there is a need for all cross-functional teams to operate as a single team.

Innovation requires change. You can learn faster by making lots of little changes to drive incremental innovation, rather than waiting to take one giant leap.

The “as-a-Service” Evolution

As a Service Progress

The diagram above illustrates your progression as you move from an on-premises to a SaaS model. By making this transition, you are effectively reducing the undifferentiated heavy lifting of maintaining and managing infrastructure and certain pieces of software. As you move from an on-premises model to an Infrastructure as a Service (IaaS) model, you gain
the same flexibility as if it were your infrastructure—minus the overhead of managing the premises, power, security, virtualization, storage, networking, and other aspects of app development. Platform as a Service (PaaS) further builds on the IaaS layer by adding abstractions that can be leveraged by development teams. PaaS hides the complexities of dealing with operating systems, middleware, and runtimes—and allows developers and operators to focus on writing and supporting the application rather than the infrastructure. Software as a Service (SaaS) refers to applications that are fully managed by the provider. This means that organizations can purchase software licenses and immediately get to work without any development, management of infrastructure, or installation. You can begin realizing value very quickly, often without the involvement of IT. Now when you think of higher-level services or APIs and solved problems by composing other services or APIs, you got Everything as a Service.

Developing software is like assembling a car with pre-built parts. Recent research highlights that only 10 to 30 percent of code is custom and that 70 to 90 percent is open-source1. You can start by exploring whether any services from Independent Software Vendors (ISVs) will fit your needs. When designing a new solution, I recommend exploring Services options in the following order:

  1. SaaS offered services
  2. Cloud providers
  3. ISVs
  4. Internal Services that are built by your organization.

If none of these options solves your problem, then build a customized solution. What you should be building as a service are business domain-specific services. Between cloud and ISVs providers, you are covered when it comes to platform services. There are databases, messaging buses, queuing systems, API gateways, caching systems, storage, testing, security, and many other services available. These platform services are very robust and can scale, plus they are built on a time-proven foundation so you don’t have to build from scratch and learn as you go.

The takeaway here is don’t rebuild what’s already available as a
service but do expose your business domain as microservices that
others within the organization can consume as a service.

  1. https://www.linuxfoundation.org/blog/blog/a-summary-of-census-ii-open-source-software-application-libraries-the-world-depends-on ↩︎

Leave a comment