Barracuda Networks

bbs-890

In June of 2014 I began work as a Software Engineer for Barracuda Networks in their primary development office in downtown Ann Arbor. I worked on the Barracuda Backup Server product, specifically on the web/firmware team.

The server was controlled through a web administration interface, and changes made through that interface kicked off processes that ran directly on the server to manage backups, restores, notifications, and virtually all other actions. The web/firmware team was responsible for all areas of this interaction, so my duties were wide ranging from server and database management, software daemons written in PHP, server-side PHP for the admin interface, and plenty of JavaScript.

One of my biggest undertakings was overhauling the tremendous amount of JavaScript running in the admin interface. Several quirks of the system made common JavaScript and jQuery design patterns behave erratically at best, and catastrophically at worst. Unfortunately, so many hands had touched that JavaScript code base that dozens, maybe hundreds of different work-arounds have been put in place to mitigate these issues. This had given the JS a structure that could probably best be described as “hacks-on-hacks-on-hacks”. I established a few solid design patterns that reliably prevent the issues caused by Barracuda’s site structure, and I emphatically enforced these patterns on other developers who work on this code base. Bit by bit, the JS became cleaner and easier to manage.

I also had the chance to build out some fairly major features, the most important of which was the initial launch of the Cloud to Cloud backup platform, allowing customers to make granular backups of their Microsoft Office365 data onto the Barracuda cloud. I was responsible for integrating Office365 into the existing backup platform as a new data source type. This meant creating adapter layers at varying points in the application that would allow existing systems to interface with the new source, as well as creating authentication mechanisms that would allow Barracuda’s systems to access user data from Microsoft on demand.

In addition, I worked on a series of smaller features, the technical details of which I’ll skip because they tend to relate very closely to the inner workings of the backup system, which is of course proprietary and property of Barracuda. Some hurdles involved in the development of these features include integration with 3rd party APIs, optimizing data retrieval and filtering between SQL queries and code, and extending the object-oriented PHP MVC framework with new classes and inheritances.