Hey all,
We have been having some issues with our applications (and processes inside of the applications) failing or stopping at inopportune times.
What are some of the best tools to help with application stability, uptime, and debugging?
We are currently using Node.js, and React. Any help is appreciated.
Have you already get error reporting in place? If not that's going to be your number 1 improvement. I use Sentry and have always had a good experience with it (and the free tier is super generous - should be all you need).
Other than that, if you're having infrastructure issues as opposed to code issues you're going to want a monitoring solution. I'll leave others to suggest what's best there as I'm less experienced on it.
Hi Grey,
Thanks for the reply. I should have been more specific, as it seems to be related to running processes stopping (for example RabbitMQ).
Therefore I would want something that could:
Automatically restart the process
Give good logging for the reason it stopped in the first place
Give a notification that it stopped (so we can know something went awry
Hope this helps.
Thanks for the Sentry recommendation! I've never seen the service before, but it looks very promising!
From a Developer/Architecture perspective:
Analyze for bottlenecks/performance issues (Do you have CPU/Ram/IO spikes or in general a high utility)
Analyze for possible deadlocks and timing issues if you work with multiple threads.
Improve logging and error handling
Improve resiliency and fault recovery
Depending on your analysis there are a lot of things you can do to improve the situation. Most of the time the solution will look something like this:
Scale horizontally or vertically
Improve error handling and fault recovery
Improve performance
For specific solutions we need more information.
Bugsnag and New Relic have been useful in the past for me
Sentry, bugsnag, or new relic depending on your needs. Also if you have any more details would be happy to help.
No silver bullets here. Software quality comes from many things, but if you are already experiencing issues the fastest and cheapest thing to do is to upgrade to bigger servers to get more resources to make your apps smoother (if it's a server problem).
If you have problems in your client app, you need to take standard debugging tools (e.g. chrome dev tools) and start checking for bottlenecks. Write more tests. Reduce number of features to make the complexity more manageable in code. Stop making absurd deadlines that only force developers to make shortcuts and produce technical debt; promote craftsmanship and quality over quantity.
On team level you want to have enough seniority in your developer team. Ten juniors do worse job than one senior, while they can have the same cost.
On architecture level there's serverless infrastructure available in many providers (e.g. AWS Lambda and Google Cloud Functions) that can scale up automatically. This can be one solution for scaling problems, but it's not a silver bullet either and has its downsides too. Also docker-based services can be relatively easy to scale up nowadays if built correctly.
It was a broad question, so you got a broad answer :D If you have some more specific information, it can help to narrow down the possibilities.