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

Made with Slides.com