Thoughts on code development, access technologies, and telecommunication networks from developers within ADTRAN’s R&D organization.
ARCHIVED BLOG POSTS
Written by:Nathan Alderson - @nathanalderson
Jonathan Hood - @jonathan_hoodPublished: 31 October 2016
*Note: Introducing Firefly Part I - Two Scale Problems is PART I of this blog series.
No hurts. With respect. Be responsible. Have fun.
These represent the full extent of the family rules in the Alderson household. With two adults, two teenagers, and two youngsters living in one house, conflict is inevitable. However, rather than attempting to enumerate the infinite list of behaviors we do and don't want from our children (and ourselves!), we instead choose to focus on a few key ideas and let the rest flow from there. Brushing your teeth and doing your homework? That falls under being responsible. Slamming doors? Let's try that again with respect. Pillow fight? Have fun (but no hurts)! The point is, these four rules aren't really rules at all–they're more like guiding principles.
In a previous post, I introduced Firefly as our microservices cloud platform. I described how we faced two separate scale problems, and those drove us to certain architectural decisions. I also described some technology choices we had made. Underlying all of these decisions, however, are a set of principles and thought processes, along with a whole lot of study and prototyping. When we began the Firefly project, Jonathan and I felt that it was important to capture these thoughts explicitly. Since then, we have continued to review them periodically, and we have indeed found them valuable in steering our ongoing design processes.
We don't claim that the concerns listed here are exhaustive, or that they won't change over time. We also realize that engineering is often the process of balancing competing concerns. By making the following assertions, we are stating that we will strive to emphasize and prioritize solutions which align with these principles.
First, there are some fundamental principles that we have identified that have driven our architectural decisions:
These principles lead to some basic design decisions:
These same principles also imply some things about the interfaces we present:
For a while–I kid you not–my family had to outlaw the word "sure." One of my boys seemed incapable of uttering that particular word without infusing it with potentially toxic levels of sass. "With respect," therefore, got clarified as a complete ban on that one colloquial adverb. Eventually, of course, he moved on and found new ways to sarcastically express his disapproval, so that rule got dropped and replaced with new clarifications of what speaking with respect does and does not entail.
Similarly, while our architecture has morphed and our technology choices have shifted as the Firefly platform has evolved, these guiding principles have remained remarkably unchanged. We continue to clarify them in light of new design patterns, new customer requirements, and new technologies. Eventually, some of these principles might even be modified. By clearly stating our vision for the system, however, we have been able to facilitate the rapid development of an industry-leading software platform that's enabling communities and connecting lives.
Archived Blog Posts