Summary
In this chapter, we focused on how to build configurable applications that can adapt as per the requirements and dependencies at hand. We looked at an open source configuration utility called Omniconf
 that provides an effective way to define and validate configuration parameters for Clojure applications.
We also looked at how the runtime state of the application can be composed and shared among various namespaces of the Clojure application. We looked at an open source library called mount
 that helps applications to manage and compose their states at runtime without affecting the overall structure of the implementation.
In the next chapter, we will learn how to adopt event-driven architecture for Helping Hands microservices. We will also learn how to build data flows for the microservices of Helping Hands.