Software Engineer IBM June 2017 – May 2018
I worked to improve our users’ experiences while using the IBM Cloud Container Service. I helped build and maintain a metrics and log-forwarding service, a Kubernetes Dashboard proxy, and various other internal services.
Throughout my experience in this role I strove for high code readability, test coverage, and service robustness to deliver top-notch experiences for our users. Our services have had strong positive feedback for ease of use and reliability.
We have had negative feedback, of course, so we tackle these issues promptly. Typically we can address the customer’s issue within one or two 1-week sprints. For important changes we have pushed out code changes the same day. To double-check ourselves, we also run automatic integration tests on all changes along the way to production.
The metrics and log-forwarding service captured various stats and logs generated in a customer’s Kubernetes cluster, then forwarded them to the IBM Log Analysis and Monitoring services by default. We picked up the service in its proof-of-concept stage and completely revamped it to fit newer features and our rigorous quality standards to run in production.
I created a new continuous integration pipeline for the service. The pipeline automatically ran tests, style checks, and linters to catch bugs as early as possible.
I completely rewrote how it configured the forwarding agent to support dynamic config generation, which paved the way for easier feature additions and better user experiences. Some of the major features I added included the ability to send logs via syslog, automatically parse JSON container logs for structured log support, and send logs to multiple endpoints. In fact, I wrote a blog post to help users send their container logs to their own syslog server.
Finally, I helped prepare the Kubernetes Dashboard Proxy service for production after it had reached its first stage of MVP. I added monitoring, alerting, and improved the user experience for our each of our failure modes.