There are many great articles out there on microservices. For those who have been hiding under a rock about the controversial technique—or are new to the idea—this article simply aims to collate the top open source tools available in one handy place. Microservice architecture, or just microservices, is a highly scalable structural style for developing software systems. Such architecture can be used for enterprise applications for businesses, governments, schools, and charities, etc. It is quite the opposite of the legacy-style monolithic architecture that focuses on a single unit application.
Microservices are small, independent, and unique. And the architecture can be complex in both construction and maintenance. Microservices communicate with each other to serve business goals utilizing synchronous protocols, HTTP/REST or asynchronous protocols. HTTP/REST or AMQP are examples of collaborating services that implement functions related to one another to work as efficiently as possible.
Microservices may sound logical, but building a microservice application, with the variety of tools needed, is not easy. It’s not just the conventional matter of developing software, testing and deploying it. Constant monitoring needs to occur, and when there are malfunctions, they need to be addressed quickly.
Keep in mind that no tool provides any single answer to the puzzle that is microservices. Instead, construct your system according to the three pillars of microservices architecture as outlined by Mike Amundsen. Amundsen argues that there are three components of organizational design which establish the keys to microservice’s success: communication, teams, and innovation. Of all of the pillars, communication is undoubtedly the most integral.
There are a wide variety of tools available to support building microservices architecture, most will perform specific tasks free of charge, but many also have paid upgrades for extra features and services too.
API Management and Testing
1. API Fortress
Both an API test and health tool, API Fortress automates the functional testing, health monitoring, and load testing of enterprise APIs. It’s designed to be practically code-free and is built entirely around modern API architectural practices and patterns.
An API development suite for individual devs and teams, Postman allows you to easily run UI-driven API tests. As Postman is a powerful HTTP client, RESTful API exploration becomes a breeze. Users can quickly put together simple and complex HTTP requests to test, develop and document APIs in no time.
Fast, scalable, and modern, Tyk is an out-of-the-box open source API management platform.
Whether you need to install on-premise, as a cloud service or if you prefer to use a hybrid of both, Tyk is versatile. With Tyk, you gain high availability and low latency, on top of the lowest total cost of ownership.
RabbitMQ helps you utilize patterns to communicate between your microservices to scale applications and solve most distributed systems’ problems. Connect competing microservices using RabbitMQ in a microservice environment or in any other distributed system. You can also use the tool to exchange events between services.
5. Amazon Simple Queue Service (SQS)
Amazon SQS provides robust, flexible, and reliable microservices communication. A message queue service like Amazon SQS solves several developer problems if choosing a publish-subscribe microservices’ communication model. In addition to better security, queues make messaging stronger by providing a reliable place to store pending messages.
6. Apache Kafka
Message queuing is necessary within microservices architecture to handle all the inter-microservice and microservices-external-source communications. Whether this is for intensive data processing or API calls, etc. Apache Kafka is a distributed stream processing platform with high fault tolerance and resilience.
7. Google Cloud Pub/Sub
A fully-managed real-time messaging service, Google Cloud Pub/Sub allows you to send and receive messages between microservices. Integrating your application with Google Cloud Pub/Sub will help handle all the asynchronous requests you are bound to receive and endeavor to mitigate the time that users wait for a response.
You’ve got the microservice deployed, and now you have to monitor it. Many elements go into monitoring though. For example, is a particular microservice responding well or are tweaks needed? Are other system parts working correctly, such as the databases? You’ll want to check the logs and to do that, Logstash is a great tool. It’s an open source platform where you can centralize, stash, and transform data.
Use Logstash in conjunction with Graylog as a centralized server. It bills itself as easy to use, interactive, and fast. A user can easily explore data with the system. It’s scalable, and it is designed to grow with a user’s business depending on the needs that develop. Graylog is not free, but it’s affordable.
Whilst Kubernetes certainly comes under container orchestration, in the world of microservices, it also deserves a section to itself. Kubernetes has become the gold standard for best deployment practices. When it comes to container scheduling, load balancing, service discovery, and more, Kubernetes is particularly powerful.
For microservices developers that build with Kubernetes, here are some other open source tools available. (Don’t forget to check out our more comprehensive list on Kubernetes tools here.)
Telepresence is a speedy local development for Kubernetes. Waiting for containers to deploy can be aggravating. With Telepresence, a hybrid model can be employed. So, coding of your service is done locally on your laptop with simultaneous connecting of services in your Kubernetes by away of a two-way proxy. Not recommended for production use, but great for development.
Istio supports service deployment on Kubernetes. Add reliability, security, and manageability to microservices communications through Istio’s service mesh technology. The service mesh tech allows you to improve the relationships and interactions between your application and microservices.
Minikube is a handy open source tool that lets you run Kubernetes on your laptop without the need for WiFi. For example, this comes in handy when you’re on an airplane and you need to code, but you don’t have WiFi to do so.
Conductor is Netflix’s microservices orchestration engine as part of its Netflix OSS ecosystem. Conductor runs in the cloud and implements a flow orchestrator to carry out tasks through microservices. It also facilitates control and visualization of all interactions between microservices.
Expand your programming repertoire with Elixir; a concurrent, functional, general-purpose programming language that works alongside the bytecode seen on the Erlang VM (also known as BEAM).
16. Spring Boot
Simplify the creation of REST-based microservices with Spring Boot frameworks in just a few lines of code. You can use one of the available Spring Boot examples or the Spring Initializr to get started quickly and easily.
An open source platform-as-a-service tool, fabric8 helps devs provides configuration management system through git, handles IP address complexity and port mappings, and is able to perform load balancing to services. Fabric8 also offers scalability and high availability.
Build message-based microservice processes with ease through Seneca, a microservices toolkit for Node.js. With this toolkit, you can write clean, organized code and easily systematize the business logic of your app.
19. Google Cloud Functions
Google Cloud Platform’sCloud Functions (BETA) are lightweight, serverless, and easy to deploy and maintain. The console provides real benefit to developers building de-coupled microservice applications through event-driven architecture. Spin up a container and pay on a cost-per-use basis. Plus, chain Cloud Functions to other products through some of Google Compute’s APIs.
Available for install on multiple operating environments, Kong leverages numerous read-to-deploy plugins to help with the development and deployment of microservices. With Kong, you can leverage microservice and container design patterns to quickly build API-centric applications.
Serverless tech or Function-as-a-service is a huge part of microservices. It optimizes the methodology of breaking things down into their smallest function.
Get started with Lambda microservices with Claudia and focus on business rather than dealing with AWS deployments. Claudia deals with deployments for AWS Lambda and API Gateway. Claudia also automates error-prone deployment and configuration tasks, working straight out of the box. On top of all this, it contains enhancing tools such as Claudia API Builder and Claudia Bot Builder.
23. Apache Openwhisk
As well as being an event-based programming service, Apache Openwhisk is a readily extensible serverless computing platform that supports devs in creating, testing and connecting actions to others as well as helping with debugging. Use OpenWhisk through a Docker installation on Mac, Windows or Linux.
This tool does exactly what it says; a console which combines FaaS/serverless technology with other cloud services to help devs build complicated systems. Serverless also offers scalability, integrated security, and improved operability.
Kubeless is a Kubernetes-native serverless framework that lets you deploy small bits of code without having to worry about the underlying infrastructure plumbing. Kubeless is aware of Kubernetes resources out-of-the-box and also provides auto-scaling, API routing, monitoring, and troubleshooting. Kubeless fully relies on K8s primitives, so Kubernetes users will also be able to use native K8s API servers and API gateways.
IronFunctions is an open source serverless platform or FaaS platform that you can run anywhere. IronFunctions is written on Golang and really supports functions in any language. The main advantage of IronFunctions is that it supports the AWS Lambda format. Import functions directly from Lambda and run them wherever you want.
27. AWS Lambda
AWS Lambda provides infrastructure-less servers for your microservices build and you’re charged on a pay-per-use rate. Lambda can also be used in combination with AWS API Gateway which lets you host a REST or API service. The two together allows your API to serve any requests made by users.
An open source serverless software program that promises “Serverless functions made simple.” OpenFaaS helps you package any process or container as a serverless function for either Windows or Linux. As with any serverless technology, the benefits are that developers can concentrate on delivering business value rather than handling day-to-day management of the underlying application structure.
29. Microsoft Azure Functions
Event-driven, compute-on-demand functions that enhance Azure’s existing application capabilities. Scale-based and on-demand, you will only pay for the resources you use. Azure Functions helps developers connect to data sources/messaging solutions which makes it easy to process and react to events. Devs can also leverage Azure Functions to construct HTTP-based API endpoints.
30+ Tools for Team Building
There are often changes development teams have to deal with on a regular basis for microservices. Good communication and cooperation need to exist between teams for true team autonomy. There’s a need for agility and responsibility for all parts of application life cycles. There are many tools available such as video hangouts, chat tools, project management apps, and wikis that are beneficial for microservices developers to adhere to the previously mentioned pillars. Too many to comprehensively outline here. To give you an idea, though, the Caylent team have opted for a working mix of Slack, Trello, Google Cloud, Postman, and Google Meet for our development and communication needs.
New open source tools are always being introduced in the world of software, so stay on the lookout for them. This resource is a great starting point for the most useful tools for developing a microservice system, including using Kubernetes. However, the very nature of open source means that before long more will be on the scene.