Diese Präsentation wurde erfolgreich gemeldet.
Wir verwenden Ihre LinkedIn Profilangaben und Informationen zu Ihren Aktivitäten, um Anzeigen zu personalisieren und Ihnen relevantere Inhalte anzuzeigen. Sie können Ihre Anzeigeneinstellungen jederzeit ändern.
Microservices and Conversion
Hunting
Howtobuildsoftwarearchitecturesforchangeableness
Bernd Zuther - IT Consultant Big Dat...
2/59
Conversion
Conversion Rate =
Number of Goals achieved
Visits
act of converting site visitors into paying customers
proport...
FeatureToggle
public class TopSellerRecommendationPanel extends AbstractShopBasePanel {
@SpringBean
private FeatureToogleB...
Continuous Improvement
Continuous
Improvement
(Agility)
Architecture
Continuous
Delivery
Big Data
Innovation
8/59
Architecture
Continuous
Improvement
(Agility)
Architecture
Continuous
Delivery
Big Data
Innovation
9/59
White Label-Shop
Company BCompany A
give subset of
products
Landing Page BOnline Shop A
Logistics A
create order
ship orde...
Disadvantages of a Monolith
Development:
Product Management:
·
Reduction of development speed
Increase of turnaround times...
Microservice
Data
Functionality
15/59
Microservice Architecture
Data
Functionality
Data
Functionality
Data
Functionality
Functionality
Data
Functionality
Data
1...
Microservice Taxonomy
Microservice
Application
Frontend
Service
Service
Repository
Service
Discovery
Contract Implementati...
Differences to SOA
Lightweight infrastructure and protocols (e.g. REST)
Greater flexibility of architecture (e.g. can conta...
Online Shop - Use cases
Online Shop
order products
Buyer
view catalog
<include>
create cart
<include>
19/59
Online Shop - Migration
<<device>>
Microservice Server
<<web server>>
Ngnix
<<service>>
Cart Service
<<service>>
Product
S...
Challenges of Microservices
Require integration.
Require a multi deployment pipeline.
Require automation of deployment and...
Leavitt - Communication Structure
Type Star Chain Circle Complete Structure
centralization high medium low very low
commun...
Leavitt in Action
<<device>>
Microservice Server
<<web server>>
Ngnix
<<service>>
Cart Service
<<service>>
Product
Service...
Postel’s Law
{
firstname: "Bernd",
lastname: "Zuther",
street: "Elsenheimerstraße 55a",
city: "München",
zip: 80687
}
JAVA...
Postel’s Law
{
firstname: "Bernd",
lastname: "Zuther",
birthday: "1983/08/15",
street: "Elsenheimerstraße 55a",
city: "Mün...
Postel’s Law
{
firstname: "Bernd",
lastname: "Zuther",
birthday: "1983/08/15",
addresses : [{
street: "Elsenheimerstraße 5...
Postel’s Law
{
firstname: "Bernd",
lastname: "Zuther",
birthday: "1983/08/15",
street: "Elsenheimerstraße 55a",
city: "Mün...
Alternatives
URL:
Custom request header:
Accept header:
·
simply whack the API version into the URL, e.g. https://shop
/ap...
Continuous Delivery
Continuous
Improvement
(Agility)
Architecture
Continuous
Delivery
Big Data
Innovation
37/59
Multi Deployment Pipeline
Build Test Publish
UI-Test
Build Test Publish
Deploy
Load-Test
Catalog View
Productservice
39/59
Deployment
@RestController
class CartController {
@Autowired
def CartRepository cartRepository;
@RequestMapping(value = "/...
Docker Environment
<<device>>
Docker Deamon
<<container>>
Ngnix
<<container>>
Cart Service
<<container>>
Product
Service
<...
Kubernetes - Cluster Management
45/59
Pod
kind: Pod
desiredState:
manifest:
containers:
- name: mongodb
image: dockerfile/mongodb
cpu: 100
memory: 50000000
port...
Replication Controller
kind: ReplicationController,
desiredState:
replicas: 4
podTemplate:
desiredState:
manifest:
contain...
Service
48/59
Big Data
Continuous
Improvement
(Agility)
Architecture
Continuous
Delivery
Big Data
Innovation
49/59
Summary
Pro Needs
better A/B testing monitoring
effective technologies centralised logging
solution orientation
fully autom...
<Thank You!>
g+ plus.google.com/+BerndZuther
twitter @Bernd_Z
www bernd-zuther.de
github github.com/zutherb/
Confess - Microservices and Conversion Hunting - Build architectures for changeableness
Confess - Microservices and Conversion Hunting - Build architectures for changeableness
Confess - Microservices and Conversion Hunting - Build architectures for changeableness
Confess - Microservices and Conversion Hunting - Build architectures for changeableness
Confess - Microservices and Conversion Hunting - Build architectures for changeableness
Confess - Microservices and Conversion Hunting - Build architectures for changeableness
Confess - Microservices and Conversion Hunting - Build architectures for changeableness
Confess - Microservices and Conversion Hunting - Build architectures for changeableness
Confess - Microservices and Conversion Hunting - Build architectures for changeableness
Confess - Microservices and Conversion Hunting - Build architectures for changeableness
Confess - Microservices and Conversion Hunting - Build architectures for changeableness
Confess - Microservices and Conversion Hunting - Build architectures for changeableness
Confess - Microservices and Conversion Hunting - Build architectures for changeableness
Confess - Microservices and Conversion Hunting - Build architectures for changeableness
Confess - Microservices and Conversion Hunting - Build architectures for changeableness
Confess - Microservices and Conversion Hunting - Build architectures for changeableness
Confess - Microservices and Conversion Hunting - Build architectures for changeableness
Confess - Microservices and Conversion Hunting - Build architectures for changeableness
Confess - Microservices and Conversion Hunting - Build architectures for changeableness
Confess - Microservices and Conversion Hunting - Build architectures for changeableness
Confess - Microservices and Conversion Hunting - Build architectures for changeableness
Confess - Microservices and Conversion Hunting - Build architectures for changeableness
Nächste SlideShare
Wird geladen in …5
×

Confess - Microservices and Conversion Hunting - Build architectures for changeableness

881 Aufrufe

Veröffentlicht am

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.

Veröffentlicht in: Internet
  • Als Erste(r) kommentieren

  • Gehören Sie zu den Ersten, denen das gefällt!

Confess - Microservices and Conversion Hunting - Build architectures for changeableness

  1. 1. Microservices and Conversion Hunting Howtobuildsoftwarearchitecturesforchangeableness Bernd Zuther - IT Consultant Big Data codecentric AG
  2. 2. 2/59
  3. 3. 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
  4. 4. FeatureToggle public class TopSellerRecommendationPanel extends AbstractShopBasePanel { @SpringBean private FeatureToogleBean featureToogleBean; ... @Override protected void onConfigure() { super.onConfigure(); setVisible(featureToogleBean.isTopSellerFeatureEnabled()); } ... } JAVA 7/59
  5. 5. Continuous Improvement Continuous Improvement (Agility) Architecture Continuous Delivery Big Data Innovation 8/59
  6. 6. Architecture Continuous Improvement (Agility) Architecture Continuous Delivery Big Data Innovation 9/59
  7. 7. 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
  8. 8. 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
  9. 9. Microservice Data Functionality 15/59
  10. 10. Microservice Architecture Data Functionality Data Functionality Data Functionality Functionality Data Functionality Data 16/59
  11. 11. Microservice Taxonomy Microservice Application Frontend Service Service Repository Service Discovery Contract Implementation Interface Business Logic Data 17/59
  12. 12. 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
  13. 13. Online Shop - Use cases Online Shop order products Buyer view catalog <include> create cart <include> 19/59
  14. 14. 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
  15. 15. Challenges of Microservices Require integration. Require a multi deployment pipeline. Require automation of deployment and configuration. Require logging and monitoring. · · · · 24/59
  16. 16. 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
  17. 17. 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
  18. 18. Postel’s Law { firstname: "Bernd", lastname: "Zuther", street: "Elsenheimerstraße 55a", city: "München", zip: 80687 } JAVASCRIPT 29/59
  19. 19. Postel’s Law { firstname: "Bernd", lastname: "Zuther", birthday: "1983/08/15", street: "Elsenheimerstraße 55a", city: "München", zip: 80687 } JAVASCRIPT 30/59
  20. 20. Postel’s Law { firstname: "Bernd", lastname: "Zuther", birthday: "1983/08/15", addresses : [{ street: "Elsenheimerstraße 55a", city: "München", zip: 80687, type: "WORK" }] } JAVASCRIPT 32/59
  21. 21. Postel’s Law { firstname: "Bernd", lastname: "Zuther", birthday: "1983/08/15", street: "Elsenheimerstraße 55a", city: "München", zip: 80687, addresses : [{ street: "Elsenheimerstraße 55a", city: "München", zip: 80687, type: "WORK" }] } JAVASCRIPT 34/59
  22. 22. 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
  23. 23. Continuous Delivery Continuous Improvement (Agility) Architecture Continuous Delivery Big Data Innovation 37/59
  24. 24. Multi Deployment Pipeline Build Test Publish UI-Test Build Test Publish Deploy Load-Test Catalog View Productservice 39/59
  25. 25. Deployment @RestController class CartController { @Autowired def CartRepository cartRepository; @RequestMapping(value = "/create", produces = MediaType.APPLICATION_JSON_VALUE, method = RequestMethod.PUT) @ResponseBody def UUID create(@RequestBody CartItem item) { cartRepository .create(item) } <<executable>> cart-service.jar build Configuration CART_SERVICE_PROFILES=production CART_SERVICE_PORT=18100 CART_SERVICE_REDIS_URL=redis.microservice.io release release <<package>> cart-service.debrelease Infrastructure Code #! /bin/sh PIDFILE=/var/run/cart.pid BASE_DIRECTORY=/usr/share/shop/cart/bin 42/59
  26. 26. Docker Environment <<device>> Docker Deamon <<container>> Ngnix <<container>> Cart Service <<container>> Product Service <<artifact>> checkout .war <<artifact>> catalog.tar <<artifact>> cart-service.jar <<artifact>> product- service.jar <<container>> Tomcat <<container>> MongoDB <<container>> Redis <<container>> Navigation Service <<artifact>> navigation- service.jar
  27. 27. Kubernetes - Cluster Management 45/59
  28. 28. Pod kind: Pod desiredState: manifest: containers: - name: mongodb image: dockerfile/mongodb cpu: 100 memory: 50000000 ports: - containerPort: 27017 YAML
  29. 29. Replication Controller kind: ReplicationController, desiredState: replicas: 4 podTemplate: desiredState: manifest: containers: - name: product image: zutherb/product-service YAML
  30. 30. Service 48/59
  31. 31. Big Data Continuous Improvement (Agility) Architecture Continuous Delivery Big Data Innovation 49/59
  32. 32. 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!
  33. 33. <Thank You!> g+ plus.google.com/+BerndZuther twitter @Bernd_Z www bernd-zuther.de github github.com/zutherb/

×