Microservice design with Kubernetes - API gateway, communication, service discovery and db issues

8/5/2018

Recently I have been researching about microservices and kubernetes. All the tutorial and article I read online talks about general staff. I have several specific questions about building a microservices app on kubernetes.

  1. API gateway: Is API gateway a microservice I built for my app that can automatically scale? Or is it already a built-in function of kubernetes? The reason I ask is because a lot of the articles are saying that load-balancing is part of the API gateway which confuse me since in kubernetes, load-balancing is handled by service. Also, is this the same as the API gateway on AWS, why don't people use the AWS API gateway instead?
  2. Communication within services: from what I read only, there are Rest/RPC way and Message queue way. But why do people say that the Rest way is for sync operation? Can we build the services and have them communicate with rest api with Nodejs async/await functions?
  3. Service Discovery: Is this a problem with kubernetes at all? Does kubernetes automatically figure out this for you?
  4. Databases: What is the best practice to deploy a database? Deploy as a microservice on one of the node? Also, some articles say that each service should talk to a different db. So just separate the tables of one db to several dbs?
-- Hansen W
database
kubernetes
microservices
node.js
rest

1 Answer

8/6/2018

Is API gateway a microservice I built for my app that can automatically scale? Or is it already a built-in function of kubernetes?

Kubernetes does not have its own API-gateway service. It has an Ingress controller, which operates as a reverse proxy and exposes Kubernetes resources to the outside world. And Services, which load-balance traffic between Pods linked to them.

Also, Kubernetes provides an auto-scaling according to the resources consumed by Pods, memory usage or CPU utilization and some custom metrics. It is called Horizontal Pod Autoscaler, and you can read more about it here or in the official documentation.

Service Discovery: Is this a problem with kubernetes at all? Does kubernetes automatically figure out this for you?

Service Discovery is not a problem in Kubernetes, it has an entity called Services responsible for this. For more information, you can look through the link.

Your other questions refer more to the architecture of your application.

-- Artem Golenyaev
Source: StackOverflow