Juri StrumpflohnerFollowJuri is a full stack developer and tech lead with a special passion for the web and frontend development. He creates online videos for Egghead.io, writes articles on his blog and for tech magazines, speaks at conferences and holds training workshops.
On Monoliths and Microservices
1 min read
Have cross-functional teams
vertical decomposition: create vertical slices, being as independent from each other as possible (self-contained systems)
vertical services may be even large -> split internally
services don’t have a common DB as that would create a tight coupling between them
good experiences with “Fat JARs” which can be executed via java -jar <file> (starting an embedded Jetty or something..)
REST and Microservices work well together
Micro-architecture which deals with the inner workings of a services and is left to the team; macro-architecture is about the interactions between the services
RESTful architecture: communication exclusively over REST
Shared nothing architecture: no shared state, no HTTP sessions, no central data storage, no shared code. Multiple instance of the same service share the same DB.
Data governance: There’s a single “truth”, others have access to the data provider via a REST Api and can eventually copy data to their own storage.
Integration over hyperlinks
Data replication: services poll atom feeds of the responsible vertical product to regularly get data updates and keep in their own storage (they’re not using data queues)
temporary inconsistencies at the cost of availability of services
could be avoided to replicate by calling remote services directly -> problem of delays and slowdowns of the entire system though