KNOWSIRIS

KNOWSIRIS

KNOWSIRIS is an internal Knowledge Base system that aggregates logging (SumoLogic), monitoring (New Relic), and cloud resources (AWS) for widgets (web components) to streamline development, aid in crisis response and gamify best practices. KNOWSIRIS was my intern project during my time at Dealer.com. 

FEATURES

The God OSIRIS

Dealer.com uses a component-based content management system called OSIRIS. This system consists of a series of components called Widgets that are each maintained and owned by different teams. Each widget has dedicated AWS resources, SumoLogic logging, New Relic monitoring, and a GitHub repository. As one can imagine managing so many different moving parts can get complicated. Knowsiris solves this problem by aggregating information on each widget and displaying it in a beautiful user interface. 

Reading JSON isn’t everyone’s idea of fun

Before KNOWSIRIS even finding out what team was responsible for any given widget was an arduous process that required signing into GitHub, finding the repository and reading a JSON file. This made it difficult to quickly resolve issues since tracking down the right people could take a while. Additionally, non-technical team members such as managers and executives often didn’t have access to the GitHub so they had no way to contact widget owners in the event of a live issue. Knowsiris uses the same authentication system as everything else in the company so anyone can find the information they need even if they aren’t an engineer. 

KNOWSIRIS allows users to quickly sort and filter widgets to identify problem areas. For example, searching for widgets lower than a given version allows developers to quickly identify out of date widgets that could cause issues in the future. Summaries of AWS usage and performance are displayed for each widget which further allows developers to spot problems and quickly find the resources they need. 

Quickly find the widget you are looking by sorting and filtering widgets

My background is in Game Programming so I added my spin to KNOWSIRIS by creating a leaderboard feature that gamified widget ownership. Gamification helps to motivate workers by encouraging friendly competition. Using information about widgets owned by each team KNOWSIRIS calculates a score that represents how well the team is following best practices such as keeping widgets up to date. Each team has an individual page that lists all widgets owned and provides personalized suggestions on how the team can improve their score. 

TECHNOLOGY 

Building KNOWSIRIS was an amazing learning experience. I had to learn to work with new technologies, languages and API’s all while getting my footing at the company. Building KNOWSIRIS taught me to solve my problems, as for help when needed and take feedback from stakeholders. 

Kotlin

KNOWSIRIS’s frontend is built in React and Bootstraps. I love the flexibility and speed of development that JavaScript provides. It communicates with a backend service written in Kotlin. Before this internship, I’d never used Kotlin but I am now a convert. The language is slick, feature-rich and a joy to write while still being fully backward compatible with Java. I believe it will be widely adopted in the coming years. 

SpringBoot

Knowsiris API uses WebFlux which is a new reactive system from Spring. It is more efficient than the old style of APIs. Although I initially found WebFlux confusing I was able to figure it out with the help of my wonderful mentors.

The backend used information from the the GitHub V3 GraphQL API. We decided that GitHub should be the source of truth for all widget information because previous attempts to create a knowledge base had resulted in out of date information that no one bothered to update in years. By getting all our information directly from GitHub we were able to make sure that it would always be up to date. It also pulled information from AWS SDK, Artifactory and New Relic.

CLOUD SERVICES

Near the end of my internship, I was so excited to finally get KNOWSIRIS online. I could hardly wait to post a link in the slack so everyone could try it out for themselves. But before KNOWSIRIS could go online I still had a lot of work to do. 

David and Scott, two engineers on my team and an all-around wonderful people agreed to help me get everything AWS set up. My first step was to terraform a Fargate service for KNOWSIRIS’s API. My first question was “What’s a terraform?”. As I eventually found out Terraforming is a process that automatically allocates AWS resources based on specifications. Writing a terraform is faster and more consistent then manually configuring each service. It also allows future developers to know exactly how things are set up when something goes sideways. 

Lucky we already had a Terraform file written for Fargate services so after some modifications, an afternoon of frustration and docker files it was finally working! I was almost jumping for joy!

The next step was to set up a CICD pipeline. While it was possible to manually upload files through the command line doing so would have been indifferent and tedious. Instead, we used Jenkens to compile whatever code was pushed to the repo, package it in a docker file and upload it to AWS. After a few days of debugging it finally started working. 

Next, we had to write terraforms for S3, Route 53 and Cloudfront. Que more debugging and plenty of googling. Eventually, we got KNOWSIRIS online. 

RESULT

Once KNOWSIRIS was live I was able to share it with other people who gave me amazing feedback that helped me improve the product. At the intern showcase, I presented my project science fair style to over 60 people and received very positive reactions. 

Working at Dealer.com was an amazing experience and I am so grateful to everyone on Team Syntropy and in the Web Platform release train for taking time out of their schedules to teach, and mentor me. Everyone was working hard and busy but they always took the time to laugh, have fun and help me become a better programmer.

Dan, David, Scott, Andy, Keth, and Monti are all amazing humans and great mentors.

Intern Event where we built bikes to donate to the King Street Youth Center