DEPLOYMENT DE APLICAÇÕES EM INFRAESTRUTURAS DISTRIBUÍDAS DE IOT
Aplicações IoT vêm ganhando popularidade ao longo dos anos e cada vez mais é comum seu uso em diferentes segmentos como cidades inteligentes, agricultura inteligente, casa inteligente e indústrias (conhecida também como IoT industrial). Para acompanhar essa evolução, diversas tecnologias e ferramentas vêm sendo criadas para facilitar o desenvolvimento e configuração de aplicações IoT. Apesar disso, ainda não existe uma tecnologia consolidada em IoT que permite a adoção de técnicas DevOps como integração contínua e entrega contínua (CI/CD) que são técnicas utilizadas com sucesso em aplicações web e mais recentemente também na área de aprendizado de máquina com MLOps (Machine Learning and Operations). Uma outra característica comum é que muitas aplicações IoT são constituídas de serviços que rodam em ambientes heterogêneos como nuvem, névoa e bruma, e o deployment destes serviços em geral é feito de maneira diferente para cada ambiente e de forma estática (um serviço que roda na névoa não pode ser movido para a nuvem por exemplo).
Uma maneira de realizar o deployment dinâmico dos serviços que compõem um sistema IoT é através da utilização de containers e de um orquestrador de containers para controle e coordenação dos serviços, tecnologias bastante utilizadas para deployment de aplicações web na nuvem. Para estender a orquestração de containers a borda da rede, existe a opção de adicionar um novo componente responsável por cuidar da comunicação e gerenciamento dos containers que rodam fora da nuvem.
Para executar o deployment dinâmico e garantir que todos os serviços estejam rodando no ambiente correto, uma ferramenta tradicional de CI/CD pode ser adaptada para se comunicar com o orquestrador de containers seguindo uma configuração pré-estabelecida e de acordo com as boas práticas da metodologia DevOps.