Minimum Viable Migrations
bene@theodo.co.uk
Ben Ellerby
@EllerbyBen
A Path to Cloud Modernization
Ben Ellerby
@EllerbyBen
serverless-transformation
Structure
🛹 What is Agile & MVP
👷♀️ Cloud Migration and Modernization
☁️ Modern Cloud: Serverless
🚀 Minimum Viable Migrations
📋 Structuring Progressive Migration
👨💻 Team Upskilling
@EllerbyBen
@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
TypeScript
Structural Migration (Microservices)
@EllerbyBen
Monolith
APP
Cloud Modernization
@EllerbyBen
Cloud
APP
Cloud Native
Serverless
@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 containers 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
Power and Flexibility to build...
@EllerbyBen
Serverless Microservices
@EllerbyBen
Microservices work well when:
@EllerbyBen
- Are split into clear Services
- Can be deployed independently
- Only communicate with each other asynchronously
- Master their own data
@EllerbyBen
Event-Driven Serverless
@EllerbyBen
Side Note: EventBridge Storming
https://medium.com/serverless-transformation/eventbridge-storming-how-to-build-state-of-the-art-event-driven-serverless-architectures-e07270d4dee
@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.
@EllerbyBen
EventBridge Storming
@EllerbyBen
Event Schema
- Teams should be able to work on and deploy Services independently.
- Teams need to agree on the structure of Events, their Schema.
- Title, structure and types.
- Teams should share Schema, not data and code.
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
Events are the contract
@EllerbyBen
- Event Schema of the new system is the contract between the system.
- Not a web of tightly coupled synchronous request response integrations.
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
@EllerbyBen
Team Upskilling
👨💻
Bring people along the journey
@EllerbyBen
- Leverage expert knowledge to map out initial architecture for a MVM (Minimal Viable Migration)
- Embed experts (internal, contractor, consultant, AWS SA…) in the team to build the initial MVP/MVM with your existing people.
- Provide the structure, time and resources for the team to develop an autonomous capability to deliver.
Providing a Structure:
Skills Matrix
@EllerbyBen
- List the knowledge areas highlighted for the MVM
Format this in a “Skills Matrix" - Review the individual and group scores on a weekly basis
- Pro Tip: Target pair programming from gaps in the skills matrix
Providing a Structure:
Skills Matrix
@EllerbyBen
Measure progress across sprints and MVMs
@EllerbyBen
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.
- Bring your people on the journey by empowering them with the tools, resources and learning paths
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
Minimum Viable Migrations (MVM), A Path to Cloud Modernization
By Ben Ellerby
Minimum Viable Migrations (MVM), A Path to Cloud Modernization
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)
- 881