Does this story sound familiar?
Marketing’s having an issue with a mission-critical API. DevOps says there is no issue. After much research, Marketing was right – there is a problem. The API doesn’t always return the expected fields, and sometimes it takes so long to respond that the user app times out.
Is there any way to monitor the API and see if there is an issue?
“No problem,” says DevOps. “We’ll write a cURL script to do that.”
So someone in DevOps is assigned the task. It’ll only take a few minutes. OK, it took a few hours in the end. Getting the OAuth2 to work was trickier than it looked at first. But still it works now.
OK, actually no, it doesn’t. But that’s alright, we can fix that bug. It works now!
Can we get an email sent to someone in Marketing if there is a problem? Sure. And also some graphs? Sure. Export in CSV. Import into Excel. The business analyst can do a weekly report.
Oh, now we need to do some back-to-back tests to make sure that the output from one API really is the right input to the next one. Can you do that? Yeah. Another script.
It’s all getting a bit gnarly now with these scripts.
We probably should rewrite the whole thing in something a bit more maintainable. Like Ruby. Oh, but the DevOps person working on the new Ruby-based API monitoring system has left and the new person doesn’t know and after a few days trying to do it in Ruby has abandoned the existing code and rewritten it all from scratch in Python. Great!
Only it doesn’t export the output files in quite the right format. Could you fix the Python to give the old output format? Um, maybe?
Now the Marketing BA’s replacement has spent a few hours, or a couple of days, fixing the Excel to work with the new output.
Then, it turns out there’s a whole bunch of APIs that Logistics would like to keep an eye on. But these APIs use a fiendishly complex authentication scheme. And Logistics needs a bunch of completely different reports for Marketing.
And also the Logistics app is on mobile, so the monitoring system doesn’t give the kind of results they need. And can we have dashboard that integrates directly into the higher-level management system? Could DevOps just quickly knock up something along those lines? Yes, but the developer who wrote the Python system and has moved on and his replacement is more familiar with Ruby…
So the cycle continues ever on.
Think of the all the working hours that have gone into developing a project that it buggy, non-scalable, hard to maintain and feature-poor? It’s false economy not to use the best tool for the job and to try and reinvent the wheel.
If it’s API monitoring you want to do, it makes sense to go with a tool that has already had thousands of hours of developer effort, that has had those frustrating problems and gotchas identified and resolved, that is used by businesses large and small around the globe, that is under continual development and is feature-rich, robust, scalable and ready to use out of the box.