The Technical Journey to Microservices - the New World

Post on 16-Apr-2017

787 views 2 download

Transcript of The Technical Journey to Microservices - the New World

The Technical Journey to Microservices

@russmiles

Biker me… TBD

Reactive…

Say “Microservices” one more time…

TBD

A Definition…

The kingdom of heaven is like a mustard seed, which a man took and planted in his field. Though it is the

smallest of all seeds, yet when it grows, it is the largest of garden plants and becomes a tree, so that the birds come and perch in its branches (Matthew 13:31-32).

- Of Mustard Seeds and Microservices (Micah Blalock) -- https://www.credera.com/blog/technology-

insights/java/mustard-seeds-microservices/

“Loosely coupled service oriented architecture with bounded contexts”

Loosely Coupled Services that can change

A Story

“The Elephant in the Standup”

The term is WRONG

Size doesn’t matter

SLOC doesn’t matter

Cognitive Overhead DOES

What can your System DO?

Single Biggest Limiting Factor on Change?

You.

Comprehension

Not the things…

… the things that happen

Systemic Properties

Not what you have

What you can do

with it

The Big Challenge

Some value Stability

Some value Speed

Some value Agility

Some value Adaptability

Some value Volatility

Some value Antifragility

Microservices (can) =Speed

AdaptabilityAntifragility

How?

How?

Life Preservation

Events.

How?

How?

VolumeVarietyVelocity

VolumeVarietyVelocityVeracity

Aggregates

Views

Downside?

One more story…

Build an app…

The Todo list, for a Todo App

“Create a beautiful looking app & web ui for interacting with

todo lists”

“Write a back-end service that stores todo lists so that they can be made available across devices and the web.”

“Write your todo-list tests to ensure things

function as you expect"

But…

According to slide-theorists…

But that’s waaaay too easy…

40 slides in 2 minutes…

Ready…?

Set up source code control and an issue

tracker

Manage user accounts, sign-up, sign-in, and

password management

Collect analytics from your app and web ui about how people use

your app

Build and test your app across multiple devices

and OS versions

Gather information on app crashes and bugs and feed this back into

an issue backlog

Test your web ui across multiple browsers and

versions

Document the API that the native apps and web

app depend on

Push client-side assets to CDNs and keep them up

to date

Version your API so that you can evolve client apps and the backing service independently

Implement rate limiting for requests

Set up a CI service that monitors your repository for changes builds and

tests your software

Set up a CD service that deploys new version of your software to your chosen deployment

platform

Set up networking rules so that the components of your backend can see

each other and are protected from other

traffic

Enable the components of your backend service

(e.g. the API implementation and

database) to find each other

Ensure the service can survive failure of an AZ

Monitor request latency

Create new instances if existing ones fail, and

transparently reconnect service components

Provide mechanisms to scale up and down

service capacity

Trace requests all the way through the system

Provide audit logs of all changes made to

production systems

Set up an alerting mechanism for problems

in production

Put in place a DR solution and test it

Back up and recovery processes for data

Create operational play books and test your plays

Put in place automated failure testing (e.g. simians)

Ensure service has no security weaknesses

(e.g. XSS)

Monitor CVE reports for all components in your stack and replace as

soon as a vulnerability is found

Devise deployment schemes for e.g. blue/

green, phased rollout, and rollback

Collect logs from all components for analysis

Enable marketing to run A/B and feature tests

Monitor and visualise all of the above and ensure that things continue to

flow smoothly through the pipeline

Package all of your application components in a form suitable for

deployment

Manage stand up and tear down of dev and test

environments

…breathe…

And that’s before we get to…

Service Configuration

Service Discovery

Bulkheads

Circuit Breakers

Event Stores

Messaging

CQRS

Language Selection

APIs

API Gateways

Lakes

Routing

Security

BREATHE!!!

And this is JUST the Technical Journey!

WT*?!

The real problem?

The general problem…

d

do

bdo

S

Complexity of

Microservices

We can do better

We can do much better

We have done this before…

Simplify Enterprise Java

Simplify Microservices

What can you do?

www.leanpub.com/antifragilesoftware

Get Involved!

Thanks for your time!

@russmiles

russmiles.com