Shield is a service that you can deploy which aims to be "Production Readiness in a Box" for your service oriented architecture.
Instead of re-implementing common problems like authentication, rate-limiting, and caching in each backend service, Shield groups these concerns into a single convenient, reusable location.
Shield sits between your precious microservices and the raging masses of the internet. A single Shield instance can handle multiple domains, a fleet of backend services, and thousands of requests per second with only a few milliseconds of overhead.
Shield's dynamic configuration system allows you to add, alter, and remove domains, middleware, and upstream microservices smoothly without dropping a single request.
Use your preferred service discovery tool for telling Shield about your upstream microservices. Shield has several already implemented, but it's easy to create your own.
Shield uses the Swagger Documentation of your upstream microservices to dynamically build its routing table. No duplicate config needed.
Incoming HTTP requests are routed to the upstream microservice that is best able to handle it. If multiple instances fit the bill, Shield will load balance the requests between them.
Common HTTP problems like rate limiting, caching, and authentication can be solved with middleware. Timeouts ensure that requests get serviced in a timely manner.
Listeners are like middleware, but act upon the request/response pair once the request has completed. They are perfect for logging, metrics, and analysis.
Shield's front end listens and responds in the lingua franca of the internet, HTTP. When talking with your microservice backends, Shield can easily translate to a different transport mechanism: HTTP, AWS Lambda, or your RPC or binary format of choice.
Shield's dynamic weighted load balancing lets you deploy a new version your upstream microservice and gradually transition traffic away from the old deployment. An elegant solution for a more civilized age, compared to suddenly dumping traffic on a new deployment.
Shield is built from the ground up to be fast and reliable. It relies on Spray for blazing fast HTTP handling and on Akka's "Let it Crash" actor paradigm for fault tolerance.