Microservices with Clojure develop event-driven, scalable, and reactive microservices with real-time monitoring
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 programmi...
Main Author: | |
---|---|
Format: | eBook |
Language: | English |
Published: |
Birmingham, UK
Packt Publishing
2018
|
Subjects: | |
Online Access: | |
Collection: | O'Reilly - Collection details see MPG.ReNa |
Table of Contents:
- Consumer and Provider APIs
- Service and Order APIs
- 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
- Datomic versus traditional database
- Development 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
- Defining the Datomic schema
- Creating a persistence adapter
- Creating interceptors
- Testing routes
- Creating a microservice for Service Provider
- Adding routes
- Defining Datomic schema
- Creating a persistence adapter
- Creating interceptors
- Testing routes
- Creating a microservice for Services
- Adding routes
- Defining a Datomic schema
- Creating a persistence adapter
- Creating interceptors
- Testing routes
- Creating a microservice for Order
- Adding routes
- Defining Datomic schema
- Creating a persistence adapter
- Creating interceptors
- 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 messaging
- Observer 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 Hands
- Service 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
- Other Books You May Enjoy
- Index
- Testing routes
- Creating a microservice for Lookup
- Defining the Elasticsearch index
- Creating query interceptors
- Using geo queries
- Getting status with aggregation queries
- Creating a microservice for alerts
- Adding routes
- Creating an email interceptor using Postal
- Summary
- Chapter 9: Configuring Microservices
- Configuration principles
- Defining configuration parameters
- Using configuration parameters
- Using Omniconf for configuration
- Enabling Omniconf
- Integrating with Helping Hands
- Managing application states with mount
- Enabling mount
- Integrating with Helping Hands
- Summary
- Chapter 10: Event-Driven Patterns for Microservices
- Implementing event-driven patterns
- Event sourcing
- Using the CQRS pattern
- Introduction to Apache Kafka
- Design principles
- Getting Kafka
- Using Kafka as a messaging system
- Using Kafka as an event store
- Using Kafka for Helping Hands
- Using Kafka APIs
- Initializing Kafka with Mount
- Integrating the Alert Service with Kafka
- Using Avro for data transfer
- Summary
- Chapter 11: Deploying and Monitoring Secured Microservices
- Enabling authentication and authorization
- Introducing Tokens and JWT
- Creating an Auth service for Helping Hands
- Using a Nimbus JOSE JWT library for Tokens
- Creating a secret key for JSON Web Encryption
- Creating Tokens
- Enabling users and roles for authorization
- Creating Auth APIs using Pedestal
- Monitoring microservices
- Using ELK Stack for monitoring
- Setting up Elasticsearch
- Setting up Kibana
- Setting up Logstash
- Using ELK Stack with Collectd
- Logging and monitoring guidelines
- Deploying microservices at scale
- Introducing Containers and Docker
- Setting up Docker
- Creating a Docker image for Helping Hands
- Introducing Kubernetes
- Getting started with Kubernetes
- Summary