Como fazemos Sistemas!

postagem de conteudo sobre programação web
Post Reply
User avatar
FranciscoRamonsp
Admin
Admin
Posts: 8
Joined: Sat Mar 07, 2015 7:14 pm

Como fazemos Sistemas!

Post by FranciscoRamonsp » Fri Jul 21, 2017 11:17 pm

Quando aceitamos um projeto, surgi várias dúvidas relacionadas a como ele deve ser feito, falando do nível de arquitetura isso é sempre um problema um tanto complicado de ser resolvido, uma vez que sua escolha refletirá no tempo de vida do projeto, temos por base dois grandes jeitos de se fazer um sistema, ele pode ser "Monólito" ou "Micro Serviço", irei fala um pouco sobre cada um deles, para isso vamos imagina que você tenha um sistema de RH complexo, onde os funcionários tem uma comunicação de chat interna, um sistema de folha de pagamento, ponto eletrônico, gestão de cliente, entre outra funcionalidade comum em um sistema de RH.

Monólito: trata-se de um sistema cujo todas as ações estão ligadas entre sim de forma direta, ou seja, o mesmo sistema é responsável por tudo, sistema em sim é somente um único programa.

Contras:
  • Uma vez que todas as funcionalidade estão ligadas pelo mesmo sistema, em caso de erro de alguma parte do sistema, indiscutivelmente a outras funcionalidades seram afetadas.
  • Manutenção se torna desnecessariamente complexa, como se tem muitas linhas de código no programa a chance de que você se perca é grande, e a chances de causa um bug durante uma correção se torna maior.
  • Difícil evolução, caso você queria adiciona alguma funcionalidade isso pode altera o seus escopo de trabalho, dando mais trabalhos para evolução do sistema
Prós:
  • Fácil montangem, por ser um só sistema tira a complexidade de preparação de vários ambientes
  • Reduzi a redundância de código, uma vez que todo o código pertence ao mesmo fragmento do sistema, não é necessario criar partes iguais, o que se torna comum em microserviços.
Microserviços: trata-se de um sistema que é feito com base de sistemas menores, com base no exemplo do Sistema de RH seria como ser existe um pequeno sistema para Folha de pagamento, um para o ponto, outra para a gestão de clientes e etc.
Contras:
  • Montagem complexa, exigi um cuidado maior com o ambiente em que cada microserviço rodará, pois muitas vezes cada serviço exigi uma configuração prória
  • Maior redundância, muitas vezes teremos que escrever códigos muito parecidos para representa uma parte comum entre os microserviços.
Prós:
  • Maior tolerância a erros, uma vez que da parte do sistema está funcionando de maneira independente, se o sistema de Folha de pagamento falha, os outros serviços continuaram funcionando sem gera problemas.
  • Simples Evolução, caso seja preciso adiciona nova funcionalidade ao sistema, seria necessario em tese apenas criar um novo microserviço e linka-lo com o sistema, tornando a evolução do sistema mais natural
  • Simples Manutenção, caso algo dê errado em alguma parte do sistema é mais simples encontrar o erro, pois o mesmo encontra-se isolado.

Costumamos dizer que cada arquitetura tem seu momento, conhece o ponto fraco da estrutura que você escolheu, é importantíssimo, uma vez que é isso que vai fazer com que você se livre das armadinhas que podem lhe surpreender no futuro!
Salaam Aleikum

Post Reply

Return to “Programação Web”