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

Made with Slides.com