Text

Text

Safe Harbour Statement

I'm not one of these Dudes

Definition

There is no industry consensus yet regarding the properties of microservices

Origin

A workshop of software architects held near Venice in May 2011 used the term "microservice" to describe what the participants saw as a common architectural style that many of them had been recently exploring.

Pioneer

Adrian Cockcroft at Netflix, describing this approach as "fine grained SOA", pioneered the style at web scale

Monolith - Yearning for MS

  • Big Bang
    • Coordination
    • Frequency
  • Code Repository
    • Exclusive Checkout
    • Merge Hell
  • Approach Used
    • Componentise (Classes->EJB->App->Service)
    • Share Contract and Model
  • Rigid Contracts
    • SerialVersionUID
  • System Consistency
    • Hard to Deploy System (UCD Master Build)
    • MS Won (coordination still used)

Monolith Runtime

  • Clusters
    • Inter-cluster Communication
    • Snowball Failure
  • Shared Resources
    • Memory
      • Low Memory GC Thrash
      • High Memory Long GC Time
    • Threads
      • Large Up-Front Allocation
      • Difficult to Size
    • Synchronization (Thread Friendly)
    • No Limits Per Service
  • Chaos Ops Monkey
    • Like a Surgeon - 'When in doubt, take it out'

Other Aspects

  • Pressure Cooker
    • Difficult to reliably set time-outs
    • Set time-out and pray it does not rain
    • Short-circuit & bulk-head patterns (Netflix Hystrix)
  • Data (most difficult part of MS)
    • MS favour eventual consistency
    • CQRS used to scale update operations and avoid lock contention
    • Proper isolation requires new DB pods per service
  • Paranoid Parent
    • Obsessively checks her Children
    • Only they know how they feel each millisecond
    • I have too many children!
    • When they are hungry they will call me - Reactive Manifesto

NedJ Architecture

  • Initially Proposed
    • Spring Boot Micro-services on Kubernetes / Swarm
    • Java EE Solution on Supported Container
  • Hurdles
    • No Kubernetes / Swarm support in Production
    • Resistance to Move from Java EE
  • Decisions
    • Use Supported Environment - WebSphere
    • Use Hybrid - Develop using an Embedded Micro-container - Liberty - Can be deployed as MS
    • Develop in a "Micro-servicey" way
      • Same Project Structure as Spring Boot
      • Keep Services separate and deploy as WARS
      • Keep Isolation and Independence in mind

Micro-services Introduction

By davejwilson

Micro-services Introduction

  • 106