What is Repose?

Repose is an open-source, RESTful middleware platform that transparently integrates with your existing infrastructure. Technically, it is a pseudo-transparent reverse proxy.

Repose provides highly scalable, extensible solutions to common API processing tasks including authentication, rate limiting, access control, logging, and more.

Additionally, Repose allows services to use Enterprise Integration Patterns.

How Does Repose Work?

Repose takes incoming requests from clients and adjusts them for consumption by services by passing the requests through a series of extensible filters. These filters provide functionality such as authentication, authorization, rate-limiting, and request modification. Repose can run as a stand-alone proxy server between the client and the origin service. The Repose instance can be on the same host as the origin service, but it doesn’t have to be. This deployment method, illustrated in the following graphic, is called Valve.

valve diagram

Repose can also run within a servlet container such as GlassFish or Tomcat using the WAR deployment.

war diagram

You can decide which configuration works best for you, and you can tweak many of your configurations without having to restart Repose – it will pick up configuration changes on the fly, making it easy to configure and test.

Repose can be configured to use a distributed data store service where cached information is exchanged across multiple nodes. This makes Repose fault tolerant with proven performance.

What Services Does Repose Provide?

Repose provides a series of customizable filters that you can configure to perform a large number of API tasks. The full list of filters is on the Filters page. Following are some of the most common ones:

Who Can Use Repose?

Anyone can use Repose! It is an open-source platform for the general public to consume, share, and improve.

How Can I Use Repose?

To get Repose, log in to your server and run the Installation commands for your desired environment. Then, configure your origin service endpoint in the system model, and you are ready to configure filters and services that work for you. We have many sample configurations that you can use to get started. Or, because Repose is open source, you can build your own stacks of reusable software components.

Environment Setup

Installation instructions are provided for Debian package managers (e.g., APT) and RPM package managers (e.g., Yum).

Certain deployment methods will handle environment setup automatically.

Installation

The recommended and most common way to run Repose is as a standalone application using the Valve installation. This installation allows Repose to be executed either as a Linux service (e.g., systemd) or directly from the installed JAR. An alternative would be to run Repose inside an existing servlet container (e.g., Tomcat, GlassFish) using the WAR installation.

The most recent addition to the Repose family is a containerized release of the Valve installation. This is great if you are looking to eventually run Repose with a container service or are just trying it out for the first time.

While Repose can be installed manually, there are other deployment options available. However, these other methods do require a little more System Administration knowledge which is not covered here. See: Deployment

Proxy Server (Valve)

This is the most common setup and is detailed on the Valve Installation page.

After installing it this way, consult the Running Valve page for details on starting and stopping Repose.

Servlet Container WAR

Instructions for installing the WAR are on the WAR Installation page.

Tomcat Setup

After installing the WAR, there is additional setup to get everything working with Tomcat. See Tomcat Setup for more details.

GlassFish Setup

See GlassFish Setup for more details.

Container Attributes known to affect Repose

Docker Container

See Quick Start for more details.

Deployment

Once you know how you’ll want to configure Repose, you may want to automate the deployment using a configuration management tool or reusable container.

Docker

Docker and Repose make a fantastic team together. If you are interested in using the published Repose Docker images, see our Quick Start. For more details on building a custom Repose Docker image, see our Docker recipe.

Puppet

There is an unsupported starter module in the GitHub repository rackerlabs/puppet-repose.

Chef

There is an unsupported starter cookbook in the GitHub repository rackerlabs/cookbook-repose.

Configuration

If you’re ready to dive into configuration, see Configuration for more details. We also have a series of Recipes that will walk you through some of our common use cases.

Performance Tuning

Repose has been battle tested in production environments and in our performance testing environments. See Performance Best Practices for more details.

Support

Recipes

For further information on common configuration scenarios, visit our Recipes page.

Troubleshooting

For details on common troubleshooting techniques, visit our Troubleshooting page.

FAQs

For a list of frequently asked questions and answers, visit our FAQ page.

Need More Information About Repose?

Contact us! We would be happy to address any questions, comments, or concerns with anything having to do with Repose!

If you wonder what we’ve been working on lately, visit our release notes.