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