Warning

This is based on two real projects,

but maybe parts of story or tools are alienated.

How can we increase sales?

A/B Testing

Conversion

  • act of converting site visitors into paying customers
  • proportion of visits to a website which take action to go beyond a website visit

FeatureToggle

public class TopSellerRecommendationPanel extends AbstractShopBasePanel {

    @SpringBean
    private FeatureToogleBean featureToogleBean;

    ...

    @Override
    protected void onConfigure() {
      super.onConfigure();
      setVisible(featureToogleBean.isTopSellerFeatureEnabled());
    }

    ...

}

Continuous Improvement

Architecture

White Label-Shop

What have we done?

How does it work?

Disadvantages of a Monolith

  • Development:
    • Reduction of development speed
    • Increase of turnaround times
    • Increase of build time
    • Strange behavior after changes
    • Application Scalability
  • Product Management:
    • Increase of time to market
    • A/B testing of process changes nearly impossible
    • Scalability of Workload

How can we build software smarter?

Microservice

Microservice Architecture

Microservice Taxonomy

Differences to SOA

  • Deployed as processes (Unix packages or Container)
  • 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

Online Shop - Use cases

Online Shop - Migration

Flexibility

Improve Turnaround Times

Scalability

Challenges of Microservices

  • Require integration.
  • Require a multi deployment pipeline.
  • Require automation of deployment and configuration.
  • Require logging and monitoring.

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

Leavitt in Action

Adrian Cockcroft

if every service has to be updated at the same time it’s not loosely coupled

Postel’s Law (1980)

RFC 761 (Transmission Control Protocol)

be conservative in what you do, be liberal in what you accept from others

Postel’s Law

{
        firstname: "Bernd",
        lastname: "Zuther",
        street: "Elsenheimerstraße 55a",
        city: "München",
        zip: 80687
}

Postel’s Law

{
        firstname: "Bernd",
        lastname: "Zuther",
        birthday: "1983/08/15",
        street: "Elsenheimerstraße 55a",
        city: "München",
        zip: 80687
}

Postel’s Law

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

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"
        }]
}

Alternatives

  • URL:
    • simply whack the API version into the URL, e.g. https://shop/api/v2/cart/all
  • Custom request header:
    • same URL as before but add a header “api-version: 2”
  • Accept header:
    • modify accept header to specify the version, e.g. “Accept: application/vnd.cart.v2+json”

Continuous Delivery

Multi Deployment Pipeline

Improve Build Times

Deployments get more complex

Deployment

How can we describe infrastructure of our products?

Docker Environment

Kubernetes - Cluster Management

Pod

kind: Pod
desiredState:
  manifest:
    containers:
      - name: mongodb
        image: dockerfile/mongodb
        cpu: 100
        memory: 50000000
        ports:
          - containerPort: 27017

Replication Controller

kind: ReplicationController,
desiredState:
  replicas: 4
  podTemplate:
    desiredState:
      manifest:
        containers:
          - name: product
            image: zutherb/product-service

Service

Big Data

Experiment with your customers!

Work Smarter not Harder

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!

<Thank You!>

Links

Links

Images

Images