People do microservices (read: an API spread across multiple processes), but then make all of the mistakes that logically couple the service deployments together. They use shared databases instead of one per service, make breaking changes to API schema instead of non-breaking or versioning, use a shared library of schema definitions instead of having each service define their own data objects for API calls, and have startup logic that depends on another service being up.