Microsserviços, por que é útil para mim?
- #.NET C#
Arquitetura de Microsserviços
Imagine que você entra numa empresa, abre a IDE, clona o repositório e se depara com um turbilhão de páginas com nomes diferenciados, e mais subpastas, que levam pra outras telas e nessa altura do campeonato, já se perdeu no labirinto do fauno. Bom, a intenção desse humilde artigo é lhe dar um norte sobre conceitos introdutórios à arquitetura e saber trilhar pelas pastas desse "labirinto" com uma bússola precisa. A intenção é preparar o terreno para tratar sobre CQRS num artigo futuro.
Na área de TI, a gente enfrenta sempre aquele dilema do "tudo depende". E não é mentira. Tudo depende mesmo. Depende da sua solução proposta, das ferramentas, da complexidade, se uma arquitetura monolítica ou em microsserviços. Hoje não quero fazer uma comparação, mas explorar a eficácia da que separa o domínio do negócio criado em bloquinhos. Nessa altura do campeonato, é interessante que você já tenha passeado nos conceitos de comunicações assíncronas e síncronas, APIs, protocolos HTTP.
A intenção dos Microsserviços é desacoplar, segregar, distribuir (e, consequentemente, complexar, porém, trazer robustez) ao projeto. Ela é composta por um conjunto de padrões (rede, infra, db, etc) funcionando particularmente, mas, se comunicando como um todo. Numa visão macro, isso ajuda em manutenção, pois nem preciso parar todo o projeto (se fosse monolito, passaríamos por esse perrengue), independência, agilidade no dia a dia.
Dividindo para conquistar
Essa arquitetura quer descentralizar a responsabilidade dos dados. Tudo funcione individualmente, sem ACID's Transactions. Cada divisão funciona de acordo com seu contexto. Vale a pena salientar que, apesar das vantagens, a complexidade aumenta, seja na resolução de problemas, logs e por aí vai... Por isso que jajá sairá um artigo sobre CQRS. É como se o código fosse a comida, e o CQRS fossem os talheres para degustar dele com mais eficiência.
E um artigo lido, li a seguinte frase: "A independência contribui para agilidade, trazendo maior liberdade para reagir rapidamente a mudanças e tomar decisões".