Post on 05-Apr-2017
SELF CONTAINED SYSTEMSSOUP TO NUTS
WHO AM I
▸ DONOVAN MULLER
▸ LEAD TECHNICAL PARTNER AT BARCLAYS AFRICA/ABSA
SO(A) WHAT’S THE BIG HYPE?
▸ ISN’T THIS JUST SOA?
▸ YES BUT WITHOUT ESB, VENDORS, ORCHESTRATION ENGINES, SOAP
▸ SO, NO CENTRALISED ESB TEAM
HOW BIG IS A MICRO SERVICE ANYWAY
DOES SIZE REALLY MATTER?
▸ NO, IT SHOULDN’T
▸ SIZE DOES NOT MAKE A MICROSERVICE
▸ IT’S ALL ABOUT CONTEXT…
NO DEPENDENCIES
WHY DO WE NEED MICROSERVICES?
▸ IT’S ABOUT BEING INDEPENDENT/AUTONOMOUS
▸ ASKING FOR PERMISSION SUCKS
▸ WAITING SUCKS
▸ I HATE JEE
▸ I WANNA GO FAST
WE HAVE TO WAIT HOW LONG…
NO HAND OFFS
▸ INTER-TEAM DEPENDENCIES WASTE TIME
▸ KEEP IT IN THE TEAM
▸ WHICH MEANS, WE NEED TO CONTROL THE STACK
I THOUGHT THIS WAS ABOUT MICROSERVICES…
WHAT’S A SELF CONTAINED SYSTEM?
▸ http://scs-architecture.org
▸ Autonomous application
▸ Owned by one team
▸ Communication asynchronous where possible
▸ No shared UI
▸ No shared business code
▸ Minimal shared infrastructure
BE SELFISH
SHARE NOTHING
▸ SHARING IS NOT CARING
▸ CAUSES DEPENDENCIES BETWEEN TEAMS
▸ SHARING SOME THINGS IS OK THOUGH
▸ STANDARDISED LIBRARIES FOR LOGGING ETC.
▸ TRADE OFFS
BUT…
TRADE OFFS
▸ NO PERFECT DESIGN
▸ ALWAYS TRADE OFFS
DDD
▸ DOMAIN DRIVEN DESIGN
▸ MODEL THE BUSINESS PROBLEM
▸ NOT THE INFRASTRUCTURE
BOUNDED CONTEXTS
▸ MOST IMPORTANT CONCEPT?
▸ THINGS THAT BELONG TOGETHERSTAY TOGETHER
▸ BOUNDED CONTEXT = SCS
AGGREGATES
▸ A GROUP OF RELATED DOMAIN OBJECTS
▸ CONSISTENCY BOUNDARY
DOMAIN EVENTS
▸ WHEN THINKING OF STATE, THINK WHAT EVENT HAS JUST TAKEN PLACE
▸ EASIER FOR PEOPLE TO MODEL WHAT SOMETHING SHOULD DO, RATHER THAN HOW TO DO IT
EVENT SOURCING
▸ STATE IS THE LEFT FOLD OF YOUR DOMAIN EVENTS
▸ KEPT IN A PERSISTENT EVENT STORE
▸ BUILT IN AUDIT RECORD
▸ TEMPORAL QUERIES
CQRS
▸ COMPLIMENTS EVENT SOURCING
▸ MATERIALISED VIEWS
▸ EASY COME, EASY GO
DEMO - AXON
FRAMEWORKS
▸ AXON WITH SPRING X
▸ LAGOM
▸ MANY MORE
▸ ROLL YOUR OWN?
PAAS - OPENSHIFT
▸ “ENTERPRISE” KUBERNETES
▸ SERVICE DISCOVERY, CONFIGURATION MANAGEMENT, ETC. FOR FREE
▸ BUILD AND RUN
▸ BUILT IN JENKINS PIPELINES
EVENT DRIVEN ARCHITECTURE
▸ ASYNCHRONOUS COMMUNICATION BETWEEN SYSTEMS
▸ LESS DEATH STAR
▸ MORE FLEXIBLE AND AUTONOMOUS
▸ TRADE OFFS
REACTIVE MANIFESTO
▸ http://www.reactivemanifesto.org/
▸ RESPONSIVE
▸ RESILIENT
▸ ELASTIC
▸ MESSAGE DRIVEN
INTEGRATIONS (STREAMS)
▸ SPRING CLOUD STREAM/DATA FLOW
▸ ALPAKKA
▸ ETC.
WHAT ABOUT TRANSACTIONS?
▸ NO XA (BETWEEN SYSTEMS) :O
▸ EVENTUALLY CONSISTENT
▸ SAGA PATTERN
MSA FOR THE UI
▸ MICROSERVICES ARE NOT ONLY FOR THE BACKEND
▸ AVOID SHARED UI
▸ TAILOR, ESI (EDGE SIDE INCLUDES), ETC.
JUST GETTING STARTED
▸ MONITORING
▸ LOGGING
▸ SERVICE CATALOGUE
▸ API GATEWAY
▸ SECURITY
THANK YOU
@donovancmuller