Practical Golang: Building a simple, distributed one-value database with Hashicorp Serf

Introduction With the advent of distributed applications, we see new storage solutions emerging constantly. They include, but are not limited to, Cassandra, Redis, CockroachDB, Consul or RethinkDB. Most of you probably use one, or more, of them. They seem to be really complex systems, because they actually are. This can’t be denied. But it’s pretty easy to write a simple, one value database, featuring high availability. You probably wouldn’t use anything near this in production, but it should be a fruitful learning experience for you nevertheless....

January 29, 2017 · 9 min · Jacob Martin

Practical Golang: Getting started with NATS and related patterns

Practical Golang: Getting started with NATS and related patterns Introduction Microservices… the never disappearing buzzword of our times. They promise a lot, but can be slow or complicated if not implemented correctly. One of the main challenges when developing and using a microservice-based architecture is getting the communication right. Many will ask, why not REST? As I did at some point. Many will actually use it. But the truth is that it leads to tighter coupling, and is synchronous....

June 6, 2016 · 15 min · Jacob Martin

Practical Golang: Event multicast/subscription service

Introduction In our microservice architectures we always need a method for communicating between services. There are various ways to achieve this. Few of them are, but are not limited to: Remote Procedure Call, REST API’s, message BUSses. In this comprehensive tutorial we’ll write a service, which you can use to distribute messages/events across your system. Design How will it work? It will accept registering subscribers (other microservices). Whenever it gets a message from a microservice, it will send it further to all subscribers, using a REST call to the other microservices /event URL....

April 4, 2016 · 6 min · Jacob Martin

Web app using Microservices in Go: Part 4 – Worker and Frontend

Previous part Introduction In this part we will finally finish writing our application. We will implement the last two services: The Worker The Frontend The Worker The worker will communicate with the Master to get new Tasks. When it gets a Task it will get the corresponding data from the storage and will start working on the task. When it finishes it will send the finished data to the storage service, and if that succeeds it will register the Task as finished to the Master....

March 23, 2016 · 12 min · Jacob Martin

Web app using Microservices in Go: Part 3 – Storage and Master

Previous part Introduction In this part we will implement the next part of the microservices needed for our web app. We will implement the: Storage system Master This way we will have the Master API ready when we’ll be writing the slaves/workers and the frontend. And we’ll already have the database, k/v store and storage when writing the master. SO every time we write something we’ll already have all its dependencies....

March 21, 2016 · 9 min · Jacob Martin