
raddar add raddar add O ano está terminando, e queremos compartilhar alguns destaques de notícias e momentos da add no…
Fonte: OutSystems
Autor: Francisco Menezes
Você já ouviu o ditado, “arquitetos odeiam espaguete?” Como arquitetos de software, é nossa responsabilidade conceber e projetar sistemas capazes de suportar os modelos de negócios implacáveis desta era. Nesse sentido, é fundamental desenvolver maneiras de evoluir nossa arquitetura de aplicativo para combinar conceitos e processos de negócios corretamente. Do contrário, a arquitetura não será estruturalmente sólida e teremos que lidar com uma terrível “arquitetura espaguete”.
Nesta postagem do blog, compartilharei algumas das melhores práticas que você deve seguir para construir uma arquitetura de aplicativo estruturada e escalonável, evitando transformar seus sistemas em uma tigela de espaguete. Este artigo é baseado em um TechTalk recente sobre o mesmo tópico, Web and Mobile Architecture with Architecture Dashboard .
Vamos começar?!
A arquitetura do aplicativo inclui todos os módulos e componentes do software, sistemas internos e externos e as interações entre eles que constituem um aplicativo. Uma arquitetura de aplicativo bem estruturada garante que seus aplicativos possam ser escalonados conforme as demandas de negócios, atendendo aos requisitos de negócios e usuários pretendidos, ao mesmo tempo em que garante que todos os conceitos sejam isolados corretamente e com dependências sólidas entre si.
Suponha que você ignore o lado da arquitetura dos aplicativos ao alterar e adicionar novos requisitos ao seu projeto de software. Você acabará ficando com uma arquitetura espaguete, um labirinto de sincronização e dependências não gerenciáveis entre diferentes partes do seu aplicativo.
Exemplo de uma arquitetura espaguete.
O problema de uma arquitetura espaguete é que ela resulta em vários problemas, sendo os principais:
E é por isso que os arquitetos odeiam espaguete. Então, como você evita isso?
A chave para construir uma arquitetura de aplicativo escalonável e confiável é basear sua arquitetura em princípios fortemente definidos e fundações bem estabelecidas. Dessa forma, você pode suportar um crescimento rápido e escalabilidade massiva, evitando pesadelos de implantação, custos mais elevados de manutenção de código e acompanhando as necessidades de negócios.
Para fazer isso, você precisa começar com um projeto de arquitetura, que o ajudará a:
Então, como você cria um projeto de arquitetura à prova de futuro? Deixe-me apresentar a você o Architecture Canvas, um framework para apoiar e acelerar o projeto de arquitetura que seguimos na OutSystems.
O Architecture Canvas é uma estrutura multicamadas que promove a abstração de serviços e componentes reutilizáveis, preservando ciclos de vida independentes e minimizando o impacto das mudanças, tornando sua arquitetura mais fácil de manter e evoluir.
É assim que parece:
De baixo para cima:
Para garantir que sua arquitetura seja sólida e que você não termine com uma arquitetura monolítica ou espaguete, você deve seguir um conjunto de diretrizes e recomendações. As regras a seguir referem-se a referências fortes entre módulos ou aplicativos (por exemplo, ações ou blocos), portanto, desconsidere referências soltas como Ações de serviço ou Destinos de tela.
Dada a camada estruturada, é evidente que não queremos que os serviços de base agnósticos de negócios dependam de conceitos de negócios centrais ou que qualquer serviço reutilizável dependa de interfaces de usuário final. Além disso, as referências ascendentes tendem a criar um cluster em que quaisquer dois módulos direta ou indiretamente vinculados têm uma dependência circular. Dê uma olhada no exemplo abaixo:
O módulo B pode alcançar o módulo A indiretamente e o módulo A também pode alcançar o módulo B indiretamente. Portanto, temos um cluster de módulos interdependentes. E se você tiver outro módulo de usuário final (EU2) que está consumindo legitimamente o serviço principal B, ele se tornará dependente de todo o cluster. Consequentemente, não apenas seu tempo de execução recebe uma grande pegada desnecessária, mas também é afetado por alterações feitas em módulos dos quais ele nem deveria estar ciente.
Os módulos de usuário final nunca devem fornecer serviços reutilizáveis para garantir que sejam isolados corretamente, permitindo que os usuários finais tenham diferentes ciclos de vida. Veja o exemplo abaixo:
Se o usuário final 1 consumir o usuário final 2, não só ele não pode ser independente de EU2, mas também não pode ser independente da hierarquia restante abaixo dele.
Se você seguir as duas regras anteriores, não precisará se preocupar com os ciclos entre os módulos do usuário final. Um ciclo é sempre indesejável, pois traz um impacto esperado sobre como gerenciar o código. Um ciclo entre os módulos indica que os conceitos não foram abstraídos corretamente.
No exemplo abaixo, uma das duas coisas deve acontecer:
1) A e B estão tão fortemente conectados que devem fazer parte do mesmo módulo (por exemplo, Pedido e Linha de Pedido) ou….
2) uma das dependências deve ser quebrada por colocar a lógica no lugar certo, de acordo com a relação esperada entre os conceitos. Por exemplo, os contratos dependem dos clientes, mas os clientes devem ser capazes de existir sem qualquer referência aos Contratos.
Antes de passar pela composição da aplicação, uma rápida divulgação: neste contexto, “aplicação” não tem o mesmo significado que habitualmente lhe atribuímos em contexto empresarial.
Na OutSystems, usamos o termo “aplicativo” para se referir ao conjunto de módulos definidos no Service Studio – ambiente de desenvolvimento OutSystems – que constituem a unidade de implantação mínima para LifeTime – console OutSystems para gerenciar todos os seus ambientes, aplicativos, usuários de TI, segurança, e o ciclo de vida do aplicativo. Dito isto, o que se promove do Desenvolvimento à Qualidade e da Qualidade à Produção, não são módulos únicos, mas aplicações.
Para identificar a qual camada o aplicativo corresponde, você deve procurar a camada superior dos módulos dentro do aplicativo, o que significa que se a camada superior for um módulo de usuário final, por exemplo, então este é um aplicativo de usuário final.
Agora, com os aplicativos implementados, você deve seguir um conjunto de regras para garantir uma arquitetura correta.
Coloque seus módulos em camadas corretamente seguindo as diretrizes definidas acima.
Quando os módulos estão colocados corretamente no lugar, é hora de ir atrás dos aplicativos. Use os mesmos princípios aqui. Portanto, se você tiver um módulo em “aplicativo de usuário final 2” consumindo um módulo em “aplicativo de usuário final 1”, deve isolar o aplicativo de núcleo comum para evitar dependências. Dessa forma, você oferece suporte a ambos os aplicativos. No minuto em que você deseja compartilhar algo, é necessário isolar os serviços comuns em aplicativos comuns.
Ter mais de um proprietário em um aplicativo resulta em um gerenciamento de implantação complexo, pois a responsabilidade pelo que foi alterado torna-se incerta. Promover a propriedade é fundamental. Se for impossível concentrar a propriedade de um aplicativo, considere dividi-lo de forma que a propriedade seja claramente definida.
Assim como os proprietários, os patrocinadores têm demandas e bases diferentes. Vejamos um exemplo: imagine um portal que permite a simulação de diferentes ramos de negócios de seguros. Se todas as linhas de negócios estiverem sob a mesma aplicação, qualquer alteração feita em uma (por exemplo, no automóvel) não pode ser independente da outra. Portanto, a linha de negócios mais lenta ditará o ciclo de lançamento.
Ao criar aplicativos separados por linha de negócios, cada um pode determinar o ritmo de cada entrega. Uma vez que isso esteja claro, você deve identificar e isolar tudo o que é compartilhado entre os diferentes patrocinadores e o que deve ser administrado em conjunto.
Então, eu convido você a se juntar a mim em meu recente Tech Talk Web e Mobile Architecture with Architecture Dashboard . Nesta sessão, mostrarei como projetar uma arquitetura seguindo o princípio da tela e algumas das melhores práticas que você deve ter em mente para evitar a arquitetura espaguete, usando um exemplo da vida real. Também examinarei o Architecture Dashboard , uma ferramenta para ajudá-lo a avaliar o que você fez.
Espero ver você lá!
raddar add raddar add O ano está terminando, e queremos compartilhar alguns destaques de notícias e momentos da add no…
Métricas e CX: Como medir o Sucesso na Experiência do Cliente? Métricas e CX: Como medir o Sucesso na Experiência…
Design de Serviços e CX: Como Criar Experiências Memoráveis a partir de Desafios Design de Serviços e CX: Como Criar…
© 2023 todos os direitos reservados a .add
V080323
This website uses cookies so that we can provide you with the best user experience possible. Cookie information is stored in your browser and performs functions such as recognising you when you return to our website and helping our team to understand which sections of the website you find most interesting and useful.
Strictly Necessary Cookie should be enabled at all times so that we can save your preferences for cookie settings.
If you disable this cookie, we will not be able to save your preferences. This means that every time you visit this website you will need to enable or disable cookies again.