What do you like best?
This really is a tool for ops automation at the larger scales. Every resource is versioned and labels / notification of changes can be attached to AWS natively, or externally via hooks. There are some finer-grained controls for rolling deploys, and being able to programmatically enable deployment groups — this was a big deal for us, in planning to roll-out in high use environments. It was a lynchpin to doing staged CD via CodePipeline.
What do you dislike?
This tool is rather dependent on CodePipeline and other AWS systems, so you're paying to integrate with it all, or using something else. As such, the docs and all related discussion about one gets confounded with the other. This is a pain when Onboarding new people. Since there is no strong UI (being a programmatic tool) visualizations of the overall system could be better — or you'll self-support. Many times, we are looking at other tools to best-see the state of the overall systems (like NewRelic or Ruxit, etc)
Recommendations to others considering the product
Remember that this really works in conjunction with other tools, and less standalone.
What business problems are you solving with the product? What benefits have you realized?
I have used this tool in several cases. One is to deploy a platform (several, multi-application suites, with interdependencies) that has 5 environments for each app. Deployment was a bookworm nightmare prior to a deployment management system.
The other main case is where we operated a system that was high-load, and he resource version at each stage of routing was very important in debugging cache dynamics.