Describe your experience implementing microservices. How do you handle service-to-service communication and distribute transactions safely?