Imagine world where IT / Software systems do not require manual intervention to manage itself. Systems are self-sufficient. In case of disaster, systems are able to recover itself & resume services. Systems are able to detect what is not working, then self-heal / auto-heal / restore itself to designed state.
If some part of system can’t be auto repaired then system should also be able to detect it, work as a circuit breaker to isolate defective part of the system. Also make sure that rest of the system don’t get impacted and operate as normal.
Self-Healing Microservices Systems are a big step towards building such systems.
There are three levels of self-healing systems.
We capture problem either through exception or through logs. It is upto developers of each service to design in such a way that it can heal itself or recover from failure. Implementation of DevOps practices or Continuous Deployment process would be great help in the direction.
Systems are monitored through aspect of process failure and response time. If process fails, we need to restart the service or redeploy the service. If response time is not acceptable then we need to scale / descale the service.
Hard truth, we can’t self-heal hardware in case of hardware failure. We can redeploy the services to a healthy hardware / node. Or we keep monitoring the hardware and take preventive measure to scale hardware / infrastructure.
Microservices architecture, Container technologies and modern cloud (public/private) infrastructure are making possible to create Self-Healing systems.
If you just want to see Self-Healing demo and don’t have enough patient to watch full meetup event video. then jump to 1hr 26mins time or follow this YouTube link Self-healing Demo.
The full video:
It covers a lot of details including The 12 Factor Apps, Self-Healing, Docker, Microservices and Demo of Self-Healing Systems using Docker swarm mode.
Let me know your feedback or any question you have. Use comment section below or Twitter @ashishapy.