Your first time on this page? Allow me to give some explanations.
A curated list of Microservice Architecture related principles and technologies.
Here you can see meta information about this topic like the time we last updated this page, the original creator of the awesome list and a link to the original GitHub repository.
Thank you mfornos & contributors
View Topic on GitHub:
Search for resources by name or description.
Simply type in what you are looking for and the results will be filtered on the fly.
Further filter the resources on this page by type (repository/other resource), number of stars on GitHub and time of last commit in months.
Joyent Triton DataCenter: a cloud management platform with first class support for containers.
An open source, Kubernetes-native, microservices and serverless platform.
Serverless, open source cloud platform that executes functions in response to events at any scale.
SDK for cloud native infrastructure as code. Use your favorite language to preview and manage updates to your apps and infrastructure, and continuously deploy to any cloud (no YAML required).
Frameworks / Runtimes
Project Flogo is an open source ecosystem of opinionated event-driven capabilities to simplify building efficient & modern serverless functions, microservices & edge apps.
The GPars concurrency and parallelism framework for the JVM
DHT based high-performance microservices framework, by Bitfinex
Reactive Microservices for the JVM
A fast, lightweight and more productive microservices framework
Microserver is a Java 8 native, zero configuration, standards based, battle hardened library to run Java Rest Microservices via a standard Java main class. Supporting pure Microservice or Micro-monolith styles.
Orbit - Virtual actor framework for building distributed systems
ScaleCube Services is a high throughput, low latency reactive microservices library built to scale. it features: API-Gateways, service-discovery, service-load-balancing, the architecture supports plug-and-play service communication modules and features. built to provide performance and low-latency real-time stream-processing. its open and designed to accommodate changes. (no sidecar in a form of broker or any kind)
Some tools one can use for doing microservices with Vert.x
Wangle is a framework providing a set of common client/server abstractions for building services in a consistent, modular, and composable way.
runtime for distributed, and fault tolerant event-driven applications on the JVM.
Open source runtime for writing highly performant microservices using any programming language.
An open forum to optimize Enterprise Java for a microservices architecture by innovating across multiple implementations and collaborating on common areas of interest with a goal of standardization.
Extensible RPC system for the JVM, used to construct high-concurrency servers.
High-performance runtime that provides significant improvements in application performance and efficiency which is ideal for microservices.
Collection of Java libraries for writing microservices that run on a fast web core powered by Netty.
Fast & powerful microservices framework for Node.js, Java, Go and Ruby.
A lightweight open framework for building fast and efficient cloud-native Java microservices.
APIs and implementations tailored for cloud development, including Eclipse MicroProfile.
An innovative approach to packaging and running Java EE applications by packaging them with just enough of the server runtime to "java -jar" your application.
Embeddable Event-based Asynchronous Message/HTTP Server library for C/C++
C library to create simple HTTP servers and Web Applications.
Easy to use, scalable and secure web application framework for writing web APIs in C.
Provides a generic agent oriented programming model, run time selection of locking strategies, functions that make writing daemons trivial and simplify the implementation of network servers and clients, &c.
Support for multiple RPC protocols in a single library
Enduro/X Middleware Platform for Distributed Transaction Processing
Pion Network Library (Boost licensed open source)
A high-performance REST Toolkit written in C++
Corvusoft's Restbed framework brings asynchronous RESTful functionality to C++14 applications.
A C++11 RESTful web server library
C++ Programming Paradigm with Asynchronous Networking
C++ application development framework, to help developers create and deploy applications quickly and simply
An OSGi-like C++ dynamic module system and service registry.
💎 A collection of awesome training series, articles, videos, books, courses, sample projects, and tools for Microservices in .NET Core
Microdot: An open source .NET microservices framework
Tye is a tool that makes developing, testing, and deploying microservices and distributed applications easier. Project Tye includes a local orchestrator to make developing microservices easier and the ability to deploy microservices to Kubernetes with minimal configuration.
Toolkit and runtime for building highly concurrent, distributed, and fault tolerant event-driven applications on .NET & Mono.
A specification and conveniences for composable modules between web applications
Small, fast, modern HTTP server for Erlang/OTP.
MochiWeb is an Erlang library for building lightweight HTTP servers.
Application Server for Go (ASG)
⚡️ Express inspired web framework written in Go
Gin is a HTTP web framework written in Go (Golang). It features a Martini-like API with much better performance -- up to 40 times faster. If you need smashing performance, get yourself some Gin.
A Microservice Toolkit from The New York Times
Design-based APIs and microservices in Go
Go Router + Middleware. Your Contexts.
a microservice framework for rapid development of micro services in Go with rich eco-system
A standard library for microservices.
Go Server/API boilerplate using best practices DDD CQRS ES gRPC
Go Micro is a framework for distributed systems development
Easily consume REST APIs with Go (golang)
The fastest HTTP/2 Go Web Framework. AWS Lambda, gRPC, MVC, Unique Router, Websockets, Sessions, Test suite, Dependency Injection and more. A true successor of expressjs and laravel | 谢谢 https://github.com/kataras/iris/issues/1329 |
Micro-service framework in Go
Ultra performant API Gateway with middlewares
Like Go channels over the network
Micro is a platform for cloud native development
Transport-agnostic testing-friendly nano-framework for go micro-services
Idiomatic HTTP Middleware for Golang
Realtime/REST backend service
A zero cost, faster multi-language bidirectional microservices framework in Go, like alibaba Dubbo, but with more features, Scale easily. Try it. Test it. If you feel it's better, use it! 𝐉𝐚𝐯𝐚有𝐝𝐮𝐛𝐛𝐨, 𝐆𝐨𝐥𝐚𝐧𝐠有𝐫𝐩𝐜𝐱!
rest for go
Fast and unfancy HTTP server framework for Go. Up to 10x faster than the rest.
Haskell web framework inspired by Ruby's Sinatra, using WAI and Warp (Official Repository)
Main repository for the servant libraries -- DSL for describing, serving, querying, mocking, documenting web applications and more!
A RESTful Haskell web framework built on WAI.
A concise routing library for Ring/Clojure
Server-side application framework for Clojure
Utility library for writing microservices in Clojure, with support for Swagger and OAuth
Reloaded components à la carte
Common basis for some of otto.de's clojure microservices
Airlift framework for building REST services
High Performance Inter-Thread Messaging Library
Apache Dubbo is a high-performance, java based, open source RPC framework.
Opinionated libraries for HTTP&JSON-based RPC using Retrofit, Feign, OkHttp as clients and Jetty/Jersey as servers
Lightweight framework for building java microservices
WSO2 Microservices Framework for Java (MSF4J)
The Java microservice lib. QBit is a reactive programming lib for building microservices - JSON, HTTP, WebSocket, and REST. QBit uses reactive programming to build elastic REST, and WebSockets based cloud friendly, web services. SOA evolved for mobile and cloud. ServiceDiscovery, Health, reactive StatService, events, Java idiomatic reactive programming for Microservices.
Lightweight and fast library for complex high-load distributed applications and Memcached-like solutions.
Open-source asynchronous HTTP/2 RPC/REST client/server library built on top of Java 8, Netty, Thrift and gRPC.
Java framework for developing ops-friendly, high-performance, RESTful web services.
A Kubernetes Native Java stack tailored for OpenJDK HotSpot and GraalVM, crafted from the best of breed Java libraries and standards.
Set of Java libraries that facilitate fast, efficient, evolvable and well tested HTTP applications. specific support for the Groovy language is provided.
Helps Java developers build web APIs that follow the REST architecture style.
A micro-framework for creating web applications in Java 8 with minimal effort.
Lightweight but fully-featured HTTP toolkit written in pure Kotlin that enables the serving and consuming of HTTP services in a functional and consistent way.
I/O and Microservice library for Scala
Micro Web framework to build Servlet applications in Scala, the core part of Skinny Framework 2
Open source toolkit for building REST/HTTP-based integration layers on top of Scala and Akka.
Fast, testable, Scala HTTP services built on Twitter-Server and Finagle.
Baucis enables you to build scalable REST APIs using the open source tools and standards you and your team already know.
a bee-queue based minimalist toolkit for building fast, decentralized, scalable and fault tolerant microservices
A Node.js library for building zero-configuration microservices.
HT is a library for making awesome microservices.
Micro services made easy!
A simple, fast framework for writing microservices in Node.js communicate using RPC / IPC
⚡ Serverless Framework – Build web, mobile and IoT applications with serverless architectures using AWS Lambda, Azure Functions, Google CloudFunctions & more! –
Framework for simplifying microservices in TypeScript focusing on business logic
Multi-transport Node.js API server with integrated cluster capabilities and delayed tasks.
is a real-time, micro-service web framework that gives you control over your data via RESTful resources, sockets and flexible plug-ins.
Powerful Node.js framework for creating APIs and easily connecting to backend data sources.
Node.js module built specifically to enable you to build correct REST web services.
An extensible micro-framework for PHP
🚀 A coroutine framework that focuses on hyperspeed and flexibility. Building microservice or middleware with ease.
🚀 PHP Microservice Full Coroutine Framework
Multi-processed, async, fault-tolerant micro-framework for writing service-oriented applications
API-first web framework on top of Symfony with JSON-LD, Schema.org and Hydra support.
Micro-framework that helps you quickly write simple yet powerful web applications and APIs.
Swagger/OpenAPI First framework for Python on top of Flask with automatic endpoint validation & OAuth2 support
Python framework for building microservices
Async Python 3.6+ web server/framework | Build fast. Run fast.
web.py is a web framework for python that is as simple as it is powerful.
Bare-metal Python web API framework for building very fast app backends and microservices.
Modern, fast (high-performance), web framework for building APIs with Python
An opinionated framework for creating REST-like APIs in Ruby.
Praxis is a framework that focuses on both the design and implementation aspects of creating APIs.
Light-weight, DRY as a desert, web framework for Ruby.
An RPC framework for Rust with a focus on ease of use.
Frontend / UI
A curated list of resources about everything Micro Frontends
Extending the microservice idea to frontend development.
API Gateways / Edge Services
Configurable API gateway that acts as a reverse proxy with a plugin system.
3scale API Gateway
nginx Docker image secure by default.
Cloud-native high-performance edge/middle/service proxy
Consul Load-Balancing made simple
Gravitee.io - API Management - OpenSource API Gateway
HAProxy Load Balancer's development branch (mirror of git.haproxy.org)
An API Gateway written in Go
Neutrino is a software load balancer(SLB)
An HTTP router and reverse proxy for service composition, including use cases like Kubernetes Ingress
Apache Traffic Server™ is a fast, scalable and extensible HTTP/1.1 and HTTP/2 compliant caching proxy server.
Programmatic load balancer backed by Etcd
Zuul is a gateway service that provides dynamic routing, monitoring, resiliency, security, and more.
Kubernetes-native API gateway for microservices built on Envoy.
Lightweight, general-purpose web server supporting HTTP/2, automatic TLS and easy configuration. Written in Go.
Empowers you to define routing and mediation rules in a variety of domain-specific languages, including a Java-based fluent API, Spring or Blueprint XML configuration files, and a Scala DSL.
Open platform for providing a uniform way to integrate microservices, manage traffic flow across microservices, enforce policies and aggregate telemetry data.
Simple and robust facilities for loadbalancing and high-availability to Linux system and Linux based infrastructures.
Platform agnostic open source control plane for service mesh and microservices.
API Gateway on top of Spring MVC. Aims to provide a simple, yet effective way to route to APIs.
A modern HTTP reverse proxy and load balancer made to deploy microservices with ease.
Configuration & Discovery
A service for autodiscovery and configuration of applications running in containers
Portably control DNS clouds using java or bash
A consistent distributed data store.
Distributed reliable key-value store for the most critical data of a distributed system
AWS Service registry for resilient mid-tier load balancing and failover.
an easy-to-use dynamic service discovery, configuration and service management platform for building cloud native applications.
Service registry bridge for Docker with pluggable adapters
Small, lightweight, api-driven dns server.
DNS service discovery for etcd
The chef recipes for running and testing Airbnb's SmartStack
Open-source highly-available version-controlled service configuration repository based on Git, ZooKeeper and HTTP/2.
Configuration system designed for microservices which helps to separate configuration from code. The configuration for different services can have common and specific parts and can be dynamically distributed.
Provides server and client-side support for externalized configuration in a distributed system.
Coordination & Governance
Conductor is a microservices orchestration engine - https://netflix.github.io/conductor/
Workflows for Fission: Fast, reliable and lightweight function composition for serverless functions
Distributed, masterless, high performance, fault tolerant data processing
Ordasity is Boundary's library for building stateful clustered services on the JVM.
Redisson - Redis Java client with features of In-Memory Data Grid. Over 50 Redis based Java objects and services: Set, Multimap, SortedSet, Map, List, Queue, Deque, Semaphore, Lock, AtomicLong, Map Reduce, Publish / Subscribe, Bloom filter, Spring Cache, Tomcat, Scheduler, JCache API, Hibernate, MyBatis, RPC, local cache ...
Open source in-memory data-grid. Allows you to distribute data and computation across servers, clusters and geographies, and to manage very large data sets or high data ingest rates. Mature technology.
A framework and suite of protocols for building peer-to-peer network applications.
Deploy and manage containers (including Docker) on top of Apache Mesos at scale.
Abstracts CPU, memory, storage, and other compute resources away from machines (physical or virtual), enabling fault-tolerant and elastic distributed systems to easily be built and run effectively.
Job Schedulers / Workload Automation
Distributed Task Queue (development branch)
Fault tolerant job scheduler for Mesos which handles dependencies and ISO8601 based schedules
Extensible Scheduler for Mesos Frameworks
Open Source solution for enterprise-level workload automation. It is used to launch executable files and shell scripts and to run database procedures automatically.
a simple and fast JSON logging module for node.js services
Netflix's distributed Data Pipeline
Efficient reliable UDP unicast, UDP multicast, and IPC message transport
The pub/sub library for node backed by Redis, MongoDB, AMQP (RabbitMQ), ZeroMQ, MQTT (Mosquitto) or just plain node!
Premium Queue package for handling distributed jobs and messages in NodeJS.
Crossbar.io - WAMP application router
Disque is a distributed message broker
The ZeroMQ Enterprise Messaging Broker
A distributed, tag-based pub-sub service for modern web applications and container-driven cloud.
Mirror of Apache RocketMQ
Powerful open source messaging and integration patterns server.
Faster, more reliable, easier to maintain messaging broker built from the foundations of the original ActiveMQ.
A platform for developing asynchronous microservices solving the distributed data management problems.
Socket library that provides several common communication patterns for building distributed systems.
Apache Pulsar is an open-source distributed pub-sub messaging system.
Monitoring & Debugging
Easy & Flexible Alerting With ElasticSearch
Navigate and explore all of the microservices in your application in real time using the real application connections.
Fast Parallel Async HTTP/SSH/TCP/UDP/Ping Client Java Library. Aggregate 100,000 APIs & send anywhere in 20 lines of code. Ping/HTTP Calls 8000 servers in 12 seconds. (Akka) www.parallec.io
Fast Parallel Async HTTP client as a Service to monitor and manage 10,000 web servers. (Java+Akka)
Trace is a visualised distributed tracing platform designed for microservices.
Captures network traffic and displays it in a custom Kibana dashboard for easy viewing.
A scalable distributed monitoring system for high-performance computing systems such as clusters and grids.
Vendor-neutral APIs and instrumentation for distributed tracing.
Application performance monitor tool for distributed systems, especially designed for microservices, cloud native and container-based (Docker, K8s, Mesos) architectures.
Enterprise-class software for monitoring of networks and applications.
Alpakka Kafka connector - Alpakka is a Reactive Enterprise Integration library for Java and Scala, based on Reactive Streams and Akka.
An advanced, but easy to use, platform for writing functional applications in Java 8.
A second-generation Reactive library for building non-blocking applications on the JVM based on the Reactive Streams Specification.
A curated list of Chaos Engineering resources.
Hystrix is a latency and fault tolerance library designed to isolate points of access to remote systems, services and 3rd party libraries, stop cascading failure and enable resilience in complex distributed systems where failure is inevitable.
Resilience4j is a fault tolerance library designed for Java8 and functional programming
Consensus algorithm that is designed to be easy to understand. It's equivalent to Paxos in fault-tolerance and performance.
OpenID Connect Identity (OIDC) and OAuth 2.0 Provider with Pluggable Connectors
OpenID Connect and OAuth 2.0 Framework for ASP.NET Core
Open Source Identity and Access Management For Modern Applications and Services
A fast, light and cloud native OAuth 2.0 authorization microservices based on light-4j
Personally identifiable information (PII) storage service built to comply with GDPR.
JSON Web Tokens are an open, industry standard RFC 7519 method for representing claims securely between two parties.
Provides specific authorization flows for web applications, desktop applications, mobile phones, and living room devices. Many implementations.
Bond is a cross-platform framework for working with schematized data. It supports cross-language de/serialization and powerful generic mechanisms for efficiently manipulating data. Bond is broadly used at Microsoft in high scale services.
Binary serialization library for efficient network communication
Clojure JSON and JSON SMILE (binary json format) encoding/decoding
A fast JSON parser/generator for Java.
faster JSON serialization for Go
FST: fast java serialization drop in-replacement
Main Portal page for the Jackson project
(DEPRECATED) -- moved under
Java binary serialization and cloning: fast, efficient, automatic
Java serialization library, proto compiler, code generator
Library for describing binary formats for Scala types
Apache data serialization system providing rich data structures in a compact, fast, binary data format.
Insanely fast data interchange format and capability-based RPC system.
Cross-platform, language and transport-independent framework for building and consuming network services.
Transactional Distributed Database Layer
Scalable datastore for metrics, events, and real-time analytics
Distributed database fully compatible with redis protocol
An open source clone of Amazon's Dynamo.
Column-oriented and providing high availability with no single point of failure.
an open-source column-oriented database management system that allows generating analytical data reports in real time.
A distributed database engineered for performance, scalability, and simplified administration.
elastic](https://twitter.com/elastic) | - | an end-to-end search and analytics platform. infinitely versatile. By combining the massively popular Elasticsearch, Logstash and Kibana we have created an end-to-end stack that delivers actionable insights in real-time from almost any type of structured and unstructured data source. Built and supported by the engineers behind each of these open source products, the Elasticsearch ELK stack makes searching and analyzing data easier than ever before. |
Open source, distributed, in-memory database for scale-out applications.
Columnar storage format that uses the record shredding and assembly algorithm described in the Dremel paper.
Open source, scalable database that makes building realtime apps easier.
GoReplay is an open-source tool for capturing and replaying live HTTP traffic into a test environment in order to continuously test your system with real data. It can be used to increase confidence in code deployments, configuration changes and infrastructure changes.
A library that tests if the implementation of a REST-API meets its specification.
Record your test suite's HTTP interactions and replay them during future test runs for fast, deterministic, accurate tests.
Service Virtualization Solution – a combined Service Stub and Transparent Proxy
Lightweight service virtualization/API simulation tool for developers and testers
Interactive intercepting HTTP proxy for penetration testers and software developers. ![Open-Source Software][OSS Icon] ![Freeware][Freeware Icon]
Contract testing framework for HTTP APIs and non-HTTP asynchronous messaging systems.
TDD to the level of software architecture.
Continuous Integration & Delivery
continuous integration and continuous delivery
An API Blueprint renderer with theme support that outputs static HTML
Simple, Comprehensive Tooling for Modern APIs
📘 OpenAPI/Swagger-generated API Reference Documentation
Beautiful static documentation for your API
Tools for your whole API lifecycle. Use it to discuss your API with others. Generate documentation automatically. Or a test suite. Or even some code.
Document RESTful services by combining hand-written documentation with auto-generated snippets produced with Spring MVC Test.
World Wide Web
IETF Working Group that is chartered to deliver the next transport protocol for the Internet.
An attempt to specify a flexible binary serialization and RPC protocol that are compatible with the philosophies of dynamic languages.
OpenID Connect 1.0 is a simple identity layer on top of the OAuth 2.0 protocol. It allows clients to verify the identity of the end-user based on the authentication performed by an Authorization Server, as well as to obtain basic profile information about the end-user in an interoperable and REST-like manner.
Paseto is everything you love about JOSE (JWT, JWE, JWS) without any of the many design deficits that plague the JOSE standards. DRAFT
The Transport Layer Security (TLS) Protocol Version 1.2.
JSON Web Signature (JWS) represents content secured with digital signatures or Message Authentication Codes (MACs) using JSON-based data structures.
JSON Web Token (JWT) is a compact, URL-safe means of representing claims to be transferred between two parties.
SCIM: Definitions, overview, concepts, and requirements.
SCIM: Core Schema, provides a platform-neutral schema and extension model for representing users and groups.
The OpenAPI Specification Repository
The JSON Hypertext Application Language (HAL) is a standard which establishes conventions for expressing hypermedia controls, such as links, with JSON. DRAFT
A FIX standard for binary message encoding
MessagePack is an extremely efficient object serialization library. It's like JSON, but very fast and small.
The Unicode Consortium. The Unicode Standard, Version 8.0.0, (Mountain View, CA: The Unicode Consortium, 2015. ISBN 978-1-936213-10-8).
Organization Design / Team Dynamics
small_orange_diamond:PDF - Melvin E. Conway, Datamation magazine 1968. The original article defining Conway's Law.
Each team is responsible for one or more business functions (e.g. business capabilities). A team owns a code base consisting of one or more modules. Its code base is sized so as to not exceed the cognitive capacity of team. The team deploys its code as one or more services. A team should have exactly one service unless there is a proven need to have multiple services.
small_red_triangle:YT - DOES19 London. The "monoliths vs microservices" debate often focuses on technological aspects, ignoring strategy and team dynamics. Instead of technology, smart-thinking organizations are beginning with team cognitive load as the guiding principle for modern software. In this talk, we explain how and why, illustrated by real case studies.
Enterprise & Verticals
Articles & Papers
A short service mesh introduction.
Model depicting the dimensions to scale a service.
small_orange_diamond:PDF - Set of requirements that may be useful in selecting a community-owned architecture benchmark to support repeatable microservices research.
A practical overview, based on real-world experience, of what one would need to know in order to build microservices.
small_orange_diamond:PDF - Consistency as logical monotonicity.
Technique to reduce the risk of introducing a new software version in production by slowly rolling out the change to a small subset of users before rolling it out to the entire infrastructure and making it available to everybody.
States that it is impossible for a distributed computer system to simultaneously provide all three of the following guarantees: Consistency, Availability and Partition tolerance.
small_orange_diamond:PDF - The serverless computing abstraction exposes several low-level operational details that make it hard for programmers to write and reason about their code. This paper sheds light on this problem by presenting λ, an operational semantics of the essence of serverless computing.
Introduction to Uber Engineering generalized approach to microservice architectures, named “Domain-Oriented Microservice Architecture” (DOMA).
You can use this guide to understand what Java microservices are, how you architect and build them. Also: A look at Java microservice libraries & common questions.
Particular way of designing software applications as suites of independently deployable services.
Critical advice about some problems regarding a microservices approach.
Getting started with microservices.
Guide to ponder costs and benefits of the mircoservices architectural style.
Standard for asynchronous stream processing with non-blocking back pressure.
small_orange_diamond:PDF - Resource Oriented Computing for Adaptive Systems.
small_orange_diamond:PDF - Understanding software ecosystems: a strategic modeling approach.
Overview of discovery and registration patterns.
Approaches for managing the additional testing complexity of multiple independently deployable components.
small_orange_diamond:PDF - Describes three abstractions which combine to present a powerful programming model for building safe, modular, and efficient server software: Composable futures, services and filters.
small_orange_diamond:PDF - Overview of the state of microservices in both industrial and academia.