A integração de sistemas é o processo de conectar diferentes subsistemas, plataformas ou softwares de uma empresa para que eles funcionem de forma unificada, trocando informações e dados em tempo real ou de maneira automatizada. Esse processo visa melhorar a eficiência operacional, reduzir erros e proporcionar uma visão mais completa e centralizada dos dados corporativos.
Com o avanço das tecnologias e a crescente necessidade de digitalização das empresas, a integração de sistemas tornou-se essencial para otimizar processos e melhorar a competitividade no mercado. Um sistema integrado permite que persas áreas de uma organização — como vendas, finanças, logística e atendimento ao cliente — trabalhem de maneira coordenada, garantindo maior fluidez na execução de tarefas e na tomada de decisões estratégicas.
Esse processo envolve a utilização de diferentes tecnologias, como APIs (interfaces de programação de aplicações), middleware e plataformas de integração, que facilitam a comunicação entre os sistemas. A integração pode ser feita entre sistemas locais (on-premises) ou na nuvem, o que oferece flexibilidade e escalabilidade para atender às necessidades de negócios dinâmicos.
Em suma, a integração de sistemas é uma peça-chave para promover a transformação digital nas empresas, eliminando silos de informações, aumentando a produtividade e permitindo uma melhor adaptação às exigências do mercado moderno.
Desta forma, nas seções a seguir serão abordadas algumas tecnologias de integração de sistemas:
Web Services
o SOAP
XML
o RESTful
JSON
Sockets
Web Services
Web services são aplicações que aceitam solicitações de outros sistemas através da Internet. Quando aplicações são criadas com base neste paradigma, estas passam a interagir entre si e também com sistemas desenvolvidos em diferentes plataformas, tornando-os compatíveis. Na sua interface, o web service adota padrões de comunicação da Internet, podendo trabalhar com diversos protocolos como HTTP, SMTP, FTP ou ainda outros protocolos proprietários. Os dois principais padrões adotados em web services são RESTful e SOAP.
SOAP
O Simple Object Access Protocol (SOAP) é um padrão de comunicação em que a troca de mensagens ocorre no formato XML sobre o protocolo HTTP. Este padrão permite a comunicação entre sistemas protegidos por firewalls, sem precisar abrir portas adicionais e que possivelmente não seriam seguras. Utiliza na maioria dos servidores a porta 80. É um padrão consolidado e ainda largamente utilizado, principalmente em Service Oriented Arquitecture (SOA). Uma mensagem SOAP representa a informação necessária para invocar um serviço ou analisar o resultado de uma chamada e contém informações específicas da definição da interface do serviço. (MORO, DORNELES E REBONATTO, 2011 apud MARINI, FIGUEIREDO e ROSSETTO, 2013)
Uma das principais vantagens da utilização deste protocolo, é que ele geralmente está associado a um conjunto de tecnologias para serviços web, que permite aos clientes descobrir e utilizar tais serviços, como:
A linguagem de descrição de serviço web, do inglês Web Service Description Language
(WSDL), que tem como objetivo facilitar a descoberta da forma correta de utilização dos
serviços por parte dos clientes, ou seja de quem deseja consumir os serviços.
O serviço de diretório onde pode ser registrado e localizado os serviços web e que no
inglês é chamado Universal Description, Discovery and Integration (UDDI).
Um modelo simples da interação das tecnologias associadas ao SOAP pode ser visto na
figura 1 a seguir:
Figura 1 - The Web Services model (Fonte: Novell)
XML
A Extensible Markup Language (XML) é um formato de texto simples, muito flexível derivado
do SGML (ISO 8879). Originalmente concebido para enfrentar os desafios da publicação
eletrônica em grande escala.
O XML desempenha um papel importante na troca de uma ampla variedade de dados na
Web e em outros lugares, suas principais características são: Simplicidade
Extensibilidade
Interoperabilidade
Abertura
RESTful
A Representational State Transfer, ou simplesmente REST, é um termo definido por Roy
Fielding para descrever um estilo arquitetural de sistemas de informação distribuídos.
(COULOURIS, DOLLIMORE e KINDBERG, 2007)
REST representa um modelo de como a Web deve funcionar. A existência deste modelo
permite identificar áreas onde os protocolos existentes falha, comparar soluções alternativas e
assegurar que novas extensões não violem os princípios nucleares que contribuíram para o
sucesso da Web. (NUNES e DAVID, 2005)
O REST não é uma norma nem uma especificação, mas sim um conjunto de restrições
que induzem determinadas propriedades nos sistemas.
O modelo REST utiliza um conjunto de interfaces genéricas para promover interações
sem estado (stateless) através da transferência de representações de recursos, em vez de operar
diretamente sobre esses recursos. O conceito de recurso é a principal abstração ao deste modelo.
Entre as restrições definidas pelo REST, destacam-se três e refere-se à aplicação no caso
concreto da Web: (NUNES e DAVID, 2005)
Identificação global. Todos os recursos são identificados através do mesmo mecanismo
global. Independentemente do contexto de aplicação, tecnologia ou implementação
concreta, cada recurso disponível na Web é identificado utilizando uma URL.
Interfaces uniformes. A interação entre os agentes é feita com recurso ao protocolo
HTTP, utilizando um conjunto de métodos pré-definidos: GET, POST, PUT e DELETE.
Interações stateless. O estado concreto de uma aplicação Web é mantido com base no
estado de um conjunto de recursos. O servidor conhece o estado dos seus recursos, mas
não mantém informação sobre as sessões dos clientes.
O caso particular das interfaces uniformes pode ser comparado à abstração que se verifica
na linguagem SQL com as operações SELECT, INSERT, UPDATE e DELETE. O recurso a um
conjunto pré-definido de operações, permite que qualquer interveniente na comunicação entenda
a operação e aja de acordo. Existe uma semântica estabelecida ao nível da infraestrutura. No caso
da Web, intermediários como as caches e proxies, podem agir de acordo com a operação
executada e contribuir para a escalabilidade de toda a infraestrutura, sem afetar a definição da
respectiva operação abstrata. Por exemplo, o método GET, idempotente por definição, pode ser
servido por caches intermediarias sem intervenção do servidor responsável pelo recurso. Por
outro lado, os métodos POST, PUT e DELETE só podem ser processados pelo servidor uma vez
que alteram o estado do recurso. (NUNES e DAVID, 2005)
Assim, quando um agente do sistema encontra uma URL ou um método HTTP sabe o que
fazer para processar. O fato de existirem acordos públicos, partilhados por todos os
intervenientes, contribui de forma positiva para a escalabilidade e heterogeneidade do sistema
global.A Web é o maior sistema de informação distribuída em funcionamento. O REST procura
identificar e sistematizar as características arquiteturais que permitiram o crescimento
exponencial verificado na última década e uma das principais vantagens na adoção desta
arquitetura é a leveza e o reaproveitamento de funcionalidades conforme pode ser visto na figura
a seguir:
Figura 2 - Arquitetura web com REST
JSON
O Java Script Object Notation (JSON) é uma formatação leve de troca de dados, baseado em um
subconjunto da linguagem de programação JavaScript, Standard ECMA-262 3a Edição -
Dezembro - 1999.
JSON é formatado em texto e completamente independente de linguagem, pois usa
convenções que são familiares às linguagens C e derivadas, incluindo C++, C#, Java, JavaScript,
Perl, Python e muitas outras. Sendo constituído de duas estruturas:
Uma coleção de pares nome/valor, que em muitas linguagens é caracterizada como
um object, record, struct, dicionário, hash table, keyed list, ou arrays associativas.
Uma lista ordenada de valores, que na maioria das linguagens é caracterizada como
um array, vetor, lista ou sequência.
Estas estruturas de dados são universais. Praticamente todas as linguagens de
programação suportam ou dão apoio de alguma forma. Por isso, faz sentido o seu uso como um
formato ou estrutura de dados intercambiável (INTRODUCING JSON).
Socket
Kurose e Ross (2010) definem socket como sendo um mecanismo de comunicação inter
processos. Considerando o modelo de comunicação TCP/IP, este é o mecanismo que faz a
interface entre a camada de aplicação e a camada de transporte, levando os fluxos da
comunicação de um processo ao outro através da rede. (KUROSE E ROSS, 2010 apud MARINI,
FIGUEIREDO e ROSSETTO, 2013)Toda a comunicação entre os processos é feita através de mensagens por este “canal” de
comunicação, conforme representado na figura 2, a seguir:
Figura 3 - Comunicação por sockets
O socket também é conhecido por Application Program Interface (API), de programação
de rede. Ainda segundo Kurose e Ross (2010), esta definição existe porque o “socket é a
interface de programação pela qual as aplicações de rede são inseridas na Internet”. Esta
tecnologia de programação de redes é bastante antiga e conhecida, sendo frequentemente
utilizada em aplicações de rede de porte considerável. (KUROSE E ROSS, 2010 apud MARINI,
FIGUEIREDO e ROSSETTO, 2013)