Goiardi 0.7.0 "Orphans of the Sky" released, implementing Chef RFC 014


Astute readers of old science fiction will remember that the novella that
makes up the first part of Robert A. Heinlein’s novel "Orphans of the Sky"
is titled “Universe”.

Aside from some bug fixes with making file uploading and cookbook metadata
checking a little more forgiving, this release adds support for the
Berkshelf /universe endpoint. This was originally going to be a small
update, but testing with the full complement of cookbooks from the
Supermarket revealed that goiardi was running like a dog with 6200+
cookbooks trying to use the same functions designed for fetching one
cookbook in in-memory mode. Sensible enough, but it also turned out that
while golang’s gob encoding is almost always faster than JSON encoding it
is NOT the case when encoding complex data structures found in cookbooks,
nodes, etc.

Thus, this version of goiardi introduces another breaking change: complex
data structures in the database are now stored with JSON instead of gob
encoding. You have to export your data, do a sqitch revert and deploy (or
drop the database and load the schema dump), and import your data again if
you’re using one of the SQL backends. While a little painful, it leads to a
good result; if you’re using Postgres as a datastore, goiardi’s able to
take advantage of Postgres specific goodies with JSON and load the universe
with all the supermarket cookbooks in ~325-350 milliseconds. MySQL can’t
take advantage of the JSON goodies, so it takes about 1 second to serve up
the full supermarket, and in-memory takes about 1.2 seconds. If you have
that many cookbooks, I would recommend using Postgres.

Release notes and downloads are at
https://github.com/ctdk/goiardi/releases/tag/v0.7.0. Blog post is at