Application Containerization over Cloud

Application Containerization over Cloud

In Service Oriented Architecture (SOA) microservices are the main design pattern and microservices usually built up on containers. 

Container Pros/Cons in a Nutshell

Pros

  • Package once, deploy everywhere with less risk
  • Greater control over the technology stack
  • Aligns well with Infrastructure-as-Code principles
  • Dev/Prod parity from desktop to production environments
  • Portability (if you actually need it)
  • Large community support including public Docker images to build from
  • Supports high scalability workloads
  • Improved application/process isolation
  • Enhanced upgrade velocity if managed appropriately

Cons

  • Generally more expensive than serverless/PaaS service offerings
  • Introduces multi-layer security considerations and risks
  • Can be complex to manage, especially Kubernetes deployments
  • Places additional OS and networking responsibility on application teams
  • Additional virtualization layer that introduces other overhead
  • More challenging data persistence
  • More difficult to monitor and debug
  • Additional skillset required for developers

Industry Perspective

  • “By 2023, more than 70% of global organizations will be running more than two containerized applications in production, up from less than 20% in 2019.” -Gartner
  • “Containers have become popular because they provide a powerful tool for addressing several critical concerns of application developers, including the need for faster delivery, agility, portability, modernization and life cycle management.” -Gartner
  • “Although there is growing interest and rapid adoption of containers, running them in production requires a steep learning curve due to technology immaturity and lack of operational know-how…”  -Gartner
  • “Containers present the potential for sprawl even more severe than many virtual machine deployments caused. This complexity is often intensified by many layers of services and tooling.”  -Gartner
  • “There is a prevalent view of Docker and Linux containers in general as being “lightweight virtualization,” but we would not recommend using Docker as a secure process-isolation mechanism” –Thoughtworks

Container Architecture Guiding Principles

  • Design and build for cloud native instead of lift and shift
  • Prefer serverless architecture over infrastructure
  • Business-focused deployment model, not operational
  • Deploy containers where value and technical requirements exist
  • Enable hybrid connectivity instead of requiring containers on VMs
  • Don’t deploy everything in containers; move up the stack where possible

Workload Placement

Good Candidates

  • Multi-Platform Solutions (Portability)
  • Workloads with OS-level dependencies
  • Command Line Applications
  • Purchased/Vendor Solutions Designed for Containers
  • Custom Transient Compiler/Build Agents

Potential Candidates

  • Transient Stateless Workloads
  • Web Applications
  • Microservices
  • Batch/ETL Jobs
  • Development Technology Stacks
  • HTTP-based Services
  • Applications with Variable Usage Load/Frequency and/or Scaling Requirements

Questionable Candidates

  • Workloads with high performance/throughput and/or low latency requirements (e.g. databases)
  • Workloads with Persistent Storage Requirements(Not as limiting of a factor today)
  • Big Data Workloads
  • Native GUI applications
  • Workloads exposed via UDP/TCP
  • Legacy workloads (e.g. COBOL)
  • Workloads with privileged access requirements
  • “It makes development easier”
  • “Because everyone is using them”
  • “I just want to use containers”

When Should Applications be Containerized?

Leave a Reply

Your email address will not be published. Required fields are marked *

*

code