code.talks 2015 - Microservices und die Jagd nach mehr Konversion

66

Transcript of code.talks 2015 - Microservices und die Jagd nach mehr Konversion

Page 1: code.talks 2015 - Microservices und die Jagd nach mehr Konversion
Page 2: code.talks 2015 - Microservices und die Jagd nach mehr Konversion

MicroservicesunddieJagdnachmehrKonversionBerndZuther-ITConsultantBigDatacodecentricAG

Page 3: code.talks 2015 - Microservices und die Jagd nach mehr Konversion
Page 4: code.talks 2015 - Microservices und die Jagd nach mehr Konversion
Page 5: code.talks 2015 - Microservices und die Jagd nach mehr Konversion
Page 6: code.talks 2015 - Microservices und die Jagd nach mehr Konversion
Page 7: code.talks 2015 - Microservices und die Jagd nach mehr Konversion
Page 8: code.talks 2015 - Microservices und die Jagd nach mehr Konversion
Page 9: code.talks 2015 - Microservices und die Jagd nach mehr Konversion
Page 10: code.talks 2015 - Microservices und die Jagd nach mehr Konversion

Conversion

Conversion Rate =Number of Goals achieved

Visits

actofconvertingsitevisitorsintopayingcustomers

proportionofvisitstoawebsitewhichtakeactiontogobeyondawebsitevisit

·

·

10/61

Page 11: code.talks 2015 - Microservices und die Jagd nach mehr Konversion

FeatureTogglepublicclassTopSellerRecommendationPanelextendsAbstractShopBasePanel{

@SpringBeanprivateFeatureToogleBeanfeatureToogleBean;

...

@OverrideprotectedvoidonConfigure(){super.onConfigure();setVisible(featureToogleBean.isTopSellerFeatureEnabled());}

...

}

JAVA

Page 12: code.talks 2015 - Microservices und die Jagd nach mehr Konversion
Page 13: code.talks 2015 - Microservices und die Jagd nach mehr Konversion
Page 14: code.talks 2015 - Microservices und die Jagd nach mehr Konversion
Page 15: code.talks 2015 - Microservices und die Jagd nach mehr Konversion

Disadvantagesthatwehadwiththewaywedevelopsoftware

15/61

Page 16: code.talks 2015 - Microservices und die Jagd nach mehr Konversion

DisadvantagesthatwehadwiththewaywedevelopsoftwareDevelopment:·

Longfeaturedevelopmentcycles

Longfeedbacktimes

Longbuildtime

Strangebehaviorafterchanges

Applicationscalability

-

-

-

-

-

15/61

Page 17: code.talks 2015 - Microservices und die Jagd nach mehr Konversion

DisadvantagesthatwehadwiththewaywedevelopsoftwareDevelopment:

ProductManagement:

·

Longfeaturedevelopmentcycles

Longfeedbacktimes

Longbuildtime

Strangebehaviorafterchanges

Applicationscalability

-

-

-

-

-

·

Longtimetomarket

A/Btestingdifficulttoachieve

Scalabilityofworkload

-

-

-

15/61

Page 18: code.talks 2015 - Microservices und die Jagd nach mehr Konversion
Page 19: code.talks 2015 - Microservices und die Jagd nach mehr Konversion

Data

Functionality

Microservice

17/61

Page 20: code.talks 2015 - Microservices und die Jagd nach mehr Konversion

Data

Functionality

Microservice

fitsinonebrain,·

17/61

Page 21: code.talks 2015 - Microservices und die Jagd nach mehr Konversion

Data

Functionality

Microservice

fitsinonebrain,

designedforreplaceability,

·

·

17/61

Page 22: code.talks 2015 - Microservices und die Jagd nach mehr Konversion

Data

Functionality

Microservice

fitsinonebrain,

designedforreplaceability,

autonomy(organisation&technology)

·

·

·

17/61

Page 23: code.talks 2015 - Microservices und die Jagd nach mehr Konversion

MicroserviceTaxonomy

Microservice

ApplicationFrontend

ServiceService

RepositoryService

Discovery

Contract Implementation Interface

BusinessLogic

Data

Monitoring/Logging

18/61

Page 24: code.talks 2015 - Microservices und die Jagd nach mehr Konversion

OnlineShop-UsecasesOnline Shop

order products

Buyer

view catalog

<include>

create cart

<include>

19/61

Page 25: code.talks 2015 - Microservices und die Jagd nach mehr Konversion

OnlineShop-Migration

<<device>>Microservice Server

<<web server>>Ngnix

<<service>>Cart Service

<<service>>Product Service

<<device>>Monolith Server

<<application server>>Tomcat

<<artifact>>shop.war

<<artifact>>Catalog View

<<artifact>>cart-service.jar

<<artifact>>product-

service.jar

Cart Catalog

Product

20/61

Page 26: code.talks 2015 - Microservices und die Jagd nach mehr Konversion
Page 27: code.talks 2015 - Microservices und die Jagd nach mehr Konversion
Page 28: code.talks 2015 - Microservices und die Jagd nach mehr Konversion
Page 29: code.talks 2015 - Microservices und die Jagd nach mehr Konversion
Page 30: code.talks 2015 - Microservices und die Jagd nach mehr Konversion

Microservice-Communication

Micro-service

Micro-service

Links

REST/

AMQP

DataReplication

25/61

Page 31: code.talks 2015 - Microservices und die Jagd nach mehr Konversion
Page 32: code.talks 2015 - Microservices und die Jagd nach mehr Konversion
Page 33: code.talks 2015 - Microservices und die Jagd nach mehr Konversion

Postel’sLaw{firstname:"Bernd",lastname:"Zuther",street:"Elsenheimerstraße55a",city:"München",zip:80687}

JAVASCRIPT

28/61

Page 34: code.talks 2015 - Microservices und die Jagd nach mehr Konversion

Postel’sLaw{firstname:"Bernd",lastname:"Zuther",birthday:"1983/08/15",street:"Elsenheimerstraße55a",city:"München",zip:80687}

JAVASCRIPT

29/61

Page 35: code.talks 2015 - Microservices und die Jagd nach mehr Konversion
Page 36: code.talks 2015 - Microservices und die Jagd nach mehr Konversion

Postel’sLaw{firstname:"Bernd",lastname:"Zuther",birthday:"1983/08/15",addresses:[{street:"Elsenheimerstraße55a",city:"München",zip:80687,type:"WORK"}]}

JAVASCRIPT

31/61

Page 37: code.talks 2015 - Microservices und die Jagd nach mehr Konversion
Page 38: code.talks 2015 - Microservices und die Jagd nach mehr Konversion

Postel’sLaw{firstname:"Bernd",lastname:"Zuther",birthday:"1983/08/15",street:"Elsenheimerstraße55a",city:"München",zip:80687,addresses:[{street:"Elsenheimerstraße55a",city:"München",zip:80687,type:"WORK"}]}

JAVASCRIPT

33/61

Page 39: code.talks 2015 - Microservices und die Jagd nach mehr Konversion
Page 40: code.talks 2015 - Microservices und die Jagd nach mehr Konversion

AlternativesURL:

Customrequestheader:

Acceptheader:

·

simplywhacktheAPIversionintotheURL,e.g.https://shop/api/v2/cart/all-

·

sameURLasbeforebutaddaheader“api-version:2”-

·

modifyacceptheadertospecifytheversion,e.g.“Accept:application/vnd.cart.v2+json”

-

35/61

Page 41: code.talks 2015 - Microservices und die Jagd nach mehr Konversion
Page 42: code.talks 2015 - Microservices und die Jagd nach mehr Konversion
Page 43: code.talks 2015 - Microservices und die Jagd nach mehr Konversion
Page 44: code.talks 2015 - Microservices und die Jagd nach mehr Konversion

MultiDeploymentPipeline

Build Test Publish

UI-Test

Build Test Publish

Deploy

Load-Test

Catalog View

Productservice

39/61

Page 45: code.talks 2015 - Microservices und die Jagd nach mehr Konversion
Page 46: code.talks 2015 - Microservices und die Jagd nach mehr Konversion
Page 47: code.talks 2015 - Microservices und die Jagd nach mehr Konversion
Page 48: code.talks 2015 - Microservices und die Jagd nach mehr Konversion

Docker

Page 49: code.talks 2015 - Microservices und die Jagd nach mehr Konversion

Docker-Work owbz@cc$dockerbuild-tzutherb/product-service.bz@cc$dockerpushzutherb/product-servicebz@cc$dockerpullzutherb/product-servicebz@cc$dockerrunzutherb/product-servicebz@cc$dockerpsCONTAINERIDIMAGECOMMANDCREATED87bb5524067dzutherb/product-service:latest"/product-0.6/bin/pr14seconds

BASH

Page 50: code.talks 2015 - Microservices und die Jagd nach mehr Konversion

CanaryRelease

Old Version

WebServer

ApplicationServer

DatabaseServer

New Version

WebServer

ApplicationServer

DatabaseServer

RouterUsers

95%

5%

45/61

Page 51: code.talks 2015 - Microservices und die Jagd nach mehr Konversion

DistributedSystem

ResourceAllocator

Executor Executor Executor

Scheduler

Docker Repository

Page 52: code.talks 2015 - Microservices und die Jagd nach mehr Konversion

Mesos

MesosMaster

MesosSlave

MesosSlave

MesosSlave

Marathon

Docker Repository

Scheduler

ResourceAllocator

Executor

Standby MesosMaster

Standby MesosMaster

Zookeeper

47/61

Page 53: code.talks 2015 - Microservices und die Jagd nach mehr Konversion

Vamp(VeryAwesomeMicroservicesPlatform)

48/61

Page 54: code.talks 2015 - Microservices und die Jagd nach mehr Konversion
Page 55: code.talks 2015 - Microservices und die Jagd nach mehr Konversion

Log-Aggregator

Page 56: code.talks 2015 - Microservices und die Jagd nach mehr Konversion

CorrelationId

CheckoutOrderService

PaymentProvider

ERPSystem

SubmitOrder

requestPayment

Paymentconfirmation

requestshipping

HeaderX-Correlation-ID

51/61

Page 57: code.talks 2015 - Microservices und die Jagd nach mehr Konversion

MappedDiagnosticContextMDC.put("correlationId","A8FFA290");Loggerlogger=LoggerFactory.getLogger(SimpleMDC.class);logger.info("CreateOrder");

JAVA

<appendername="CONSOLE"class="ch.qos.logback.core.ConsoleAppender"><layout><Pattern>[%X{correlationId}]-%m%n</Pattern></layout></appender>

XML

52/61

Page 58: code.talks 2015 - Microservices und die Jagd nach mehr Konversion

Summary

Pro Needs

supportsA/Btesting monitoring

effectivetechnologies centralisedlogging

solutionorientation fullyautomateddeploymentpipeline

incrementalmigration clustermanagement

organisationmustbeready

Microservicesdonotguaranteemoreconversion!Youneedtorunexperimentswithyourcustomers!

Page 59: code.talks 2015 - Microservices und die Jagd nach mehr Konversion

<ThankYou!>

g+ plus.google.com/+BerndZuthertwitter @Bernd_Zwww bernd-zuther.degithub github.com/zutherb/

Page 60: code.talks 2015 - Microservices und die Jagd nach mehr Konversion
Page 61: code.talks 2015 - Microservices und die Jagd nach mehr Konversion
Page 63: code.talks 2015 - Microservices und die Jagd nach mehr Konversion

LinksPipe

ServiceOrientedArchitecture:WhatIsSOA?

TheTwelveFactors

ThreeGoldenRulesforContinuousDelivery

YourAPIversioningiswrong,whichiswhyIdecidedtodoit3differentwrongways

MicroservicesimZusammenspielmitContinuousDelivery,Teil1–dieTheorie

Fast,isolateddevelopmentenvironmentsusingDocker

MicroservicesversusOSGi:ÜberSinnundUnsinnder'neuenInkarnationdesWebservice

WarnungvordemMicroservice–VersucheinerDefinition

MicroServicesinderPraxis:NiewiederMonolithen!

NetflixNebula

·

·

·

·

·

·

·

·

·

·

·

58/61

Page 64: code.talks 2015 - Microservices und die Jagd nach mehr Konversion

LinksDeploymentganzeinfach–MicroserviceDeploymentmitHilfederLinuxPaketverwaltung

Splunk–MarkeEigenbaumitElasticsearch,LogstashundKibana(ELKStack)

ScalingDockerwithKubernetes

AppstashProject

·

·

·

·

59/61

Page 65: code.talks 2015 - Microservices und die Jagd nach mehr Konversion

ImagesDeliveryofsemlor

Freebooks

SOA

CubaCar

LandschaftsparkDuisburg-Nord

UnfallvonHerbertStenger

Lieferwagen

IndianapolisZoo

DeveloperAtWork

IcomIC735+Tuner

Justafaceinthecrowd

[119/366]ThumbsUp

Containers

·

·

·

·

·

·

·

·

·

·

·

·

·

60/61

Page 66: code.talks 2015 - Microservices und die Jagd nach mehr Konversion

ImagesKaufrausch

Caféconleche-Milchkaffee(CC)

CloningExperiments:JessPayne

hello,mynameisbobrossthebushy-hairedpainter.

BLMNevada

changemachine

s.Bär

There'salightattheendofthetunnel...

2012DCZeitgeistIII11787

RedRule

SchwarzwaldBlumenwiese

·

·

·

·

·

·

·

·

·

·

·

61/61