RESTful microservices in action
Having investigated the pros and cons of microservices, we can start to work on implementing a microservices architecture in Clojure.
Application overview
In Chapter 7, The UI as a Function, we created a simple Trello-like application to manage an agile board. We stored the data in a Clojure atom. In a more realistic example, we would store the data in a database. Let's suppose that we need to create a native app for such a board. On top of having a web application, we need a phone app. Storing the data directly in an app is not an option, as we need to synchronize the phone and web apps. The board's data that's used by both applications are a good candidate for a separate microservice.
The following diagram shows what our system looks like:

Services messaging
Both of our frontend services need to manipulate the cards' data. They need to do CRUD (short for Create, Read, Update, and Delete) operations[15]. Each service will initiate operations to manipulate cards...