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