how it all started? microservices, how it all started? All names, characters, and incidents portrayed in this story are ctitious. No identi cation with actual persons (living or deceased), places, and buildings is intended or should be inferred.
microservices — James Lewis and Martin Fowler “the microservice architectural style is an approach to developing a single application as a suite of small services, each running in its own process and communicating with lightweight mechanisms, often an HTTP resource API
µservices Small business domain Independent; independently deployed Running in it’s own process Managing it’s data Loosely integrated using common communication protocols
are good microservices are good Clean code Single responsibility modules Faster than monoliths Easier to manage Easier to scale Docker, Docker, Docker, Docker potentialy faster to deploy, works faster independent teams, independent codebases at this point we should at least mention Docker
) collection of task-oriented or dedicated systems that pool their resources and capabilities together to create a new, more complex system which offers more functionality and performance than simply the sum of the constituent systems
of systems system of systems (… ) collection of task-oriented or dedicated systems that pool their resources and capabilities together to create a new, more complex system which offers more functionality and performance than simply the sum of the constituent systems
journey microservices journey — Christopher Alexander “A Piecemeal Growth is the process of building something a step at a time. Each step consists of evaluating the current system, deciding what should be done next (what should be fixed or improved) and then adding a piece or making a change.
checklist microservices checklist Small business domain Independent; independently deployed Running in it’s own process Managing it’s data Loosely integrated using common communication protocols
checklist microservices checklist Small business domain Independent; independently deployed Running in it’s own process Managing it’s data Loosely integrated using common communication protocols
James Lewis “ We define libraries as components that are linked into a program and called using in-memory calls, while services are out-of-process components who communicate with remote procedure calls
driven contracts consumer driven contracts (… ) drives the development of the Provider from its Consumers point of view, which means consumer describes what and how it wants to receive the information (in a form of a contract) and then provider implements the service following the given contract.
checklist microservices checklist Small business domain Independent; independently deployed Running in it’s own process Managing it’s data Loosely integrated using common communication protocols
Tanenbaum — Distributed Systems (2007) - Principles & Paradigms “(… ) as every parent of a small child knows, converting a large object into small fragments is considerably easier than the reverse process.
computing distributed computing Leslie Lamport — Microsoft mailing list 1987 A distributed system is one in which the failure of a computer you didn’t even know existed can render your own computer unusable.
of distributed computing fallacies of distributed computing — 1994 - 1998 (is) a set of assertions made by L Peter Deutsch and others at Sun Microsystems describing false assumptions that programmers new to distributed applications invariably make
Service Discovery / Load balancing Service registers itself in a central repository. The repository also provides an information about other services availability. Other services request the information and autonomously decide which instances are called. Server-Side Service Discovery / Load balancing Service registers itself in a central repository. Other services access the repository (single address), which internally forwards the request to an available instance.
theorem (cap theorem) brewer’s theorem (cap theorem) — 1998 (… ) it is impossible for a distributed computer system to simultaneously provide all three of the following guarantees: Consistency, Availability and Partition tolerance.
Every read receives the most recent write or an error Availability Every request receives a (non-error) response – without the guarantee that it contains the most recent write Partition tolerance The system continues to operate despite an arbitrary number of messages being dropped (or delayed) by the network between nodes
theorem pacelc theorem — Daniel J. Abadi 2012 Ignoring the consistency/latency tradeoff of replicated systems is a major oversight [in CAP], as it is present at all times during system operation, whereas CAP is only relevant in the arguably rare case of a network partition.