Designing a Microservices Architecture for Failure

The Risk of the Microservices Architecture

Graceful Service Degradation

One of the best advantages of a microservices architecture is that you can isolate failures and achieve graceful service degradation as components fail separately. For example, during an outage customers in a photo sharing application maybe cannot upload a new picture, but they can still browse, edit and share their existing photos.

Change Management – Rolling Deployment

Health-check and Load Balancing

Modern service discovery solutions continuously collect health information from instances and configure the load-balancer to route traffic only to healthy components.

Self-healing

Failover Caching

Retry Logic

As a retry is initiated by the client (browser, other microservices, etc.) and the client doesn’t know that the operation failed before or after handling the request, you should prepare your application to handle idempotency. For example, when you retry a purchase operation, you shouldn’t double charge the customer. Using a unique idempotency-key for each of your transactions can help to handle retries.

Rate Limiters and Load Shedders

Fail Fast and Independently

Bulkheads

Circuit Breakers

Testing for Failures

Outro

Key Takeways

https://blog.risingstack.com/designing-microservices-architecture-for-failure/

Cloud Trends by Adrian Cockcroft

https://gotoams.nl/2017/sessions/190

Migration Sequence (from on promise to cloud)
https://youtu.be/EDZBYbEwhm8?t=1109

The new de-normal
https://youtu.be/EDZBYbEwhm8?t=1300

Adrian Cockcroft on The New De-Normal – Untangling “Kitchen Sink” Database Schemas
https://youtu.be/Y6nKD-sK6tg

APIs in a Microservice Architecture

Microservices are revolutionizing how organizations build their enterprise architectures. We have spent a good couple of years talking deeply about APIs and their benefits, and understanding how APIs fit into an enterprise. The core benefits of disintegrated architectures can only be reaped if the system as a whole, including APIs, services, CI/CD processes, and development practices are designed with these objectives in mind.

With the rapid adoption of microservice architectures (MSA), the designs for securing, controlling, and monitoring our APIs have to be rethought and adjusted to reap the core benefits of an MSA.

During this webinar Nuwan will discuss,

  • The impact of MSA on your API strategies and designs
  • Possible changes in API design and deployment, API security, control and monitoring, and CI/CD

https://wso2.com/library/webinars/2018/09/apis-in-a-microservice-architecture/

Enterprises Are Embracing Microservices and Node.js

6 Main Reasons Why Node.js Has Become a Standard Technology for Enterprise-Level Organizations
https://www.monterail.com/blog/nodejs-development-enterprises

Why Enterprises Are Embracing Microservices and Node.js
https://thenewstack.io/enterprises-embracing-microservices-node-js/

Microservices Transaction

Arquitetura de serviços x Transação distribuída
http://pangeanet.org/forum/topics/arquitetura-de-servi-os-x-transa-o-distribu-da

Consistência de dados em Micro serviços usando Sagas
https://www.infoq.com/br/news/2018/04/data-consistency-microservices

Data Consistency in Microservice Using Sagas
https://www.infoq.com/presentations/saga-microservices

API Gateway vs API Manager

API Gateway
API Gateway cria um ponto único de acesso, filtrando quem acessa suas APIs. Considere um API Gateway como uma ferramenta para redirecionamento e filtragem de tráfego de terceiros.

API Manager
Este tipo de produto de fornece uma camada de gestão para API Gateways. Além de definir o comportamento do API Gateway, o API Manager lida com análises de cada requisição, insight corporativos através das análises, implementação de controle de versão, criação de dashboard de acesso, possibilidade de monetização e etc.

Ainda não ficou claro? Então vamos nos aprofundar um pouco mais.

O que é um API Gateway?

A tradução para o português da palavra “Gateway” é Portão. A nomenclatura não é por acaso, já que este produto de API opera de forma semelhante. Essa Interface de Programação de Aplicação serve para filtrar os tipos de solicitação que vão acontecer com a API.

Essa tecnologia já é adotada por diversas companhias no mundo, e são disponibilizadas por diversas empresas. Veja algumas funções de API Gateway:

  • Ponto único de acesso à todas as APIs, se colocando entre suas APIs e seus respectivos usuários.
  • Filtragem de dados na entrada, podendo redirecionar o chamado à API para o local correto, baseado nos mais diferentes parâmetros de entrada, e, até mesmo, ignorar a requisição caso seja desejado, sem levar tráfego à sua API. É o sentinela do seu portão.
  • Mecanismos de segurança, que incluem autenticação de usuário e logs de acesso.
  • Limitação de acesso baseada em usuário, que permite limitar o acesso do usuário a determinado recurso baseado nas mais diversas premissas, como números de requisições no mês ou nos últimos 10 segundos.

Essas funções presentes no API Gateway permitem as mais diversas vantagens para as empresas que os adotam. Um único ponto de acesso, por exemplo, significa uma redução de esforço em administrar as “portas de entrada” dos seus serviços na web, podendo focar seus esforços em único local.

Além disso, a combinação das outras funções do gateway citadas nos tópicos acima, permite que todo esse tratamento seja realizado fora da sua API, reduzindo a complexidade da mesma. Isso proporciona a redução de custos em mantê-las no ar, abrindo portas para o desenvolvimento de ainda mais APIs.

Para reduzir ainda mais o custo de expor diversas APIs no ar é comum que API Gateways unifiquem o acesso a APIs internas, quer sejam oriundas de sistemas legados ou de micro-serviços mais dinâmicos. Para implementar micro-serviços recomendamos a utilização do Docker, sobre o qual você pode saber mais no artigo Por que você precisa adotar Docker agora mesmo.

E o que é um API Manager?

API Manager é um software que implementa uma camada de gestão sobre um API Gateway (ou mesmo embute dentro de si o API Gateway), incluindo recursos para facilitar o seu gerenciamento e possibilitando a visualização de dados de negócio. Isso proporciona a geração de estatísticas de uso, gerenciamento de ciclo de vida da API, dentre outros vantagens.

Além das funções do Gateway, o API Manager pode oferecer as mais diversas possibilidades com o intuito de alavancar seu conjunto de APIs:

  • Insights corporativos das APIs através de Dashboards.
  • Controle do ciclo de vida das APIs.
  • Prototipação de API, versionamento das APIs.
  • Possibilidade de monetização das APIs.