An Enhanced Delhi Code with More Bells and Whistles

By | Blog

A few weeks back, the EdgeX Foundry community released Delhi.  This release (the third public major release of EdgeX in a little more than a year) included many new features and I outlined them in my last blog post . Today, the project announced the availability of an enhanced Delhi release, with a smaller collection of new and updated capabilities built on top of Delhi.  

The Delhi code release offers so many new features, I’m not going to list them all. Instead, I’d like to focus on what’s new with this enhanced Delhi release.  In particular, the enhanced version of Delhi begins to allow for freedom of choice with regard to databases in EdgeX. With this release, several of the services (core data, metadata and export client specifically) have been engineered to use either MongoDB (the long used default persistence for EdgeX) or Redis. This improvement to the EdgeX platform is significant for several reasons:

  • It highlights the ability for organizations to select and more easily use the data store that best fits their use case and system needs.  Platform support, performance characteristics, licensure issues, in-memory options, etc. are all architectural considerations when looking at persistence in your IoT platform.  
  • It is the first step in providing proper abstraction and loose coupling around the persistence layer.  Eventually, this work which we hope will be completed for the Edinburgh release (April 2019) will allow architects more freedom to customize, extend, and replace this layer based on their persistence needs.
  • EdgeX is all about providing interoperability, flexibility and facilitating choice at the edge – choice in sensor connectivity, analytics, cloud connectivity, deployment, etc. This new feature again showcases EdgeX’s flexibility – flexibility in persistence realm.  Future releases of EdgeX, using patterns established with this database abstractions, are looking at offering even more flexibility and interoperability in areas like messaging, security, communications, system management, etc.

The EdgeX community (which includes members of the Redis Labs team) worked throughout the Delhi release to simultaneously refactored several of the EdgeX microservices to offer Redis as embedded data services.  Specifically, this means we:

  • Incorporated the EdgeX services with the tools needed to connect to databases such as Redis and MongoDB
  • Leveraged Redis’ multi-model capability and data structures to serialize EdgeX data models for persistence, and index them for queries
  • Decoupled the EdgeX models from a single persistence mechanism
  • Solve identity issues, such as identifying sensor readings, in a database-independent way
  • Added Redis to the EdgeX deployment/orchestration facilities
  • Provided Redis initialization and bootstrapping scripts in support of EdgeX

Again, all of this work is important first steps toward more unilateral independence and choice with regard to persistence in EdgeX in future releases.

In addition to the work to provide alternate database connectors in several key EdgeX microservices, the enhanced Delhi code will also include the following:

  • New device service connectors, created from the new SDKs made available for Modbus and MQTT.  These were device services created with the new Go and C Devcie Service SDKs that were made available with the Delhi release.  Device connectors provide the “thing” or sensor/device connectivity in EdgeX.
  • A simple example device service simulator that developers can use to learn the EdgeX device service framework and speed up their development efforts.
  • Additional and improved documentation that includes all the new features from the Delhi release.
  • The EdgeX Foundry snap published in the the Snap Store (https://snapcraft.io/edgexfoundry) for the first time.

It should be mentioned that with the new Device Service SDKs, we are seeing a real escalation in EdgeX “thing” connectivity.  As I write this post, several additional Device Services have been created beyond what is offered in the “dot” release. So stay tuned to the EdgeX community outlets for more in this area coming soon.

Big shout out to the technical community for helping us achieve another technical milestone To learn more about the Redis connection, please click on this blog.

If you have questions or comments, visit the EdgeX Foundry Slack Channel and share your thoughts in the #community channel.