“When serverless is fully baked, it will have a huge impact on DevOps”
Bug reporting is more important than ever. In this interview, Sam Kaufman, founder and CTO of BugReplay teaches us how to make bug reporting easier and talks about what’s next for containers and serverless.
JAXenter: What role does bug reporting play in the Software Development Life Cycle?
Sam Kaufman: After a software release where a significant part of the code changes, generally some new bugs will be introduced. When the release is seen by users, there’s a risk that a new problem is going to impact one or more of them. If a user notices an issue, it is imperative for a software company that they report it to you as fast and accurately as possible. The faster a company can diagnose, fix, test and release a software patch, the lesser the negative impact of a problem with your software.
Bugs are usually not really a thing companies like to dwell on, because everyone wants to think their software is perfect but, from a user perspective, the customer service experience of reporting an issue and having it repaired in a timely manner is incredibly important and leaves a lasting impression. Consumers don’t forgive easily, if at all when it comes to the performance of websites and web apps, so it’s by no means a stretch to say that bug reporting is more important today than ever. The key question is: How can we make the process less painful for both parties involved?
I think there are clear-cut ways to make bug reporting easier. For the user, they want to see a place to report a bug. Don’t make them search high and low for a contact link. Put something obvious in the header or the footer. When it comes to actually filling out a bug report, a lot of the questions we need answers to in order to fix a problem can be automated. For web applications, most major browsers now come with powerful diagnostic utilities built right into the browser.
We built our BugReplay tool to easily capture that key information, and it plugs right into the browser and records a video along with all the data streams that a developer needs to fix an issue – network traffic, browser console errors and logs – so a non-technical user can send you a detailed report.
JAXenter: Is Agile a double-edged sword when it comes to bugs?
Sam Kaufman: Yes, absolutely. Companies adopt an agile methodology because they are frustrated about how long it takes to ship software. Agile is great for getting releases out faster by dispensing with traditional long phases of extensive documentation and hyperspecialization of roles.
Developers and testers are generally not handed a manual of exactly how everything is intended to work, which makes testing a lot more holistic. Without documented behavior for every single element, and with the tight deadlines agile generally implies, there is no way to fully test software releases. With a medium- to large-sized software project, bugs will no doubt be introduced with each release. On the plus side, agile methodology means that finding critical bugs and fixing them happens much faster. An agile shop can pivot quickly to narrowly focus on an important issue and work in tandem to get a fix out ASAP.
JAXenter: What are your DevOps predictions for 2018? What should we pay attention to?
Sam Kaufman: Expect more and bigger security problems in the coming year. With security researchers and security research tools becoming ever more sophisticated, security through obscurity is not really a defense anymore. Look for faster and easier ways to keep underlying systems secure and up-to-date.
Container and orchestration tooling are still very new, so while interest will continue to grow, I still see a lot of companies hesitant to rely on tools for systems that change so rapidly.
JAXenter: Containers (and orchestration tools) are all the rage right now. Do you think people’s interest in containers will grow this year?
Sam Kaufman: Although adoption of containers is growing, the real use case for them is reproducible architecture and separation of concerns, which can be accomplished in other ways. I think container and orchestration tooling are still very new, so while interest will continue to grow, I still see a lot of companies hesitant to rely on tools for systems that change so rapidly.
I personally have used Docker for Mac on my laptop and in production on a Debian system, and on the Mac I still see a lot of strange bugs which are usually “fixed” by restarting Docker or taking other drastic measures. That’s, of course, to be expected because the software is still pretty new and incredibly complicated, but it will keep away more traditional and conservative ops people until it’s as stable as a traditional system.
JAXenter: How do you think serverless will change in 2018? Will it have an impact on DevOps?
Sam Kaufman: I see serverless options continuing to grow as the cloud offerings by Google, Amazon, Microsoft and IBM continue to improve. When it is fully baked, it will have a huge impact on DevOps because you won’t have to maintain the underlying server.
The unfortunate impact of DevOps is that more service-specific software tooling needs to be written to handle, monitor and alert on different cloud platforms. While it’s amazing that you can run software and leave the server maintenance to a giant platform that has expertise in managing the servers, you still need to write tools to communicate with the platform service or rely on other tools or SaaS companies to do that for you.
JAXenter: Could you offer us some tips & tricks that you discovered this year and decided to stick to?
Slack Alerts: This year I really focused on improving some monitoring and alerts, especially on Amazon. Using Slack (or any Slack-like product) you can create a webhook to alert or log to a channel and change your notifications to ping you when anything hits that channel. While the same thing is possible with email, you’d be surprised at how complicated email delivery really is. Getting all notifications in Slack has vastly improved my response time and service uptime.
Structured Logging: Structured logging allows you to really slice and dice and alert on your logs in an extremely powerful way and forces you to think a lot more about what and when you log. (I wrote about this at the end of 2016 on my blog but didn’t really get fully into it until this past year.)
Vim 8.0: If you are a Vim user who has any sort of linting or error checking plugins, you may notice that Vim will freeze up a lot the larger your project gets. Vim 8.0 has asynchronous capabilities and, with ‘Ale’ (Asynchronous Lint Engine), all that freezing up is now gone. This works so well that I can’t go back to earlier Vim versions anymore.