High availability and agility are two of the main draws of cloud applications. With the new Rackspace Service Registry – available in preview today – we’re helping developers make their applications highly available through exposing the building blocks for automation and centralized configuration storage.
Rackspace Service Registry is one of the first Rackspace services focused on helping our customers run and automate their application versus their infrastructure.
What is Rackspace Service Registry?
Rackspace Service Registry is an API-driven cloud service built to keep track of your services and store configuration values, which allows you to react to changes faster and make your application or service more highly-available.
The functionality that it exposes includes:
Find which services are currently online/active and find services based on different criteria. You can organize your services however best fits your application deployment.
Platform for Automation
Service Registry exposes an events feed, which includes all of the events that have happened during the life-cycle of your account (e.g. a service comes online, a configuration value gets updated, etc.).
Events feed is a great information source about your infrastructure and can act as a platform for auto-scaling or be used to kick off a host of different automation processes, including:
Configuration storage allows users to store arbitrary configuration values in our system and get notified via the events feed when a value gets updated or deleted.
Why did we build it?
Our primary motivation for building Service Registry was our need for it internally. We had already developed and used an internal project that offered a small subset of the features available in Service Registry, but it was difficult to maintain and scale.
When we started building the new product, we looked at what our current solution already offered and what we and our customers needed. The result is a Service Registry built on top of Apache Cassandra and Apache ZooKeeper that offers a lot of the functionality required for building highly-available services in dynamic environments.
We are releasing it as a cloud service because we want the general public to enjoy the same benefits we experience.
How does it work?
Rackspace Service Registry exposes a REST based API, which means you communicate with it using HTTP(s).
The main concept in the Service Registry is a so called heartbeat. A heartbeat lets our system know that your service is alive and healthy. When a session is initially created, you must specify a heartbeat interval that defines how often you need to heartbeat the session.
If you don’t heartbeat a session in the defined interval, the session is considered dead, and a new event is inserted in the events feed that indicates the session and all of the services associated with it have died.
For more information about the terminology and concepts please refer to the API documentation.
How do I integrate my services with it?
There are several options to integrate your services with Rackspace Service Registry:
1. Download one of the official client libraries (currently we have libraries for Node.js, Twisted Python and Java) and include it in your service code.
If there is no client library for your programming language of choice and you want to build one yourself, be sure to check Best Practices for Writing Client Libraries chapter in the documentation.
2. Use the “long-running process wrapper” tool which allows you to register arbitrary long-running processes with the Rackspace Service Registry.
Method No. 1 requires a bit more work on your side, but it offers more fine-grained level of control and it is the preferred method.
How does it compare to Chef/Puppet/other configuration management solutions?
Rackspace Service Registry is not meant to replace configuration management systems like Chef or Puppet, but it can be used to augment their functionality.
In a lot of scenarios people store different configuration values in Chef inside attributes and data bags, and when performing a Chef run, configuration values get written out to a file on disk, and usually a service needs to be restarted or SIGHUP-ed to read those changes.
Service Registry allows users to store arbitrary configuration values on the server and be notified when a value changes or is deleted. This allows users to move this functionality into code and react to changes faster without interruption to the service.
A good use case for this is storing a list of database server IP addresses inside the configuration value in the Service Registry. Inside the code, users can poll the events feed for changes and re-initialize an internal connection pool when a value changes. This allows users to react to those changes faster compared to using other solutions such as using DNS hostnames instead of IP addresses.
How is it different from Netflix’s Eureka?
Rackspace Service Registry is different from Netflix’s Eureka in multiple ways:
1. It’s a hosted service
No Installation and Maintenance: Our service is a hosted service, which means we run it and operate it. This removes the load from your operations staff and allows you to put more resources into more business critical components of you application.
Zero Downtime Update: Besides removing the operational load, the software as a service model allows you to benefit from continuous zero downtime updates, which are performed by our team almost every day.
2. It’s backed by Rackspace Fanatical Support
Like all of our services, Service Registry is backed by our trademark Fanatical Support. If you have a problem or need help, you can always call us and we will happily assist you.
3. It has a Configuration Storage feature
Besides the Service Registry, our service offers a Configuration Storage feature, which allows you to store arbitrary configuration values in our service and be notified via the event feed when they are updated or deleted.
4. It offers official client libraries for more programming languages
Netflix’s Eureka only has a single official client library written with Java. Starting with this preview, we offer official client libraries for the following programming languages:
Because we want to keep the user experience great, our goal is to also create and support official client libraries for other popular programming languages such as Ruby.
Where can I apply for the preview?
To apply for the beta program, please fill out this short survey with your contact information and use case and we will determine your eligibility within 48 hours.
We look forward to hearing from you and getting valuable feedback, which will allow us to make product even better.