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)
- 813