Jump to: navigation, search

Zaqar

Revision as of 13:41, 7 August 2013 by Flaper87 (talk | contribs) (Architecture)

OpenStack Queuing and Notification Service

As OpenStack matures, it needs to support bigger, more complex web applications. Such applications require a robust, web-scale message queuing service to support the distributed nature of large web applications. Marconi is a new OpenStack project designed to fill this need. Our aim is to create an open alternative to SQS (producer-consumer) and SNS (pub-sub), for use in applications that run on OpenStack clouds. A message queueing service is vital component of big, complex web applications

The project will define a clean, RESTful API, use a modular architecture, and will support unified pub-sub and job-queuing semantics. Users will be able to customize Marconi to achieve a wide range of performance, durability, availability, and efficiency goals.

Kurt Griffiths (kgriffs) and Flavio Percoco (flaper87) are the acting technical leads on the project and are responsible for preparing it for incubation.

Design

Marconi aims to be pragmatic, building upon the real-world experiences of teams who have solid track records running and supporting web-scale message queueing systems. The project's overarching design philosophy is derived from Donald A. Norman:

The value of a well-designed object is when it has such a rich set of affordances that the people who use it can do things with it that the designer never imagined.

Goals related to the above:

  1. Emergent functionality, utility
  2. Modular, pluggable code base
  3. REST architectural style

Principles to live by:

  1. DRY
  2. YAGNI
  3. KISS


Architecture

Marconi-architecture.png

Use Cases

  1. Distribute tasks among multiple workers (transactional job queues)
  2. Forward events to data collectors (transactional event queues)
  3. Publish events to any number of subscribers (pub-sub)
  4. Send commands to one or more agents (point-to-point or pub-sub)
  5. Request an action or get information from an agent (RPC)

Out of Scope

Marconi may be used as the foundation for other services to support the following use cases, but will not support them directly within its code base.

  1. Forwarding notifications to email, SMS, Twitter, etc.
  2. Forwarding notifications to web hooks
  3. Forwarding notifications to APNS, GCM, etc.
  4. Scheduling-as-a-service
  5. Metering usage

Etherpads

Presentations

  • Alejandro Cabrera. Rackspace Atlanta. Introducing Openstack Marconi. July 17, 2013. Youtube Speaker Deck
  • Flavio Percoco. EuroPython 2013. Marconi: Queuing and Notification Service for Openstack. July 2, 2013. Youtube
  • Kurt Griffiths, Allan Metts. Openstack Summit April 2013. Project Overview: OpenStack Queuing and Notification Service ("Marconi""). April 2013. Youtube

Articles

Resources

Meetings Meetings/Marconi
IRC #openstack-marconi on Freenode
Trello https://trello.com/b/7NLODgbr
Havana Spec Marconi/specs/havana
API Blueprint Marconi/specs/api/v1

Marconi/specs/zmq/api/v1

Other Blueprints https://blueprints.launchpad.net/marconi
Milestones https://launchpad.net/marconi/+milestones
Developer Docs Python Client Bindings, Storage
Incubation Marconi/Incubation
Source code https://github.com/stackforge/marconi
Client source code https://github.com/stackforge/python-marconiclient
Code Reviews https://review.openstack.org/#/q/status:open+project:stackforge/marconi,n,z
Bug tracker https://bugs.launchpad.net/marconi