NetKernel News Volume 7 Issue 3 - NetKernel Update 5.3.1/6.1.1 - Modelling Twitter with ROC

NetKernel News Volume 7 Issue 2

March 24th 2016

Catch up on last week's news here, or see full volume index.

Repository Updates

The following updates are available in the NKEE and NKSE repositories...

  • bootloader-1.21.1
    • Identifies the booted core modules and provides this metadata to the system tools
  • coremeta-1.9.1
    • Module deployment tool updates.
  • http-server-3.8.1
    • SessionOverlay clean up of stale sessions now reaps oldest first.
  • layer0-1.114.1
    • Module deployment tool updates.
  • nkse-cron-1.15.1
    • Doc updates
  • nkse-dev-tools-1.64.1
    • Module deployment tool updates.
  • nkse-doc-content-1.51.1
    • Many edits documenting the comprehensive module deployment review.
  • nkse-doc-patterns-1.6.1
    • Edits documenting the comprehensive module deployment review.
  • nkse-search-1.25.1
    • Documentation updates
  • pds-core-1.12.1
    • Documentation updates and added default logging if no zone config is supplied.
  • system-core-0.41.1
    • Module deployment tool updates.

Also available in the NetKernel maven repository is an update to the Gradle plugin. This fixes an issue in which compile time dependencies might get deployed to an NK target when using the maven install task. Thanks to Gary Windham at University of Arizona for reporting this.

NetKernel Updates 5.3.1 / 6.1.1

Today sees a large release of updates that can be installed with Apposite. We will also soon release a new distribution which brings together all of the updates since we put out the 5.2.1 download over two years ago.

Provisionally we're calling this NetKernel v5.3.1 but you never know we might end up going for the psychologically significant 6.1.1 numbering!

Of course versioning of the distribution is pretty much meaningless since by its modular decoupled nature NetKernel has always used an evolvable and progressive update model (we were happy when Microsoft copied us in Windows 10 - better 14 years late than never).

The rule of thumb is that so long as you pull the latest updates from Apposite you'll be fully up to date with the latest stable system.

When you want to create a reference production instance you should use Gradle NetKernel plugin to snapshot your base image (exactly the same as containerisation but with the only requirement being a copy of a JVM to run it on - so you can use this with or without a microcontainer infrastructure).

What's New

The updates include general maintenance to tools and documentation but more broadly it provides a comprehensive update to the module management infrastructure after a thorough review.

Modules are still deployed either by editing etc/modules.xml or by adding a collection in etc/modules.d/ - however we've made it so that the default is now for tools to put entries in modules.d/ We recommend that you leave modules.xml for core system modules managed by Apposite.

Applications and any other user-side modules should be declared in modules.d/

To keep track of where things are, the module manager in layer0 has been updated and now provides the metadata to know where any given module is declared. (When you have 500 modules in your system and need to add a new module to a specific collection this is really useful).

A full review and update of the documentation now makes sure that discussion and recommendation for module management is consistent and fully explained with examples.

Below are some screenshots of the visible signs of the updates...

A new module updload tool can be used from the console - we will soon update the Gradle plugin to use the same mechanism using underlying deployment API.

The deployment tool provides a detailed record of the actions undertaken by the deployment.

The module list now shows where each module is declared eg STEM, MODULESD, APPOSITE.

A module now provides the URI of the file in which it is declared.

Any given module can be removed with a new option in the context menu. Removal is logical only, the underlying module is not touched only its deployment entry is marked as removed. Removed modules can be redeployed using the same tool.

New: Polestar 0.2 Released

Polestar 0.2 has just been released one year after initial 0.1 release. This version features significant enhancements to functionality in addition to stability improvements after using in the field for year.

Polestar is an Internet of Things hub for NetKernel. It is perfect for monitoring sensors (or in fact any accessible resource!) it will store changes to the sensor values over time and triggers scripts on changes.

Visualisation of the data is also a big part of the capabilities - it can generate HTML5 charts and diagrams using inbuilt libraries.

Polestar is fully configurable through it’s web interface using dynamic groovy scripts.

The live Polestar demo site includes all the details of how to get the NK modules etc...

What’s New

  • Multi-value sensors with named fields. (map) Sensors can now represent vector values. This is particularly useful for things such as storing the RGB levels of lights source, traffic decomposed into speed buckets and sound levels decomposed into frequency bands.
  • Declarative errors on sensors. Sensors can now automatically report errors based upon their value by specifying declarative error checks. These checks include no updates within a period of time, value goes above or below threshold, value equals or does not equal a specified value. Currently these checks work with scalar numeric values and booleans.
  • Sensor errors reported in header. When errors are present a red notification is present on the banner of every page. Clicking this notification takes you to a filtered view of sensors showing which sensors are in error.
  • Improvements to stability. A low-level leak in the way groovy interacts with java.beans was discovered and worked around. This leak is still an issue with the latest Java8. In addition scripts executed periodically are not re-executed until all scripts from previous invocation are completed. This stops badly behaving scripts (usually due to long blocking IO) from causing thread starvation.
  • Sensor last changed values are periodically persisted. This is so that they are recovered even if Polestar is ungracefully stopped.
  • New icons. car, letterbox, river, server, sound.

Video: Resource Oriented Microservices - London Microservices Meetup

The Meetup at Microservices London earlier this month was great. I really enjoyed meeting and connecting with the 200 people that showed up.

There's now a video of my presentation (very well edited to switch between presenter and slides). I'm very happy to report that it was very well received and ROC is a story that really connects with people when they're introduced to it from a microservices perspective... (Click the image to get to the video which is embedded in the Skillsmatter site).

Modelling Twitter with ROC

Given that Twitter has been celebrating its tenth birthday this week. Some of you might enjoy this article I wrote in early 2010...

which goes through a discussion of the way we would model Twitter in ROC.

The language I use isn't the current new-age microservices speak - but you will see that we discuss how to achieve engineering scaling with service composition (layered microservices) and even show the role and trade-offs of containerisation. Most importantly it shows the importance of aiming for normalising the state in a highly read-centric application such as twitter (and in fact most business systems).

Unlike Twitter, the ROC modelling and the NetKernel discussion is just as modern (nay futuristic!) today as it was then!

Enjoy the holiday weekend!


Please feel free to comment on the NetKernel Forum

Follow on Twitter:

@pjr1060 for day-to-day NK/ROC updates
@netkernel for announcements
@tab1060 for the hard-core stuff

To subscribe for news and alerts

Join the NetKernel Portal to get news, announcements and extra features.

NetKernel will ROC your world

Download now
NetKernel, ROC, Resource Oriented Computing are registered trademarks of 1060 Research

© 2008-2011, 1060 Research Limited