The software architectures are changing. In order to gain validated learning and reduce risk and uncertainty while developing new products one has to bring each increment into production. Only information gathered from behaviour of real users with each increment ensures that you build the right thing in the end. In this session you'll learn how you can stop building monolithic systems and start designing software based on microservices - each having its own lifecycle and being an independent deployment unit. You'll get a pretty good feeling about how to manage such distributed applications in production successfully as well. We'll use an online shop application based on microservices to discuss topics like deployment and operational questions like monitoring and logging.
6. Conversion
Conversion Rate =
Number of Goals achieved
Visits
act of converting site visitors into paying customers
proportion of visits to a website which take action to go beyond a
website visit
·
·
6/59
10. White Label-Shop
Company BCompany A
give subset of
products
Landing Page BOnline Shop A
Logistics A
create order
ship order
publish products
10/59
11.
12.
13. Disadvantages of a Monolith
Development:
Product Management:
·
Reduction of development speed
Increase of turnaround times
Increase of build time
Strange behavior after changes
Application Scalability
-
-
-
-
-
·
Increase of time to market
A/B testing of process changes nearly impossible
Scalability of Workload
-
-
-
13/59
18. Differences to SOA
Lightweight infrastructure and protocols (e.g. REST)
Greater flexibility of architecture (e.g. can contain GUI)
Managed as products, with their own lifecycle and delivery
Deployed as processes (Unix packages or Container)
·
·
·
·
18/59
19. Online Shop - Use cases
Online Shop
order products
Buyer
view catalog
<include>
create cart
<include>
19/59
20. Online Shop - 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/59
21.
22.
23.
24. Challenges of Microservices
Require integration.
Require a multi deployment pipeline.
Require automation of deployment and configuration.
Require logging and monitoring.
·
·
·
·
24/59
25. Leavitt - Communication Structure
Type Star Chain Circle Complete Structure
centralization high medium low very low
communication low medium much very much
controllability much medium low very low
25/59
26. Leavitt in Action
<<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
26/59
36. Alternatives
URL:
Custom request header:
Accept header:
·
simply whack the API version into the URL, e.g. https://shop
/api/v2/cart/all
-
·
same URL as before but add a header “api-version: 2”-
·
modify accept header to specify the version, e.g. “Accept:
application/vnd.cart.v2+json”
-
36/59
53. Summary
Pro Needs
better A/B testing monitoring
effective technologies centralised logging
solution orientation
fully automated deployment
pipeline
incremental migration cluster management
Microservices do not guarantee more conversion!
You need to run experiments with your customers!