Building Resilient Microservices: Best Practices for Fault Tolerance and High Availability