Desenvolvimento

13 fev, 2017

As dificuldades da integração entre soluções

Publicidade

Uma solução não vive sozinha

As aplicações de hoje raramente vivem isoladas. Os usuários esperam acesso instantâneo a todas as funcionalidades, que podem ser fornecidas por aplicativos e serviços diferentes, dentro ou fora da corporação. Sendo assim, a integração de soluções nas corporações hoje é um requisito obrigatório para qualquer negócio. Em um mundo ideal, pode se imaginar uma organização que tenha um sistema único e coeso, projetado desde o inicio para funcionar de forma unificada e coerente. Porém, a realidade que vemos é completamente diferente. Em uma empresa, mesmo que pequena, muito dificilmente existe apenas uma aplicação. E mesmo que se opte por desenvolver tal aplicação única, diversos seriam os desafios que acabariam por inviabilizar a estratégia.

Integrar é difícil

E para cumprir esse requisito, projetistas e arquitetos de software precisam considerar que integrações são complexas e cheias de desafios, uma vez que podem ocorrer entre soluções estruturadas, de diferentes provedores, de diferentes épocas, com plataformas distintas, com tecnologias distintas, usando protocolos distintos, repleta de restrições, limitações, problemas, separadas geograficamente dentro e fora do escopo da organização.

Reuso de conhecimento

A grande questão desse tópico é que faz algum tempo que não precisamos mais nos “aventurar a desvendar ou inventar” os segredos da integração! No livro Enterprise Integration Patterns, temos uma documentação extensa e completa de um catálogo de padrões que nos fornece um arsenal de informações a respeito de várias estratégias já usadas e aprovadas em ambientes de produção nas últimas décadas. O proposito desse artigo é resumir os principais pontos desse livro. Acomode-se na sua cadeira e vamos que vamos.

Caraterísticas de integração

Segundo o livro, antes de qualquer ação, é necessário que o responsável pela integração pondere pelo menos 10 características fundamentais na decisão que repercutiram futuramente na qualidade, evolução e sustentabilidade, podendo impactar positivamente ou negativamente no serviço final. Segue eles abaixo:

  1. Acoplamento: Aplicações integradas devem minimizar as dependências entre si, de forma que cada uma possa evoluir sem causar problemas para as demais. Integrações devem ser específicas o suficiente para cumprir seu papel, porém, genéricas o suficiente para garantir que mudanças não façam com que as aplicações dependentes parem.
  2. Formato: Para se integrarem, aplicações devem concordar em um formato de dado. Considerando que alterar todas as aplicações da organização para considerar um formato de dado único pode ser inviável, tradutores intermediários podem ser empregados. Outro assunto relacionado é como a evolução do formato do dado ao longo do tempo pode impactar as aplicações dependentes.
  3. Seleção de tecnologia: Diferentes abordagens de integração requerem diferentes quantidades de licenças de software e hardware. Tais ferramentas podem ser caras, podem levar a dependência da organização com fornecedores específicos e ao aumento da curva de aprendizado dos desenvolvedores.
  4. Exposição de funcionalidades: Muitas abordagens de integrações permitem que aplicações compartilhem não apenas dados, mas também funcionalidades. Tal compartilhamento é interessante, pois gera um nível maior de abstração entre as aplicações envolvidas.
  5. Tempo para atualização: Integrações devem ser estruturadas pensando na minimização do tempo de defasagem de dado. Idealmente, aplicações consumidoras de dado deveriam ser informadas assim que o dado estivesse pronto para consumo. Quanto mais tempo se leva para o compartilhamento do dado, maior a probabilidade de falta de sincronismo de dados.
  6. Processamento assíncrono: A chamada de funcionalidades remotas de forma síncrona pode ser algo custoso para a aplicação consumidora. A capacidade de realizar tarefas assíncronas traz diversas vantagens como, por exemplo, escalabilidade. Porém, tal solução tem design, desenvolvimento e depuração mais complexos.
  7. Confiabilidade: Conexões remotas não são apenas lentas, mas também são muito menos confiáveis do que a execução de procedimentos locais. Aplicações remotas podem não estar disponíveis ou a rede pode estar temporariamente indisponível. Comunicações assíncronas e confiáveis permitem que a aplicação de origem realize outras tarefas confiante de que a aplicação destino receberá a informação.
  8. Intrusividade: Integrações devem causar o mínimo de impacto em códigos existentes e devem requerer pouca codificação.
  9. Esforço: Algumas soluções de integração podem endereçar bem os diversos fatores apresentados, porém, podem ser difíceis de se desenvolver, depurar e manter. Profissionais específicos podem ser necessários para monitorá-las e para gerenciar erros.
  10. Escalabilidade: Integrações devem causar o mínimo de impacto na performance dos sistemas envolvidos. Também devem ser projetadas para suportar aumento no volume de dados trafegados e ainda pensando-se nos impactos decorrentes de acréscimo no número de sistemas consumidores de uma determinada informação (não constam no livro e foram adicionados por mim por considerá-los igualmente importantes com relação aos demais.)

Estilos de integração

Segundo o livro, a evolução de anos de integração nos mostram que existem 4 principais estilos de integração. Esses quatros estilos se endereçam automaticamente, assumindo as caraterísticas acima citadas. Vejamos a seguir:

1. Transferência de arquivo

Um sistema escreve um arquivo texto ou binário para que outro sistema leia.

2. Banco de dados compartilhado

Múltiplos sistemas utilizam o mesmo banco de dados físicos para consultar e manipular dados.

3. Invocação remota

Um sistema expõe dados e funcionalidades para que sejam acessadas remotamente por outro sistema através de uso de tecnologias e protocolos proprietário ou públicos.

4. Mensageria

As aplicações se conectam a um sistema comum e intermediário de mensageria conhecido como MOM, de forma a compartilhar dados e a invocar operações através do uso de mensagens. O livro defini 65 diferentes micros padrões dentro desse estilo que pode ser combinado para dar soluções nos mais diversos cenários.

Prós e contras de cada estilo

Cada um dos estilos possuem vantagens e desvantagens. A ideia não é usar sempre a mesma, mas ao invés, aquela que melhor se adeque a um cenário em particular. O livro é tão bom que já nos poupa tempo, classificando sistematicamente os prós e contras de cada caraterística versus o estilo, nos ajudando a ter uma visão global na tomada de decisão. Segue abaixo:

Qual é melhor ou pior? Qual é o bala de prata?

Segundo o livro, nenhum estilo ou abordagem de integração existente endereça todas as características acima ao mesmo tempo de forma igualmente bem. O estilo Mensageira é que mais se destaca entre todos por apresentar 80% de pontos fortes e 20% pontos fracos, e devem ser sempre o primeiro a ser considerado, porém, determinadas abordagens de integração podem ser melhores do que outras em determinados cenários. Em alguns casos, se faz necessário ate misturar dois ou mais estilos juntos para se chegar em um modelo mais adequado.

Sendo assim, é extremamente importante que o responsável por essa decisão se posicione embasado de fatos analíticos, lógicos e empíricos e não por preferência pessoais, por limitação técnicas ou qualquer outra coisa, sem fundamento sistemático.

Conclusão

Graças a esse livro, arquitetos e projetistas ganham e reusam conhecimento de décadas, sem precisar se preocupar em perder tempo, dinheiro e investimento para “desvendar mistérios” relacionado a criação de arquitetura na integração de soluções. Alem do livro, existe o site oficial com bons resumos e informações extras sobre esses os estilos e padrões. Até a próxima pessoal.