Iglu R9 Bull's Eye released

19 April 2018  •  Oguzhan Unlu

We are excited to announce a new Iglu release, introducing a number of long-awaited improvements to our Iglu Server, our most advanced Iglu schema registry technology. This release also brings some small but powerful updates to igluctl, the command-line toolkit for Iglu.

  1. Iglu Server, reloaded
  2. Improvements to Iglu Server
  3. Under the hood of Iglu Server
  4. igluctl updates
  5. Upgrading
  6. Getting help

Read on for more information about Release 9 Bull’s Eye, named after the first-ever Brazilian postage stamp.

bulls-eye-img

1. Iglu Server, reloaded

Our latest version of what was then-called the “Scala Repo Server” was released more than two years ago, as part of Iglu R3 Penny Black. That version is still bundled with Snowplow Mini and has proved its worth in that environment.

Since then, our Iglu product efforts have focused on tools like igluctl, focused on improving the static schema registry experience for Snowplow operators. This was a deliberate decision, and the Iglu static registry has over time proven its robustness - at the cost of some flexibility.

However, it has become clear that to deliver on our ambitious and exciting Iglu roadmap, we will need a more powerful schema registry engine. We will deliver this through our tried-and-tested Scala Repo Server project, now re-badged as simply Iglu Server.

2. Improvements to Iglu Server

In order to reduce setup time for Iglu Server, we have widened the scope of super API keys to the writing and reading of schemas - not only creating new keys. Thus as of R9, it is possible to use just a single API key for all interactions with Iglu Server.

For more granular access control, separate read and write keys still can be used.

Given that Iglu Server could be deployed behind a proxy or a load balancer, R9 extends the server configuration options with a new parameter, repo-server.baseURL - set this to the address that will be used to reach your Iglu Server.

Before this release, Iglu Server attached metadata to all schemas, which made its interface incompatible with more widely-used static schema registry. Now, by default all schemas are returned without any additional information, but you can add a special metadata query parameter with value 1 to any /api/schemas/ endpoint in order to restore old behavior.

Finally, there is a new CLI interface to Iglu Server, so far offering just a single --config option. Use this to provide a configuration file for Iglu Server with DB and server settings.

3. Under the hood of Iglu Server

As part of the project reboot, we have brought internal dependencies, such as Akka, Akka HTTP and others up-to-date with the modern Scala ecosystem.

These dependency updates have fixed some subtle bugs in Iglu Server’s REST interface, and have also improved performance.

We are particularly pleased to have updated the registry’s Swagger UI - this represents a hugely beneficial to Iglu Server’s built-in UI for interacting with schema endpoints.

4. igluctl updates

R9 Bull’s Eye also fixes two important bugs in igluctl, introducing a new 0.4.1 version:

  • We’ve fixed a bug introduced in version 0.4.0, whereby if lint input is the full path to schema and the schema’s version isn’t 1-0-0, then igluctl produced a failure message instead of warning (issue #340),
  • igluctl now works with JRE9 (issue #300)

5. Upgrading

5.1 Iglu Server

The new Iglu Server release can be downloaded from here from Bintray (download will start). Unzip the compressed file and then you can launch server with following interface: java -jar $JAR_PATH --config $CONFIG_PATH.

The switch from Spray to Akka HTTP has seen some major changes in the configuration file format. However the old format can be adapted by:

  • Replacing or removing the Spray-specific server settings
  • Adding repo-server.baseURL, making sure to omit the protocol (i.e. http(s)://), because Swagger UI will automatically prepend that

Another breaking change is related to endpoint paths. Previously, a DELETE request sent to api/auth/keygen was used to delete API keys of a specific vendor prefix. From now on, that same request should be sent to api/auth/vendor.

Finally, Iglu Server 0.3.0 now negotiates Content-Type with clients. Clients should specify either Accept: application/json header, or no Accept header at all; no other header values are supported.

5.2 igluctl

The latest igluctl can be downloaded from here from Bintray (download will start).

The new version, igluctl 0.4.1, doesn’t introduce any interface changes over 0.4.0.

6. Getting help

For more details on this release, as always do check out the release notes and the wiki page on GitHub.

If you have any questions or run into any problems, please raise a question in our Discourse forum.