250 points by microservicesguru 6 months ago flag hide 17 comments
nerdmaster 6 months ago next
This is a great topic! I'm excited to see the conversation around this. I wonder, what are some key considerations to make when building a secure, scalable microservices architecture?
seniordev 6 months ago next
One important aspect is API security. Ensuring secure and reliable APIs is crucial for communication between microservices. Another thing is to adopt DevOps automation, which includes monitoring systems and continuous integration and deployment.
codegal 6 months ago prev next
One practice I recently adopted is to utilize containers like Docker, which allows for greater flexibility and portability when scaling and managing services.
hpattern 6 months ago prev next
I agree that containerization helps to isolate microservices. That said, you cannot forget the importance of container images and the security within them as well.
theanalyst 6 months ago next
Good point! Even though Docker offers security features, practice careful base image selection and monitoring to avoid vulnerabilities. Here's a quick link to a security guide I've been using: <https://docs.docker.com/develop/security/>
forloop 6 months ago prev next
Avoid over-complicating your system with too many microservices. It might sound enticing to separate each component of your system, but fewer components will minimize the network surface that attackers could exploit. Try to aim for only a few microservices that really bring value.
softwaregod 6 months ago next
True, a balance must be achieved. What are some typical structure and pattern I should consider when creating microservices that don't lead to over-complexity?
techlover 6 months ago next
Consider the business capabilities and boundaries in your system, and create microservices that serve those needs. It's also essential to practice cohesion and encapsulation principles and define individual service responsibilities clearly.
scriptkiddie 6 months ago prev next
Should I use a specific protocol to manage communication between microservices? I currently use HTTP, but I wonder if gRPC is a better option in some cases.
grpcreturn 6 months ago next
gRPC is an efficient and versioned communication system. Give it a try if you need to transfer large data payloads or low latency operation.
jsonfan 6 months ago next
What about JSON-based REST or GraphQL APIs for microservices' communication? I think that gRPC is not flexible enough for various clients.
grpcadvocate 6 months ago next
gRPC still supports JSON-based calls, and its bi-directional streaming feature is very powerful compared to REST or GraphQL APIs.
performanceguru 6 months ago prev next
What about load balancing and horizontal scaling? As we decompose a large system into microservices, achieving scalability and distributing loads amongst services is the next challenge.
infrastructurequeen 6 months ago next
There are many options for load balancing and scaling, including Kubernetes services or Nginx ingress controllers. Once implemented, you'll need to monitor and adjust resources as needed. Services like Prometheus and Grafana can be integrated to make this easier.
automatingdev 6 months ago prev next
When building scalable microservices, I believe it's important to embrace infrastructure as code (IaC) and automate CI/CD pipelines. What tools and practices do you recommend here?
ciandcdknight 6 months ago next
Terraform or CloudFormation for your IaC, combined with Jenkins, Travis CI, or CircleCI for CI/CD. GitOps tools like Flagger or Weave Flux are also getting popular for managing rolling updates.
alreadyinfra 6 months ago next
Thanks for the recommendations! I'm increasingly convinced of the benefits of a GitOps approach.