[openstack-dev] [Zaqar] Comments on the concerns arose during the TC meeting

Flavio Percoco flavio at redhat.com
Thu Sep 4 07:08:47 UTC 2014


Greetings,

Last Tuesday the TC held the first graduation review for Zaqar. During
the meeting some concerns arose. I've listed those concerns below with
some comments hoping that it will help starting a discussion before the
next meeting. In addition, I've added some comments about the project
stability at the bottom and an etherpad link pointing to a list of use
cases for Zaqar.

# Concerns

- Concern on operational burden of requiring NoSQL deploy expertise to
the mix of openstack operational skills

For those of you not familiar with Zaqar, it currently supports 2 nosql
drivers - MongoDB and Redis - and those are the only 2 drivers it
supports for now. This will require operators willing to use Zaqar to
maintain a new (?) NoSQL technology in their system. Before expressing
our thoughts on this matter, let me say that:

	1. By removing the SQLAlchemy driver, we basically removed the chance
for operators to use an already deployed "OpenStack-technology"
	2. Zaqar won't be backed by any AMQP based messaging technology for
now. Here's[0] a summary of the research the team (mostly done by
Victoria) did during Juno
	3. We (OpenStack) used to require Redis for the zmq matchmaker
	4. We (OpenStack) also use memcached for caching and as the oslo
caching lib becomes available - or a wrapper on top of dogpile.cache -
Redis may be used in place of memcached in more and more deployments.
	5. Ceilometer's recommended storage driver is still MongoDB, although
Ceilometer has now support for sqlalchemy. (Please correct me if I'm wrong).

That being said, it's obvious we already, to some extent, promote some
NoSQL technologies. However, for the sake of the discussion, lets assume
we don't.

I truly believe, with my OpenStack (not Zaqar's) hat on, that we can't
keep avoiding these technologies. NoSQL technologies have been around
for years and we should be prepared - including OpenStack operators - to
support these technologies. Not every tool is good for all tasks - one
of the reasons we removed the sqlalchemy driver in the first place -
therefore it's impossible to keep an homogeneous environment for all
services.

With this, I'm not suggesting to ignore the risks and the extra burden
this adds but, instead of attempting to avoid it completely by not
evolving the stack of services we provide, we should probably work on
defining a reasonable subset of NoSQL services we are OK with
supporting. This will help making the burden smaller and it'll give
operators the option to choose.

[0] http://blog.flaper87.com/post/marconi-amqp-see-you-later/


- Concern on should we really reinvent a queue system rather than
piggyback on one

As mentioned in the meeting on Tuesday, Zaqar is not reinventing message
brokers. Zaqar provides a service akin to SQS from AWS with an OpenStack
flavor on top. [0]

Some things that differentiate Zaqar from SQS is it's capability for
supporting different protocols without sacrificing multi-tenantcy and
other intrinsic features it provides. Some protocols you may consider
for Zaqar are: STOMP, MQTT.

As far as the backend goes, Zaqar is not re-inventing it either. It sits
on top of existing storage technologies that have proven to be fast and
reliable for this task. The choice of using NoSQL technologies has a lot
to do with this particular thing and the fact that Zaqar needs a storage
capable of scaling, replicating and good support for failover.

[0]
https://wiki.openstack.org/wiki/Zaqar/Frequently_asked_questions#Is_Zaqar_a_provisioning_service_or_a_data_API.3F

- concern on dataplane vs. controlplane, should we add more dataplane
things in the integrated release

I'm really not sure I understand the arguments against dataplane
services. What concerns do people have about these services?
As far as I can tell, we already have several services - some in the
lower layers - that provide a data plane API. For example:


	* keystone (service catalogs and tokens)
	* glance (image management)
	* swift (object storage)
	* ceilometer (metrics)
	* heat (provisioning)
	* barbican (key management)

Are the concerns specific to Zaqar's dataplane API?


- concern on API v2 being already planned

At the meeting, we discussed a bit about Zaqar's API and more
importantly how stable it is. During that discussion I mentioned an
hypothetical v2 of the API. I'd like to clarify that a v2 is not being
planned for Kilo, what we would like to do is to gather feedback from
the community and services consuming Zaqar about the existing API and
use that feedback to design a new version of the API if necessary.

All this has yet to be discussed but most importantly, we would first
like to get more feedback from the community. We have already gotten
some feedback, but it has been fairly limited because most people are
waiting for us to graduate before kicking the tires.

We do have some endpoints that will go away in the API v2 - getting
messages by id, for  example. Nonetheless, we believe the current
1.x API already delivers a lot of value and can deliver on use cases
such as those put forward by the Heat team. 1.0 has been stable for a
good 6 months or more now, and 1.1 just adds some minor polishing.

- concern on the maturity of the NoQSL not AGPL backend (Redis)

Redis backend just landed and I've been working on a gate job for it
today. Although it hasn't been tested in production, if Zaqar graduates,
it still has a full development cycle to be tested and improved before
the first integrated release happens.

# Stability

During Juno, the team spent time mostly in the following blueprints:

1. https://blueprints.launchpad.net/zaqar/+spec/api-v1.1
2. https://blueprints.launchpad.net/zaqar/+spec/redis-storage-driver
3. Docs

The first one contains a subset of smaller blueprints, all intended to
polish the existing v1 of the API based on feedback from the community
and things we realized while working on the client library. The second
blueprint, as already mentioned in other parts of this email, refers to
the work on the new Redis driver. And the third item, tracked the work
to complete Zaqar's documentation from a user, developer and operator
perspective. There were other items we worked on - like queue flavors
and py33 support - but those had a lower priority in our queue.

The above is to say that during this cycle, we focused on extending
Zaqar's feature set, integration with the OpenStack's and Python's
ecosystem and making sure that the project is ready to be consumed
without too much burden. The project is considered stable and it's been
running in production on Rackspace's Clouds Queue. I've also heard
Catalyst is looking to deploy Zaqar in production as well.

During this cycle, we also spent some time working on a small benchmark
tool[0] - that we will contribute back to Rally as soon as it has
support for load benchmarks - and we posted the results of the tests we
ran here[1]. More benchmarks will be sent to the list soon.

[0] http://git.openstack.org/cgit/openstack/zaqar/tree/zaqar/bench
[1]
http://lists.openstack.org/pipermail/openstack-dev/2014-August/044115.html

# Use Cases

In addition to the aforementioned concerns and comments, I also would
like to share an etherpad that contains some use cases that other
integrated projects have for Zaqar[0]. The list is not exhaustive and
it'll contain more information before the next meeting.

[0] https://etherpad.openstack.org/p/zaqar-integrated-projects-use-cases

Thanks to all of you who attended the meeting, I'm looking forward to
your feedback and obviously the next meeting :)
Flavio

-- 
@flaper87
Flavio Percoco



More information about the OpenStack-dev mailing list