Skip to content

Journey to the Cloud

Introduction

Cloud is everywhere. Today, many companies want to migrate their applications on to cloud. For this migration to be done, the applications must be re-architected in a way that they fully utilize the advantages of the cloud.

Cloud computing has fundamentally changed how organizations build, deploy, and operate software. Rather than maintaining physical servers and infrastructure, businesses can now leverage on-demand computing resources that scale dynamically based on their needs.

What is Cloud Computing?

Cloud computing is the delivery of computing services—including servers, storage, databases, networking, software, and analytics—over the internet ("the cloud"). This model provides faster innovation, flexible resources, and economies of scale.

Key Characteristics

  • On-demand self-service - Provision resources automatically without human interaction
  • Broad network access - Services available over the network from any device
  • Resource pooling - Computing resources are pooled to serve multiple consumers
  • Rapid elasticity - Capabilities can be scaled up or down based on demand
  • Measured service - Resource usage is monitored and charged based on consumption

Cloud Service Models

There are three primary cloud service models, each offering different levels of control and responsibility:

Infrastructure as a Service (IaaS)

IaaS provides virtualized computing resources over the internet. Users manage operating systems, middleware, and applications while the provider manages the physical infrastructure.

Examples: IBM Cloud Virtual Servers, AWS EC2, Azure Virtual Machines

Use Cases:

  • Development and test environments
  • High-performance computing
  • Big data analysis
  • Website hosting

Platform as a Service (PaaS)

PaaS provides a platform for developing, running, and managing applications without the complexity of maintaining the underlying infrastructure.

Examples: IBM Cloud Foundry, Red Hat OpenShift, Heroku, Google App Engine

Use Cases:

  • Application development
  • API development and management
  • Business analytics
  • IoT applications

Software as a Service (SaaS)

SaaS delivers software applications over the internet on a subscription basis. The provider manages everything from infrastructure to application updates.

Examples: IBM Watson, Salesforce, Microsoft 365, Slack

Use Cases:

  • Email and collaboration
  • Customer relationship management
  • Enterprise resource planning
  • Human resources management

Cloud Deployment Models

Public Cloud

Resources are owned and operated by a third-party provider and shared across multiple organizations. This model offers cost efficiency and scalability.

Private Cloud

Cloud infrastructure is used exclusively by a single organization. This provides more control and security but requires more management.

Hybrid Cloud

Combines public and private clouds, allowing data and applications to move between them. This offers flexibility and more deployment options.

Multi-Cloud

Uses services from multiple cloud providers to avoid vendor lock-in and leverage best-of-breed services from each provider.

Why Migrate to the Cloud?

Organizations are moving to the cloud for several compelling reasons:

Cost Optimization

  • Reduce capital expenditure - No need to purchase and maintain hardware
  • Pay-as-you-go pricing - Only pay for what you use
  • Economies of scale - Benefit from the provider's large-scale infrastructure

Agility and Speed

  • Rapid provisioning - Deploy new resources in minutes, not months
  • Global reach - Deploy applications worldwide quickly
  • Faster time to market - Focus on development rather than infrastructure

Scalability

  • Elastic resources - Scale up or down based on demand
  • Handle traffic spikes - Automatically accommodate increased load
  • Global distribution - Serve users from locations closest to them

Reliability

  • Built-in redundancy - Data replicated across multiple locations
  • Disaster recovery - Quick recovery from failures
  • High availability - SLAs guaranteeing uptime

Innovation

  • Access to latest technology - AI, ML, IoT, and analytics services
  • Experimentation - Low-cost environment for trying new ideas
  • Continuous updates - Automatic access to new features

Cloud Migration Strategies

When migrating applications to the cloud, organizations typically follow one of these strategies (the "6 R's"):

Strategy Description When to Use
Rehost "Lift and shift" - Move as-is to the cloud Quick migration, minimal changes
Replatform Make minimal optimizations Leverage some cloud benefits
Repurchase Move to a SaaS solution Replace with commercial product
Refactor Re-architect for cloud-native Maximize cloud benefits
Retain Keep on-premises Compliance or technical constraints
Retire Decommission the application No longer needed

Cloud-Native Applications

Cloud-native is an approach to building and running applications that fully exploit the advantages of the cloud computing model. Cloud-native applications are designed from the ground up for the cloud.

Characteristics of Cloud-Native Applications

  • Microservices architecture - Loosely coupled, independently deployable services
  • Containerized - Packaged with dependencies for consistent deployment
  • Dynamically orchestrated - Managed by platforms like Kubernetes
  • DevOps practices - Continuous integration and delivery
  • API-driven - Services communicate through well-defined APIs

The Twelve-Factor App

The Twelve-Factor App methodology provides best practices for building cloud-native applications:

  1. Codebase - One codebase tracked in version control
  2. Dependencies - Explicitly declare and isolate dependencies
  3. Config - Store configuration in the environment
  4. Backing services - Treat backing services as attached resources
  5. Build, release, run - Strictly separate build and run stages
  6. Processes - Execute the app as stateless processes
  7. Port binding - Export services via port binding
  8. Concurrency - Scale out via the process model
  9. Disposability - Maximize robustness with fast startup and graceful shutdown
  10. Dev/prod parity - Keep development and production as similar as possible
  11. Logs - Treat logs as event streams
  12. Admin processes - Run admin tasks as one-off processes

Getting Started

This bootcamp will guide you through the key technologies and practices for cloud-native development:

  1. Containers - Package applications with their dependencies
  2. Kubernetes/OpenShift - Orchestrate containerized applications
  3. DevOps - Automate the software delivery pipeline

By the end of this bootcamp, you will have hands-on experience building and deploying cloud-native applications on Kubernetes and OpenShift.