Cover; Copyright and Credits; Dedication; Packt Upsell; Contributors; Table of Contents; Preface; Chapter 1: Monolithic Versus Microservices; Dawn of application architecture; Monolithic architecture; Microservices; Data management; When to use what; Monolithic applications to microservices; Identifying candidates for microservices; Release cycle and the deployment process; Summary; Chapter 2: Microservices Architecture; Domain-driven design; Bounded context; Identifying bounded contexts; Organizing around bounded contexts; Components; Hexagonal architecture; Messaging and contracts
Direct messagingObserver model; Service contracts; Service discovery; Service registry; Service discovery patterns; Data management; Direct lookup; Asynchronous events; Combining data; Transactions; Automated continuous deployment; CI/CD; Scaling; Summary; Chapter 3: Microservices for Helping Hands Application; Design; Users and entities; User stories; Domain model; Monolithic architecture; Application components; Deployment; Limitations; Moving to microservices; Isolating services by persistence; Isolating services by business logic; Messaging and events; Extensibility
Workflows for Helping HandsService provider workflow; Service workflow; Service consumer workflow; Order workflow; Summary; Chapter 4: Development Environment; Clojure and REPL; History of Clojure; REPL; Clojure build tools; Leiningen; Boot; Clojure project; Configuring a project; Running a project; Running tests; Generating reports; Generating artifacts; Clojure IDE; Summary; Chapter 5: REST APIs for Microservices; Introducing REST; RESTful APIs; Status codes; Naming conventions; Using RESTful APIs via cURL; REST APIs for Helping Hands; Consumer and Provider APIs; Service and Order APIs
Datomic versus traditional databaseDevelopment model; Data model; Schema; Using Datomic; Getting started with Datomic; Connecting to a database; Transacting data; Using Datalog to query; Achieving immutability; Deleting a database; Summary; Chapter 8: Building Microservices for Helping Hands; Implementing Hexagonal Architecture; Designing the interceptor chain and context; Creating a Pedestal project; Defining generic interceptors; Interceptor for Auth; Interceptor for the data model; Interceptor for events; Creating a microservice for Service Consumer; Adding routes
Summary
Chapter 6: Introduction to Pedestal; Pedestal concepts; Interceptors; The interceptor chain; Importance of a Context Map; Creating a Pedestal service; Using interceptors and handlers; Creating routes; Declaring routers; Accessing request parameters; Creating interceptors; Handling errors and exceptions; Logging; Publishing operational metrics; Using chain providers; Using server-sent events (SSE)Ă‚ ; Creating interceptors for SSE; Using WebSockets; Using WebSocket with Pedestal and Jetty; Summary; Chapter 7: Achieving Immutability with Datomic; Datomic architecture
The Microservice architecture is sweeping the world as the de facto pattern from which to build web-based applications and aids in designing scalable, easy-to-maintain web applications. This book will teach you common patterns and practices, showing you how to apply these using the Clojure programming language