

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
- Memory
- 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
- 107