How do you design and implement zero-downtime deployment strategies such as canary or blue-green for a microservices application?