One of the challenges of building solutions for smaller companies is that your client doesn’t generally have an internal IT staff to accept a “hand off”. This means that (1) the solution needs to work reliably without unhandled issues, and (2) any issues that do arise need to be addressed without waiting for someone internally to notice the problem.

The solutions I’ve built for my clients have hundreds of tasks that run automatically anywhere from once a minute to monthly. At first I had the tasks send me an “all good” email in addition to any notifications generated from error conditions. This quickly got out of hand and required me to spend time every day filtering through the “all good” emails to find any alerts.

The solution I found was to build a system based on a heartbeat concept. Tasks are setup to send my system a heartbeat notification each time they complete successfully. I have monitors defined with parameters such as how frequently I should get a heartbeat. Now I just receive notifications whenever a process has not sent a heartbeat when expected. This might be due to a server outage, internet disruption, or application error.

Skills: Web development; Database design and administration

Tools: ASP.NET MVC, MS SQL Server