title: what are best practices for health checks?
body: <p>We have a REST API. Right now our <code>/health</code> makes an <em>smoke test</em> on every dependency we have (a database and a couple microservices) and then returns <code>200</code> if there are no errors.</p>
  
  <p>The problem is that not all dependencies are <em>mandatory</em> for our application to work. So while a problem accessing the database can be critical, problems accessing some microservices will only affect a small portion of our app.</p>
  
  <p>On top of that we have Amazon ELB. It doesn't seem right to tag our app as <em>unhealty</em> only because one dependency is <em>unhealty</em>. ELB should only try to recover the <em>unhealty</em> dependency and with that our app will be <em>healty</em> again.</p>
  
  <p>Which leads to the question: what should we actually check in our health-check? because it looks like we shouldn't be checking for any dependency at all. On the other hand, it's actually realy helpful to know the status of our app accessing all its dependencies (e.g for troubleshooting problems), so is it common to use some other endpoint for that purpose (say <code>/sanity</code> or <code>/diagnostics</code>)?</p>