Jul 07, 2017 · 1 min read
It has been months since my friend Namit and I have been working on bringing to life a comprehensive book on Microservices applications specifically targeted for deployment in the cloud. We realized how the community is too keen to get started with Microservices, but there is so little guidance available on the subject. We studied several real-world implementations and documented the learnings as a set of patterns that help solve some of the most common challenges architects face while designing Microservices applications.
Nov 22, 2016 · 3 min read
Let’s take our discussion forward to discuss the Producer and Consumer problem. According to the definition, the problem describes two processes, the producer and the consumer, who share a common, fixed-size buffer used as a queue. The producer’s job is to generate data, put it into the buffer, and start again. At the same time, the consumer is consuming the data (i.e., removing it from the buffer), one record at a time.
Nov 21, 2016 · 4 min read
Next in our series of patterns, we will discuss a problem that almost all of us have encountered and solved in a less than desirable manner almost every time. Today, we will talk about using reflection. Most of the applications use reflection to read values out of an unknown type of object. I will present you with a utility that helps you do just that with little performance implications using input that you can store in configuration files or your application’s database.
Nov 20, 2016 · 4 min read
Previously we discussed the Buffer Fill Pattern which can help eliminate bottlenecks in your applications. Let’s tackle yet another challenge stopping you short from building your next flexible service that runs on distributed systems. The pattern that we are going to discuss today has little to do with distributed systems and is rather about component decoupling. This pattern will add flexibility to your system which you can manage through configurations stored in your application’s database.
Nov 17, 2016 · 4 min read
Most of the times when working on distributed systems that involve asynchronous communication, you need to solve certain common problems. In this multi-part series, I would walk you through some common design challenges and their solutions backed with sample code that you can refer to while working on your projects. Buffer Fill Pattern Example Scenario This pattern comes in handy in systems where a module is responsible for collecting data from multiple sources and forwarding the collated data in batches to some other module for processing.