Introducing Repose: The Restful Proxy Service Engine

Filed in Product & Development by Chad Lung | October 16, 2012 1:00 pm

Repose[1] is an open-source[2] RESTful HTTP proxy service that scales to the cloud. Repose provides a solution to common API processing tasks such as rate limitingclient authentication, translation, API validationversioning and logging so web service developers can focus on the unique features of their services.

Repose Within Rackspace

To understand Repose better, let’s examine how we use Repose here at Rackspace. One of our internal applications of Repose has been to simplify development and use of Atom Hopper[3], another of our open-sourced products that I’ve blogged about before[4]. We use Atom Hopper as a key tool to collect data from our deployment of OpenStack[5]. We have several internal teams that want to access this data as well as to publish additional data into Atom Hopper. Naturally, all of this requires Atom Hopper to perform basic functions such as authentication, rate limiting and logging. This is where Repose steps in. Repose already has components that can do this for Atom Hopper, or for any other web based service for that matter. This lets the Atom Hopper team focus on just the core pieces of Atom Hopper while Repose deals with general-purpose functions like authentication and rate limiting. This relationship with Repose works for other web services developed by teams within Rackspace: those developers focus on  their own web service and let Repose do the other tasks that almost every web service needs. It’s no longer necessary for every development team to re-invent the wheel for client authentication, rate limiting and such functions.

In the same way, you can use Repose to help you focus on your own web-based service. You can use Repose no matter what programming language you used to develop your web service.

Repose and Atom Hopper working together

Benefits And How Repose Works

Repose’s design gives it several benefits. Repose is:

Integration patterns[7] are technology-independent designs that are robust and re-usable. Repose is a platform that can be used to implement integration patterns. In particular, Repose uses these two patterns:

One year ago we launched Repose as open source software.  We’ve been very happy with Repose in production and welcome your feedback.

Getting Started With Repose

To learn more about Repose, the Open Repose[10] website is your starting point providing links to the source code[11] in GitHub. This is also the right place to find our documentation[12], including an FAQ[13] and wiki[14]; the wiki has the most current information. You might also be interested in a walkthrough on setting up Repose to use rate limiting[15] over on our DevOps blog.

Endnotes:
  1. Repose: http://openrepose.org
  2. open-source: https://github.com/rackerlabs/repose
  3. Atom Hopper: http://atomhopper.org/
  4. blogged about before: http://www.rackspace.com/blog/rackspace-open-sources-atom-hopper-an-atom-publishing-server/
  5. OpenStack: http://www.openstack.org/
  6. wiki: http://wiki.openrepose.org/display/REPOSE/Components
  7. Integration patterns: http://www.eaipatterns.com/eaipatterns.html
  8. Pipes and Filters:: http://www.eaipatterns.com/PipesAndFilters.html
  9. Message Router:: http://www.eaipatterns.com/MessageRouter.html
  10. Open Repose: http://openrepose.org/
  11. source code: https://github.com/rackerlabs/repose
  12. documentation: http://openrepose.org/documentation.html
  13. FAQ: http://wiki.openrepose.org/display/REPOSE/FAQ
  14. wiki: http://wiki.openrepose.org/display/REPOSE/Home
  15. setting up Repose to use rate limiting: http://devops.rackspace.com/rate-limiting-with-repose-the-restful-proxy-service-engine.html

Source URL: http://www.rackspace.com/blog/introducing-repose-the-restful-proxy-service-engine/