This is a discussion topic for the original post at Como tomar a decisão entre utilizar API e utilizar RPA? - Botcity | Blog
Muitas das perguntas pelas quais comparamos duas ou mais tecnologias e que, no final, precisamos tomar a decisão de qual delas usar, como a dúvida na escolha entre API e RPA, acabamos caindo na mesma resposta padrão: depende. Mas isso não é de propósito. De fato, qualquer decisão de qual tecnologia ou forma de desenvolvimento usar, depende de alguns fatores. E vamos discuti-los neste artigo.
Antes de mais nada, vamos entender as diferenças entre API e RPA.
Entendendo o que é uma API
API significa Application Programming Interface em inglês, ou seja, é um programa que funciona como uma interface entre projetos separados. O objetivo é facilitar a comunicação e até mesmo a transferência de dados em determinados formatos (json, XML, entre outros).
As APIs são úteis quando você precisa acessar dados ou funcionalidades de um sistema que é disponibilizado por uma ferramenta e/ou empresa. Em outras palavras, as APIs permitem que diferentes sistemas comuniquem-se de forma padronizada. Um exemplo simples é a API dos Correios. Você pode utilizar essa API para que os dados de endereços de clientes estejam corretos em seu sistema, com base no CEP informado.
Mas já exercitando a reflexão de como tomar a decisão, supondo que não existisse uma API dos Correios disponível para uso de pessoas desenvolvedoras, uma forma de buscar os dados corretamente seria com RPA, interagindo com a página da empresa, através da DOM ou por visão computacional, identificando elementos na tela de onde clicar, onde digitar, assim por diante.
Entendendo o que é RPA
RPA significa Robotic Process Automation, em inglês, ou seja, é um processo automatizado pela construção de um ou mais robôs. É uma tecnologia utilizada para automatizar tarefas repetitivas.
RPA é útil quando você precisa executar tarefas que envolvem interação com a GUI (interface gráfica de usuário), como preencher formulários ou clicar em botões em um aplicativo. Mas também se torna bastante útil quando você precisa interagir com outros sistemas mesmo sem a necessidade de utilizar a GUI, mas atuando no background da aplicação através de comandos no formato headless. Você pode entender um pouco mais sobre essas diferenças entre RPA interagindo com GUI ou atuando em background neste artigo.
Em diversos momentos, quando não há APIs disponíveis para uso, o formato de desenvolvimento de projetos RPA acaba sendo a melhor saída. Mas isso não significa que deve ser a única informação considerada para a tomada de decisão. Afinal, se não existe uma API, nós podemos construir uma, certo? Mais uma vez vamos usar a resposta: depende.
O que é importante considerar para a tomada de decisão
Para decidir qual abordagem é a mais adequada, você pode levar em consideração os seguintes fatores: questões de segurança, acessos disponíveis, qual é o conhecimento do time que fará o desenvolvimento, como será feito o monitoramento das execuções, pensar em formatos para lidar com alterações de estados, entre outros.
Entendo um pouco mais desses pontos:
- Conhecimento do time de desenvolvimento: Isso é importante, em conjunto com o tempo para curva de aprendizado de novas tecnologias para o time utilizar. É necessário avaliar o que faz sentido para o projeto.
- Existência de muitas tarefas e processos repetitivos e/ou manuais: Este é um forte indício de que o RPA será um excelente formato para o seu projeto.
- Complexidade do projeto: Ambas as formas, API ou RPA, podem ser construções com a mesma relevância e preocupação de um projeto de software, considerando governança, escalabilidade, segurança, entre outros. Mas em muitos casos, se as tarefas não tiverem grande complexidade, fica mais fácil utilizar frameworks (python, por exemplo) e ferramentas de orquestração para construir e monitorar a automação necessária.
- Interação entre sistemas pela GUI ou em background: Se as tarefas envolvem interação com a interface gráfica de usuário, o RPA pode ser mais adequado.
- Disponibilidade de API: Se o sistema que você precisa interagir já te oferece uma API bem documentada e estável, pode ser mais fácil e mais rápido implementar a automação como API. Mas nem sempre isso acontece e talvez nesse caso vale usar RPA para que você tenha acesso às informações necessárias naquele sistema em questão.
- Paralelismo e escalabilidade: Dependendo do formato de construção de um projeto, isso precisa ser pensado desde o começo. E ainda que as APIs possam oferecer uma facilidade na hora de controlar e permitir melhor escalabilidade, essas ferramentas não se restringem apenas às APIs. Também é possível escalar a produção e utilização de robôs feitos em RPA, além da vantagem do paralelismo que uma automação construída com linguagem de programação pode oferecer.
- Segurança da informação: É importante analisar como você poderá implementar a parte de segurança dos dados do seu sistema e também o que seu software poderá ou não acessar, seja via token, certificado digital ou via outras formas de autenticação.
Resumidamente, ambas as tecnologias são úteis. Mas se o que você precisa fazer não disponibiliza uma API bem documentada e atualizada para uso, o RPA será a saída. Principalmente em casos de tarefas repetitivas e processos manuais. O que não impossibilita de utilizar RPA e API em conjunto, onde o RPA automatiza tarefas necessárias e a API te traz o apoio em relação a uma autenticação, por exemplo.