OpenDaylight Architecture++
Michael Vorburger.ch
Architecture Evolution Wish List
Light weight?
ODL is currently built on Apache Karaf “Middleware” - an OSGi run-time container. This is very niche and exotic in the bigger picture of things in Java land. Drawbacks include:
Development Overhead Runtime Overhead Future Proof
Huh?
Run EXACT same code!!!
Just the run-time is different (none) [add. dist. not instead]
No more run-time feature installation (-)
Optional (?) CLI & built-in SSH server
Microservices
Reference / Image credit : https://martinfowler.com/articles/microservices.html
How to write Distributed Micro Service Apps?
Perhaps not by extending an SDN (sic!) controller’s technical platform?
For Remoting, Messaging, Monitoring and Tracing, etc. etc. probably best to align with and rely on existing (or emerging..) industry best practices. Guess what, Red Hat has some stuff in this space - and some cool new things up its sleeves, still TBC in public.
Simplification work can be a foundation for further exploring this - later.
Status?
Currently driven mostly just by myself.
Basic POC concluded, now WIP to close known gaps.
Some contributions from Ericsson & Lumina in 2018.12.
OpenDaylight-SIMPLE
Sep 22/23, 2018 @ Neon Developer Design Forum (Amsterdam)
Michael Vorburger.ch, Red Hat
A (personal) perspective
based on 2.5 years hacking on ODL, and an exploration of an alternative in https://github.com/vorburger/opendaylight-simple
Keeping this quick & high-level, leaving time for someone else with similar ideas (coincidence, AFAIK; separate initiatives) speaking after. My goal is to share & gauge interest.
Why OSGi is so great!
PS, FYI: I even run Minecraft and Maven & Gradle builds in OSGi!!! ❤️
Why OSGi is therefore so widely used… cough
And then “some” Spring [Boot] and JBoss / WildFly / Swarm / Thorntail etc. apps out there, in the wild...
~ Some Numbers ~ (! APPROXIMATIVE !)
https://github.com/search?q=java : Code 337M+�https://github.com/search?q=[org.]osgi : Code 2M ~ 0.6% / all Java�https://github.com/search?q=springframework : Code 34M ~ 10% / all Java�
https://www.google.ch/search?q=org.springframework : 7.1M�https://www.google.ch/search?q=org.osgi : 1.9M (wow, hm)�https://www.google.ch/search?q=java : 526M
Obviously ODL does not actually need the Spring Framework - that’s not the message here.
Why OSGi can be not so great..
Increases cost for any 3rd party library integration (like a tax).
Local development turnaround productivity is relatively poor (MVN).
Ask anyone who ever debugged a SingleFeatureTest (SFT) failure? ;)
It’s basically just really “niche”, in the overall Java ecosystem. Check SO.
This costs us real productivity time and money overhead, IMHO.
Karaf, OSGi & Modularity
So perhaps we could just fix sets of modules assembled at build time?
How? And how VS today’s code??
What we would actually need? NOT really the Spring framework, but:
We can more seriously gradually explore this in parallel...
#helpwanted
Deployment/Use Case Specific Distributions?
opendaylight-simple currently has fixed feature list, at build time in POM.
But if we agreed that we wanted to keep a “FAT distribution” including all ODL projects’ many JARs in a single ZIP like today’s DL-able release on Karaf, that’s technically still totally feasible even with this model IMHO.
It could have a “feature list” which determines which DI Modules start.
It just would be at boot time instead of at runtime. Would that work?
Q & A