Um software especialista, que funciona isolado no mundo, costuma ser importante apenas em períodos curtos e eventuais. Nos ensinamentos de Gregor Hohpe e Bobby Woolf, aplicativos interessantes raramente operam isolados. Então a Integração entre sistemas, principalmente quando lidamos com plataformas digitais, certamente irão acontecer, seja de forma explícita, com esforço do time de desenvolvimento ou implícitas, acontecendo à revelia.
Garantir a qualidade “interna” do nosso software não é suficiente, pois pouco importará se suas integrações com outros softwares apresentarem falhas. Falhas nas integrações entre softwares, colocam em risco os objetivos de negócio, restrições e atributos de qualidade de um software. Quanto antes desenvolvermos familiaridade com as integrações necessárias, maiores são as chances de sucesso do software.
Seguem aqui algumas dicas para iniciar essa jornada:
Explicitando as relações de um software
Explicitar as integrações que precisam ser suportadas por um software é uma das práticas mais fundamentais da arquitetura de software. Um bom arquiteto deve conduzir esse processo orquestrando um diálogo entre negócio e tecnologia. Embora pareça uma atividade muito simples, sua execução normalmente tem se revelado desafiadora. Muitas organizações têm dificuldade em relacionar quem são os sistemas “acionadores”e “acionados” dentro das plataformas.
Criar um modelo, utilizando uma ADL (Architectural Description Language) com notação mais informal, facilita a comunicação entre as áreas “não ténicas”. A notação visual C4Model é uma ótima escolha para começar! O primeiro nível do C4 elabora uma visão de contextos da solução proposta, explicitando quem são as “pessoas” ou outros artefatos que estão conectados com o software sob análise. Ideal para facilitar a comunicação com as equipes de negócio.
Ao final, o modelo deve auxiliar a deixar mais claro os objetivos de negócio, restrições e atributos de qualidade sob a perspectiva das integrações necessárias. Cuidado, modelos com muito nível de detalhe podem gerar ruído no propósito de explicitar as integrações entre sistemas.
Aspectos arquiteturais para tomada de decisão
Nem toda integração entre sistemas nasce com a “supervisão” do time dono do software em questão. Integrações que nascem de forma orgânica, muitas vezes como iniciativas shadow IT, se tornam um problema para o futuro da solução. Integrações sem supervisão, muitas vezes, ficam desalinhadas com atributos de qualidade por não considerar aspectos arquiteturais.
Considerar a forma de comunicação, necessidade de consistência e coordenação no planejamento das integrações, impactam diretamente em atributos de qualidade e até mesmo objetivos de negócio. Por exemplo, decisões arquiteturais sobre a forma de comunicação entre sistemas, impactam atributos de qualidade como segurança, resiliência, escalabilidade e desempenho. Já, decisões sobre consistência (eventual ou atômica), podem impactar objetivos de negócio, considerando que um negócio exija atomicidade.
Cabe ao arquiteto garantir que, para cada integração, decisões sobre os aspectos arquiteturais da integração sejam tomadas e registradas.
Não subestime os desafios comuns em integrações
Integrações vão apresentar falhas. É questão de quando e não de se. Não raro, softwares apresentam instabilidade por falhas em suas integrações. Por exemplo, um sistema de venda de ingressos, que apresenta instabilidade por falhas na integração com sistemas de cobranças, ou em acessar inventário de lugares.
Desconsiderar alguns desafios comuns em integração entre sistemas é receita para o fracasso. Ao planejar as integrações considere:
- Rede não é confiável e é lenta;
- Toda aplicação é diferente (e única) e;
- Mudança é inevitável.
Estratégias distintas devem ser planejadas para mitigar estes desafios. Por exemplo, falhas de rede podem ser mitigadas com chamadas idempotentes, handshakes, políticas de retentivas e circuit-breakers. Registrar as estratégias a serem adotadas em ADRs (Architectural Decision Records) cria alinhamento de propósito, aumenta a autonomia de atuação do time e as chances de sucesso do software.
Integração entre sistemas: Por onde devo começar?
Utilize o modelo C4 para representar as integrações e familiarizar todos os envolvidos. Considere com cuidado os aspectos arquiteturais e o impacto na estratégia (objetivos de negócio, restrições e atributos de qualidade) para uma tomada de decisão mais assertiva. Assuma que integrações irão falhar, sendo apenas uma questão de tempo e crie planos para mitigar os impactos destas falhas.
Está precisando de ajuda para avançar na integração de sistemas? A EximiaCo oferece a alocação de um Arquiteto de Software em sua empresa para orientar seu time no uso das melhores práticas de arquitetura para projetar a evolução consistente de suas aplicações. Conheça nossa solução de Software Architect as a Service que atua na modernização de sistemas garantindo a qualidade de entrega e maximizando resultados.