Bringing the Rubi to the Rubix-Kube
Intro to Rubix-Kube
Let’s start with a background check.
Rubix-Kube (a.k.a. rubix) is a Xandr framework that creates custom test environments called EZEs and deploys them using Kubernetes. If the terms above sound foreign to you or if you would like to know more about the tools mentioned, I recommend checking out the following resources:
Have you filled your cup of curiosity? Good. Let’s continue.
Test environments are great! Xandr EZEs are super great! Getting information about the EZE, on the other hand, not so great.
As useful as EZEs are, it is a major pain in the bottoms to figure out what settings the test environment was launched with. You need to either search through the rubix source code and do a mental merge of multiple template files or, launch the environment and run a couple of kubectl commands on the terminal. Pick your poison.
What’s with the Rubi?
Introducing Rubi-Kubi, the all-new advanced tech rubix cube that can change the world — wait, wrong script. Ignore the description.
Rubi-Kubi (a.k.a. rubi) is an intern project developed by yours truly to shed some light onto what applications and configurations that EZEs are being launched with. Users are able to look up “rubi reports” for a given rubix tag without having to launch the test environment.
The rubi report is a collection of metadata filtered from the configuration templates that the test environment would launch with. Rubi offers a user-friendly interface for users to search through and filter specific information from the rubi report.
Key Learnings
Rubi is written in mainly Golang and ReactJS. The back-end component handles data fetching and data processing while the front-end handles the user interface and user interaction.
Coming from a C-heavy background, learning Golang was a new experience. I would go so far as to call it controversial (What do you mean the variable name comes before the type? You can do that???) But once I got over that little pet peeve, I fell in love with the syntax. Now I think that all C languages should adopt the Golang syntax.
ReactJS was a different story, as I did have some prior experience working with React components before this internship; but a good amount of time had passed since then, so there was a lot to review. One challenge that I wrestled with was trying to figure out how to re-render a separate component that was not directly related to the component that was being updated. In the end, I decided to create a parent component that encapsulated the two components so that they did share a point of connection. That allowed me to transfer information between the two components using props and state. Quite the React-ive solution, am I right? Okay, okay, I’ll stop.
Conclusion
Choosing Xandr for my first internship was a life-changing decision. I learned so much during my time here and I really enjoyed the interactions I had with my manager, my mentor, my team, and everyone that I had the fortune to meet and connect with. What I like the most about my Xandr experience was the open and diverse culture here that really made me felt like this was a place at which I would be motivated and enjoy working at. This summer has been one of the best summers I have experienced (ignoring the fact that there was a worldwide pandemic and other concerning issues going on at the time).
Thank you Xandr — for the unforgettable experiences, the invaluable connections, and the chance to do what I love.
About the Author
Mong Ting “Jenny” Gao is a rising senior majoring in Computer Science at Stony Brook University, NY. Her interests include karaoke, horror movies, and games (especially games).