This document discusses best practices for CI/CD pipelines for microservices. It describes how Expedia moved to microservices and the issues they faced with too many complex Jenkins pipelines that were not modular or reusable. The document recommends using reusable Docker images for CI/CD tasks instead of shared libraries. It also recommends validating deployments using canary deployments. Codefresh addresses these issues by using container-based and shared pipelines that are customizable through context. The pipelines are composed of reusable Docker images rather than being monolithic or relying on proprietary APIs.