Skip to content

Instantly share code, notes, and snippets.

@candidosouza
Last active June 8, 2022 11:14
Show Gist options
  • Save candidosouza/0c84cf72229b77e060c104caf711875d to your computer and use it in GitHub Desktop.
Save candidosouza/0c84cf72229b77e060c104caf711875d to your computer and use it in GitHub Desktop.
Fundamentos da arquitetura de software

Fundamentos da arquitetura de software

01 - Características Operacionais

processos operacionais de software

  • disponibilide Quando o sistema vai ficar no ar, qual disponibilidade o sistema vai ter

  • recurperação de desastres Como fazer se o sistema ficar fora do ar? O que vou fazer se o sistema ficar indisponível? Como vou agir? Como vou fazer para recuperar? O que vou fazer para que o problema não aconteça novamente? ter processos para evitar

  • perfomance latência: velocidade que as ações vão ocorrer capacidade de receber requisições qual performance eu quero ter em meu sistema? quanto de performance os sistema precisa ter para suportar?

  • recuperação (backup) como será feita o backup do seu software? testar o backup periódicamente em redes separadas

  • confiabilidade / segurança qual tipo de segurança seu sistema precisa ter?

  • robustes o sitemas está confiável o possível para escalar?

  • escalabilidade o sistemas tem poder para escarlar? verticalmente - o poder do recurso computacional nas maquinas hozontalmente - adionar mas máquinas trabalhar de forma stateless trabalhar com os 12 fatores - heroku kelvin factory = https://12factor.net/ sua aplicação tem que permitir que seja rodada em um ambiente escalável

02 - Características Estruturais

processos de desenvolvimento de software

  • configurável de fácil configuração, usando variáveis de ambiente

  • extensibilidade crescer de forma que pacotes seja instalados com fácil configuração não ficar reféns de vendors e novos módulos sem refatorações

  • fácil instalação quando criar ambientes, deve ser de fácil instalação padronização de ambiente com docker (CONTAINERS) de fácil configuração

  • reuso de componentes

  • internacionalização front, tomar cuidado para não quebrar o layout na conversão de lingua back, cuidar de moedas, erros e acertos, etc...

  • fácil manutenção use solid camadas e adaptadores testes

  • portabilidade (diversos bancos de dados) ser de fácil mudança de vendors

  • fácil suporte (logs, debugging)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment