Slide 1

Slide 1 text

© Copyright 2018 Pivotal Software, Inc. All rights Reserved. Version 1.0 Andreas Evers (@andreasevers) Senior Solutions Architect [email protected] Transforming monoliths and the way we build software

Slide 2

Slide 2 text

Cover w/ Image Who’s this guy? ■ Andreas Evers - Senior Solutions Architect at Pivotal ■ Active in Application Transformation (AppTx) EMEA ■ Used to work at TVH for Ordina ■ Since then active for Renault, Rabobank, ...

Slide 3

Slide 3 text

No content

Slide 4

Slide 4 text

vSphere Openstack AWS Google Cloud Azure & Azure Stack Shared Services Shared Security Shared Networking Logging & Metrics / Services Brokers / API Management Credhub / UAA / Single Sign On VMware NSX Embedded Operating System (Windows / Linux) Application Code & Frameworks Buildpacks / Spring Boot / Spring Cloud / Steeltoe PAS Pivotal Application Service PKS Pivotal Container Service PFS Pivotal Function Service Pivotal Services Marketplace Pivotal and Partner Products Any App Every Cloud One Platform Concourse PCF 2.0 — for everything that matters

Slide 5

Slide 5 text

Working Code Slices Practices OKRs Event Storming Slice Analysis Boris Snap/SnapE Implementation Patterns rinse & repeat Value Stream

Slide 6

Slide 6 text

OKRs Snap/SnapE Implementation Patterns rinse & repeat Working Code Slices Practices Event Storming Slice Analysis Boris Value Stream

Slide 7

Slide 7 text

Snap/SnapE Implementation Patterns rinse & repeat OKRs Working Code Slices Practices Event Storming Slice Analysis Boris Value Stream

Slide 8

Slide 8 text

OKRs Objectives Key Results Key Result ABC Key Result GHI

Slide 9

Slide 9 text

OKRs Could Measure Should Measure Objectives Key Results brainstorm decide order brainstorm group define Objective Objective Objective

Slide 10

Slide 10 text

Cultural Transformation ● 1 Week iterations with short feedback cycles ● > 50% Of time spent on pairing or mobbing ● 70% Less time spent on estimations & plannings Decrease Time to Market Cloud-Native Transformation ● 75% Decrease in lead time for simple code change ● 100% Autonomous team, 0 handoffs to get to prod ● < 3 Manual steps in the CI/CD pipeline ● > 25 Transformation recipes in a central cookbook ● 3 Monoliths modularized and running on PCF ● > 15 Spring boot or Spring Cloud templates ● < 0.01% Downtime due to failures or restarts ● 60% Decrease in MTTP for detected CVEs ● 40% Decrease in support incidents Better Stability & Security OKRs

Slide 11

Slide 11 text

Snap/SnapE Implementation Patterns rinse & repeat OKRs Working Code Slices Practices Event Storming Slice Analysis Boris Value Stream

Slide 12

Slide 12 text

Snap/SnapE Implementation Patterns rinse & repeat OKRs Working Code Slices Practices Event Storming Slice Analysis Boris Value Stream

Slide 13

Slide 13 text

Map the As-Is Process

Slide 14

Slide 14 text

Map the As-Is Process Wri h Fe t e 10 mi s P s Dev 20 mi s 1-4 da Tot e As-Is: 3-5 We k Po n h Fe t e IP 5-8 da 2-3 da

Slide 15

Slide 15 text

No content

Slide 16

Slide 16 text

Map the To-Be Process A. Create the To-Be Process using the same technique B. Write down the action items needed to make each change happen C. Review the progress against the flipcharts D. Host a quick retro and a quick celebration! E. Send out pictures of the flipcharts, whiteboards, and action items

Slide 17

Slide 17 text

No content

Slide 18

Slide 18 text

Snap/SnapE Implementation Patterns rinse & repeat OKRs Working Code Slices Practices Event Storming Slice Analysis Boris Value Stream

Slide 19

Slide 19 text

No content

Slide 20

Slide 20 text

This paper discusses modularization as a mechanism for improving the flexibility and comprehensibility of a system while allowing the shortening of its development time. The effectiveness of a “modularization” is dependent upon the criteria used in dividing the system into modules.

Slide 21

Slide 21 text

The major progress in the area of modular programming has been the development of coding techniques and assemblers which (1) allow one module to be written with little knowledge of the code used in another module and, (2) allow modules to be reassembled and replaced without reassembly of the whole system.

Slide 22

Slide 22 text

We have tried to demonstrate…it is almost always incorrect to begin the decomposition of a system into modules on the basis of a flowchart…instead that one begins with a list of difficult design decisions or design decisions which are likely to change. Each module is then designed to hide such a decision from the others. Since, in most cases, design decisions transcend time of execution, modules will not correspond to steps in the processing…we must abandon the assumption that a module is one or more subroutines, and instead allow subroutines and programs to be assembled collections of code from various modules.

Slide 23

Slide 23 text

The fundamental ways in which we design modules effectively has not changed in the last 50 years. MATT STINE

Slide 24

Slide 24 text

Snap/SnapE Implementation Patterns rinse & repeat OKRs Working Code Slices Practices Slice Analysis Boris Event Storming Value Stream

Slide 25

Slide 25 text

Simple Tools

Slide 26

Slide 26 text

Bounded Context Seats Payment Aggregate Aggregate Aggregate Domain Event Domain Event Domain Event Domain Event Domain Event Domain Event Domain Event Domain Event Domain Event ! Domain Event Relevant Business Event “Seat Chosen”, “Ticket Purchased” Aggregate Brains Accepts Actions / Generates “Events” Domain Event Domain Event Domain Event Domain Event Domain Event Domain Event Domain Event Domain Event Slice candidate Command Command ?

Slide 27

Slide 27 text

Why Event Storm Making Sense of a Huge Mess Reveal Bounded Contexts Explore Domains Identify Potential “Slices” Expose Core Domains Identify Potential Trouble Spots Enable Cross Perspective Conversation Identify Potential Starting Points

Slide 28

Slide 28 text

No content

Slide 29

Slide 29 text

Bounded Contexts Boundaries, inside of which a Ubiquitous Language can be used freely without ambiguity. Microservices Independently deployable units focused around a specific business capability. Aggregates Aggregates are a logical boundary for things that can change in a business transaction of a given context. Tactical Domain Driven Design Technical Design Strategic Domain Driven Design The Golden Rule 1 1 1 1

Slide 30

Slide 30 text

Tactical Domain Driven Design Technical Design Strategic Domain Driven Design The Golden Rule many 1 1 1 Bounded Contexts Boundaries, inside of which a Ubiquitous Language can be used freely without ambiguity. Microservices Independently deployable units focused around a specific business capability. Aggregates Aggregates are a logical boundary for things that can change in a business transaction of a given context.

Slide 31

Slide 31 text

Tactical Domain Driven Design Technical Design Strategic Domain Driven Design The Golden Rule many 1 many 1 Bounded Contexts Boundaries, inside of which a Ubiquitous Language can be used freely without ambiguity. Microservices Independently deployable units focused around a specific business capability. Aggregates Aggregates are a logical boundary for things that can change in a business transaction of a given context.

Slide 32

Slide 32 text

Bounded Contexts Microservices Aggregates The Golden Rule * .. 1 * .. 1

Slide 33

Slide 33 text

Snap/SnapE Implementation Patterns rinse & repeat OKRs Working Code Slices Practices Slice Analysis Boris Event Storming Value Stream

Slide 34

Slide 34 text

Snap/SnapE Implementation Patterns rinse & repeat OKRs Working Code Slices Practices Slice Analysis Event Storming Boris Value Stream

Slide 35

Slide 35 text

More Tools

Slide 36

Slide 36 text

Service Service based on Context Payment Service” Queue Message Queue “Seat Request” UI External Link to External System Service Service Service Service Service Service Ext Ext Q Q Q UI UI

Slide 37

Slide 37 text

No content

Slide 38

Slide 38 text

No content

Slide 39

Slide 39 text

Modular Monolith Microservices ■ High Cohesion ■ Low Coupling ■ Business Capability Focus ■ Bounded Contexts / Aggregates ■ Data Encapsulation ■ Substitutable ■ Composable ■ Individually Deployable ■ Individually Upgradeable ■ Individually Replaceable ■ Individually Scalable ■ Heterogeneous Tech Stacks

Slide 40

Slide 40 text

Snap/SnapE Implementation Patterns rinse & repeat OKRs Working Code Slices Practices Slice Analysis Event Storming Boris Value Stream

Slide 41

Slide 41 text

Snap/SnapE Implementation Patterns rinse & repeat OKRs Working Code Slices Practices Event Storming Slice Analysis Boris Value Stream

Slide 42

Slide 42 text

Map technology stack with C4 diagrams Explore the ideal end state Affinity Mapping, Dot Voting The Right Vertical Slice Big Picture Event Storming Process Modelling Identify & Prioritize Bottlenecks Progressively drill from abstract >> specific

Slide 43

Slide 43 text

Implementation Patterns rinse & repeat OKRs Snap/SnapE Working Code Slices Practices Event Storming Slice Analysis Boris Value Stream

Slide 44

Slide 44 text

SNAP

Slide 45

Slide 45 text

No content

Slide 46

Slide 46 text

No content

Slide 47

Slide 47 text

No content

Slide 48

Slide 48 text

No content

Slide 49

Slide 49 text

Think to the Future: Choose the Right Tool for the Job Container Orchestrator Container Scheduling Primitives for Network, Routing, Logs & Metrics CONTAINER Developer Provides Tool Provides Application Platform APPLICATION Container Orchestrator Serverless Functions FUNCTION Application Platform IaaS Container Image & build L7 Network & Routing Logs, Metrics, Monitoring Services Marketplace Team, Quotas & Usage Function scheduling Function exec services

Slide 50

Slide 50 text

SnapE API Data Source / Storage UI Risks Stories Rabbit MQ REST / JSON CICS GW Other Purchase History AdminUI Dependent On... GET /purchases GET /purchases GET /purchases

Slide 51

Slide 51 text

Implementation Patterns rinse & repeat OKRs Snap/SnapE Working Code Slices Practices Event Storming Slice Analysis Boris Value Stream

Slide 52

Slide 52 text

rinse & repeat OKRs Snap/SnapE Implementation Patterns Working Code Slices Practices Event Storming Slice Analysis Boris Value Stream

Slide 53

Slide 53 text

Class Decorators, AOP, AspectJ, Javaagents Feature Flags, Dynamic Routing, Dark Launching API Gateway, Edge Server, B4FF Inverse Conway Event Shunting ACL, Context Mapping, Strangler Bridge, Router, Proxy, Facade Eventual Consistency, Sagas, microservices instead of ESB

Slide 54

Slide 54 text

rinse & repeat OKRs Snap/SnapE Implementation Patterns Working Code Slices Practices Event Storming Slice Analysis Boris Value Stream

Slide 55

Slide 55 text

OKRs Snap/SnapE Implementation Patterns Working Code Slices Practices Event Storming Slice Analysis Boris Value Stream rinse & repeat

Slide 56

Slide 56 text

No content

Slide 57

Slide 57 text

Pair Programming

Slide 58

Slide 58 text

No content

Slide 59

Slide 59 text

No content

Slide 60

Slide 60 text

Mob Programming

Slide 61

Slide 61 text

No content

Slide 62

Slide 62 text

No content

Slide 63

Slide 63 text

Test Driven Development

Slide 64

Slide 64 text

No content

Slide 65

Slide 65 text

No content

Slide 66

Slide 66 text

No content

Slide 67

Slide 67 text

OKRs Snap/SnapE Implementation Patterns rinse & repeat Working Code Slices Practices Event Storming Slice Analysis Boris Value Stream

Slide 68

Slide 68 text

OKRs Snap/SnapE Implementation Patterns rinse & repeat Working Code Slices Practices Event Storming Slice Analysis Boris Value Stream

Slide 69

Slide 69 text

Transforming How The World Builds Software Andreas Evers (@andreasevers) Senior Solution Architect [email protected] https://evers.tech © Copyright 2018 Pivotal Software, Inc. All rights Reserved. Accreditation: Image created by Rawpixel.com - Freepik.com Seahorse by Les vieux garçons from the Noun Project Tool Case by icons producer is licensed under CC 3.0 Steel-bars-of-a-building-under-construction Designed by Freestockcenter