Getting Started with App Modernization

Okay, so we are ready to go the modernization route, but what’s the benefit in the end?  We’ll break that down based on the landing spot, but we often see some hybrid models where applications span two or more service models.  Your optimal path to the cloud will depend on your environment, assets, investments, and existing technical debt.  Generally speaking, abstraction and consumption costs go down as we move from the left to the right.  However, our degree of control of the environment also diminishes.

Cloud Service Models

Infrastructure as a Service (IaaS)

Benefits

  • Avoid capex and hardware support costs
  • Scalability, redundancy, HA configurable

Common Scenarios

  • 3rd Party Apps not suitable for containers
  • Apps with limited lifespan, thus no ROI to alter
  • Temporary landing spot to address hardware end of life
  • Applications that require control or interaction with the OS

Containers as a Service (CaaS)

Benefits

  • More easily scale horizontally and vertically when architected properly
  • Dynamic scaling up/down can improve consumption costs and performance

Common Scenarios

  • 3rd Party Apps or components with Kubernetes or Docker versions already available
  • Legacy code or components that can’t be deployed to PaaS
  • Move to PaaS or FaaS to involved/costly
Platform as a Service (PaaS)
Benefits
  • More focus on code and less on deployments
  • Very little concerns with scaling, cloud vendor handles it
  • Pay for consumption (cpu, memory, storage)

Common Scenarios

  • Apps with simple data access layer can generally be retrofitted to Cloud SQL (or similar PaaS DB)
  • Apps that need to manage session and/or state

Functions as a Service (FaaS)

Benefits

  • Only focus on code
  • Generally enforces a simple event & services based architecture, increasing supportability
  • Scalability is generally not a concern at all

Common Scenarios

  • Event based architectures are most common
  • Apps (or portions of apps) based on Microservices
  • Stateless services
  • Applications that require control or interaction with the OS