A-Z Popular Blog Coding Search »
Coding
 Advertisements
Related Guides
Software Design

IT Artifact

18 Microservice Principles

 , updated on
Microservices is an approach to software design that decomposes functionality into small autonomous services. This allows large scale functionality to be implemented with manageable units. The following are architecture and design principles associated with microservices.

Small

Microservices are small. They are implemented and operated by a small team.

Replaceable

A microservice is small enough to be replaced without much impact.

Cohesive

Everything in a microservice feels like it belongs together. Anything that doesn't fit is moved to a separate microservice.

Autonomous

Microservices can be deployed independently.

Scalable

Microservices are designed to be scalable and can be scaled independently.

Disposable

Design for fast starts and don't allow a service to fall into an unstable state when hardware suddenly fails.

Dumb Pipes

Ideally, microservices communicate using standard asynchronous network communications. Avoid putting functionality in the middle between services.

Loosely Coupled

Microservices offer an abstracted interface such that consumers don't need to change every time you deploy an update. Design interfaces around enduring business concepts.

Reusable

Interfaces are designed to maximize use of services by diverse consumers. Avoid unnecessary assumptions and constraints.

Business Functionality

Microservices are organized around business functionality as opposed to technology layers.

Cross-functional Teams

Microservices are completely implemented by small cross-functional teams that can change everything from the UI to the data model. This removes the organizational complexity of getting numerous teams involved in every change.

Decentralized Architecture

Allow teams leverage in choosing their own platforms, tools and data models. Encourage teams to share what works.

Ownership

Microservices are products that are owned and operated by the build team.

Emergent Design

Microservices are evolved over time with no big upfront plan.

Service Composition

Microservices use microservices.

Resilience

Expect failure from external resources such as other microservices and behave well when failure occurs.

Automation

Automate things such as testing, deployment and service recovery.

Design for Observation

Generate useful logs using techniques such as correlation ids that simplify troubleshooting.
Overview: Microservices
Type
Definition
A software design technique that decomposes functionality into small autonomous services.
Related Concepts

Software Design

This is the complete list of articles we have written about software design.
Bootstrapping
Bulkhead
Code Refactoring
Complexity Hiding
Design Abstraction
Design For Scale
Future-Proofing
Microservices
Overengineering
Push Technology
Service Architecture
Soft Computing
Software Architecture
Software Components
Systems Analysis
Systems Design
Worse Is Better
More ...
If you enjoyed this page, please consider bookmarking Simplicable.
 

References

"Microservices", Martin Fowler and James Lewis, March 2014, https://martinfowler.com/articles/microservices.html.

Software Design

A list of software design terms.

Separation Of Concerns

A definition of separation of concerns.

Backward vs Forward Compatibility

The difference between backward and forward compatibility.

Push Technology

A definition of push technology with examples.

Systems Design

The common elements of a systems design.

Software Design vs Software Architecture

The difference between software design and software architecture explained.

Software Bloat

The common types of software bloat.

Future-Proofing

A definition of future-proofing with examples.

Systems Analysis

The common types of systems analysis.

Bit Rot

The basic types of bit rot.

Coding

A list of coding considerations and techniques.

Emergence vs Big Design Up Front

The difference between emergence and big-design-up-front.

Deep Magic

An overview of deep magic, a technology term.

Principle Of Least Astonishment

An overview of the Principle Of Least Astonishment.

Pull vs Push

The difference between pull and push technology.

Binary vs Hexadecimal

A comparison of binary and hexadecimal.

End-User Computing

An overview of end-user computing.

Library vs API

The difference between a library and API explained.

Code Reuse

The common types of code reuse.

Code Freeze

The common types of code freeze.
The most popular articles on Simplicable in the past day.

New Articles

Recent posts or updates on Simplicable.
Site Map