Second time’s a charm - Frinx
Second time’s a charm
Conventional wisdom says that it is not a good use of time to rewrite existing code with new technologies. Nevertheless, we had an opportunity to do some of that and in our case it offered us the opportunity to reflect on our existing design choices and technology stack. Here are our initial thoughts and experiences during the process.
What we’ve realized early on was that this provides an opportunity for improving on our original design. Some issues we’ve identified manifest themselves as never-to-be-addressed TODOs and FIXMEs sprinkled throughout the codebase. Some were not evident to us as authors of the code looking through the lenses of technologies choices, frameworks and our general assumptions. That’s why a set of new technologies can be helpful in providing a fresh perspective. The other major thing that helped identify some problems was adding new members to the team. There’s nothing like a well aimed “Why?” question to make you revisit and rethink your design decisions.
To be more specific, the code being ported is a general purpose translation framework that allows access to configuration and state of network devices in a unified manner. An example would be: implementing standard OpenConfig APIs for a Cisco IOS classic device that only exposes unstructured CLI access. The framework is capable of running close to a device acting as a NETCONF/RESTCONF yang agent or it can be part of the automation framework talking to the device remotely e.g. CLI over SSH. The original code (still actively maintained and deployed in production) was developed using Java and Kotlin programming languages, running in a JVM, using Opendaylight and OSGi as base frameworks. More about framework within FRINX Uniconfig solution can be found here: https://docs.frinx.io/frinx-odl-distribution/oxygen/user-guide/architecture/components.html. As for the new technology stack, it is a much less restrictive C++ codebase under Facebook’s magma project: https://github.com/facebookincubator/magma that is part of their connectivity effort: https://connectivity.fb.com/.
Here are some of the issues we’ve been able to address so far:
There are more improvements we have been able to implement in our solution so far and there are definitely more to come. Some were known before and others have been identified thanks to a new technology stack and fresh team members. We’ll keep you in the loop on the lessons learned that we’ll pick up on our journey.