O que é design de prática recomendada para tráfego interno entre microsserviços?

1

Eu tenho dois microservices escritos em PHP A & B. Endpoints são a.example.com e b.example.com. Ambos os serviços precisam ser acessíveis ao público. Além disso, o serviço B faz muitas solicitações de curl para a.example.com durante o processamento.

Ambos os serviços estão sendo executados no mesmo AWS VPC (dentro da mesma rede privada). Eu também tenho um CDN externo (por exemplo, Akamai) para cada endpoint.

Design 1:

Public and Service B make requests to A
                 |
                 V
           a.example.com
                 |
                 V
                CDN
                 |
                 V
        Public Load Balancer
                 |
                 V
      Web Servers for service A
  • Maior custo porque mais custo de largura de banda da AWS
  • Mais proteção ao serviço A como está por trás do CDN
  • Tempo de resposta do serviço B mais lento conforme o tráfego sai para a nuvem e volta para

Design 2:

     Public makes requests to A        Service B makes requests to A
                 |                                  |
                 V                                  V
           a.example.com                 a-internal.example.com
                 |                                  |
                 V                                  |
                CDN                                 |
                 |                                  |
                 V                                  V
        Public Load Balancer              Internal Load Balancer
                 |                                  |
                 V                                  V
              Web     servers       for      service   A
  • Tempo de resposta do serviço B mais rápido, pois o tráfego está dentro da rede privada
  • Menor custo de largura de banda, pois o tráfego está dentro da rede privada
  • Um risco do serviço A pode ser destruído pelo serviço B
  • Custo extra para o balanceador de carga interno adicional
  • Complexidade de manter dois a. e um interno. endpoints

Pergunta , Esses projetos estão corretos para interconexões de microservices? Se não, qual é o design comum para interconexões de microservices?

Pergunta de bônus , é um DNS dividido (por exemplo, zona privada do AWS Route 53) um bom caso de uso se eu quiser manter o endpoint único a.example.com em vez de dois (a. & a-internal.).

    
por starchx 29.08.2017 / 08:14

0 respostas