Minimum Viable Migrations

bene@theodo.co.uk
Ben Ellerby

@EllerbyBen

A Path to Cloud Modernization​

Ben Ellerby

@EllerbyBen

serverless-transformation

Structure

☁️ Modern Cloud: Serverless

🛹 What is Agile & MVP

👷‍♀️ Cloud Migration and Modernization

🚀 Minimum Viable Migrations

👨‍💻 Team Upskilling

@EllerbyBen

@EllerbyBen

Serverless

A New Cloud-Native

What is this Serverless thing?

  • Architectural movement
    • “allows you to build and run applications and services without thinking about servers” — AWS
    • Developers send application code which is run by the cloud provider in isolated way  abstracted from the developer.
    • Use 3rd party services used to manage backend logic and state (e.g. Firebase, Cognito)
  • A framework with the same name

 

@EllerbyBen

Why Serverless?

💰 Cost reduction

👷‍♀️ #NoOps... well LessOps

💻 Developers focus on delivering                   business value

📈 More scalable

🌳 Greener

@EllerbyBen

Not just Lambda (FaaS)

Lambda

S3

Dynamo

API Gateway

Compute

Storage

Data

API Proxy

Cognito

Auth

SQS

Queue

Step Functions

Workflows

EventBridge

Bus

Runtimes

@EllerbyBen

@EllerbyBen

3.9 -> 2.7

A Simple Function

@EllerbyBen

def handler_name(event, context): 
    ...
    return some_value

Event:  The event body

dict, list, str, int, float, or NoneType

 

Context:  Meta Data

dict

 

 

Lambda Triggers

@EllerbyBen

Serverless Microservices

@EllerbyBen

@EllerbyBen

Event-Driven Serverless

@EllerbyBen

Agile & MVP

🛹

@EllerbyBen

Agile & MVP

What is Agile

In software development, agile practices approach discovering requirements and developing solutions through the collaborative effort of self-organizing and cross-functional teams and their customer(s)/end user(s).

What is Agile

In software development, agile practices approach discovering requirements and developing solutions through the collaborative effort of self-organizing and cross-functional teams and their customer(s)/end user(s).

@EllerbyBen

Does this look like the migration project's you've seen?

  • discovering requirements collaborative effort
  • cross-functional teams
  • customer(s)/end user(s)

@EllerbyBen

What is an MVP?

A minimum viable product (MVP) is a version of a product with just enough features to be usable by early customers who can then provide feedback for future product development.

Learning

@EllerbyBen

BUILD

MEASURE

LEARN

Purpose of MVP

@EllerbyBen

  • Test hypotheses early
  • Learn faster
  • Reduce waste
  • Ship to customers quicker
  • Validate assumptions
  • (and other more brand related advantages)

@EllerbyBen

Cloud Migration

&

Modernization

👷‍♀️

Cloud Migration

The process of moving digital business assets and operations to a cloud provider / to another cloud provider

@EllerbyBen

Application Migration

The process of moving an application to a different environment

@EllerbyBen

Migration Cloud

  • Rehost - "lift-and-shift"
  • Refactor - Reuse existing code, but ontop of more abstracted infrastructure
  • Rebuild - Re-architecting/writing the application.
  • Replace - discard and "buy-not-build" via a SaaS application

@EllerbyBen

Domain Shift

@EllerbyBen

A

B

APP

APP

Traditional Migration Structure

@EllerbyBen

On-Prem

APP

APP

Cloud

Language / Framework Migration

@EllerbyBen

.NET

APP

APP

Python

Structural Migration (Microservices)

@EllerbyBen

Monolith

APP

Cloud Modernization

@EllerbyBen

Cloud

APP

Cloud Native

Serverless

@EllerbyBen

Minimum Viable Migrations

Waterfall: As-Is To-Be

@EllerbyBen

As-Is

To-Be

APP

APP

Waterfall: As-Is To-Be

@EllerbyBen

As-Is

To-Be

APP

APP

Requirements

Design

Implementation

Verification

Deadlock of "Feature Parity"

@EllerbyBen

As-Is

To-Be

APP

APP

SSO 1 0
CRM Integration 1 0
Email Sending 1 0
Core Feature X 1 1
Legacy Feature Y 1 0
... 1 0

Deadlock of Parity

@EllerbyBen

As-Is

To-Be

APP

APP

SSO 1 1
CRM Integration 1 1
Email Sending 1 1
Core Feature X 1 1
Legacy Feature Y 1 1
... 1 1

How to achieve odd parity 

@EllerbyBen

As-Is

To-Be

APP

APP

SSO 1 1
CRM Integration 1 1
Email Sending 1 1
Core Feature X 1 1
Legacy Feature Y 1 0
... 1 1
Least significant "bit"/feature

How to achieve odd parity 

@EllerbyBen

How do we release a version of the system without a low priority feature

  • Run an opt-in beta program?
  • Remove high cost - low reward features?
  • Move users who don't need the feature

How to achieve odd parity 

@EllerbyBen

How do we release a version of the system without a required high priority feature?

  • We need a strategy to run 2+ systems in parallel with a clean interface/contract that does not negatively impact the design of the new system with the constraints of the old.
  • An exit strategy from the old system to eliminate the complexity and risk of running parallel systems

Minimum Viable Migrations (MVM)

@EllerbyBen

 

 

A Minimum Viable Migration (MVM) is a usable migrated version of an application from one domain/paradigm to another with a subset features to be used by some or all customers

Minimum Viable Migrations (MVM)

@EllerbyBen

 

Why?

  • Learn faster
  • Test assumptions earlier
  • Focus the team and create a culture of continuous deployment
  • Deliver value to customers faster

Features: As-Is To-Be

@EllerbyBen

As-Is

To-Be

APP

APP

Waterfall: As-Is To-Be

@EllerbyBen

As-Is

To-Be

APP

APP

Model the new system in terms of Events

@EllerbyBen

  • Event-Driven architectures are becoming the default for modern Cloud-Native Applications.
  • We need to design the architecture of the system "to-be" in terms of events.

Let's rethink...

@EllerbyBen

As-Is

To-Be

APP

APP

MVMs: Progressive Migrations

@EllerbyBen

As-Is

To-Be

MVM

MVM

MVM

MVM

MVMs: Progressive Migrations

@EllerbyBen

To-Be

MVMs: Progressive Migrations

@EllerbyBen

As-Is

To-Be

MVMs: Progressive Migrations

@EllerbyBen

Requirements:

  • Defined list of events and schema from the business domain.
  • Event Bus in the new system
  • Ability to emit events from the old system
  • Ability to react to events from the new system

MVMs: Progressive Migrations

@EllerbyBen

  • Advantages
    • Go live faster
    • Iteratively build up feature parity
    • Learn faster
    • Test Assumptions faster
    • The "new system team", who may not be experts in the prior tech can work independently, with other teams doing the integration work to emit events from the Legacy

MVMs: Progressive Migrations

@EllerbyBen

  • Challenges
    • Managing data duplication
    • GDPR
    • Networking between systems (on-prem <> Cloud Hybrid?)
    • Finding event trigger mechanisms in the old system

Conclusion

@EllerbyBen

  • MVMs allow you to release, test assumptions, learn and deliver value faster
  • MVMs are iterative stepping stones to the to-be "final system"
  • An Event-Driven architecture allows a clean bi-directional interface between systems.

Spoiler Alert:
There is no final "to-be" for any system

@EllerbyBen

MVM

MVM

MVM

MVM

MVM

You keep iterating on your MVM

@EllerbyBen

serverless-transformation

www.aleios.com

Minimum Viable Migrations (MVM), A Path to Cloud Modernization (Python Web Conf)

By Ben Ellerby

Minimum Viable Migrations (MVM), A Path to Cloud Modernization (Python Web Conf)

Most tech teams will take an Agile approach to launching new products and services. Starting with a Minimal Viable Product (MVP), and releasing iteratively  — gathering feedback, testing assumptions and delivering value to customers more rapidly. For migration projects though, this often goes out the window. With teams looking for a “big bang” release once the new system reaches feature parity (an equivalent set of features and functionaries) with the existing system. Instead, a focus on Minimum Viable Migrations (MVMs) allows assumptions to be tested faster, teams to be focused and value to be delivered to customers more rapidly. (Talk given at CloudNative Exchange Conference)

  • 507