Tornando-se nativo da nuvem: como os padrões da Web e o software de código aberto estão revolucionando o desenvolvimento de aplicativos
Opinando sobre gerenciamento de dados em nuvem, blockchain, segurança cibernética e liberdade na internet. Presidente da Solix Technologies, Inc. e Minds, Inc.
A interoperabilidade multicloud permite que aplicativos de software sejam executados e acessados perfeitamente em nuvens privadas e públicas. As organizações hoje dependem de ambientes multicloud para otimizar seu investimento em infraestrutura com custo e complexidade reduzidos, ao mesmo tempo em que nunca comprometem a disponibilidade, a segurança ou o controle. Como resultado, os portfólios de aplicativos corporativos agora exigem portabilidade full-stack em uma variedade de arquiteturas de nuvem fornecidas por fornecedores e ambientes locais.
Impulsionado por código aberto
Software nativo da nuvem fornece a plataforma ideal para implantações multicloud porque está enraizada em padrões de código aberto estabelecidos pelo World Wide Web Consortium (W3C), um comunidade internacional que se desenvolve aberto padrões para a web. Transformação digital requer coleta de dados em tempo real e orientada por eventos, e a visão “One Web” do W3C define uma arquitetura ideal para que quaisquer dados sejam executados com qualquer aplicativo em qualquer nuvem compatível com o W3C.
Dispositivos móveis e IoT — como sistemas de televisão interativa, sistemas de resposta de voz, quiosques e até mesmo refrigeradores — estão entre a enorme variedade de dispositivos que coletam e relatam dados em uma enorme rede de dados e serviços. A arquitetura e os padrões do W3C permitem que qualquer pessoa, em qualquer lugar, processe e compartilhe informações com qualquer outra pessoa.
Definindo os padrões: Estabelecendo um sistema confiável
Mas como projetamos a confiança em tal sistema? Quais são as regras? E como podemos ter certeza de que os maus atores não jogam apenas de acordo com suas próprias regras? A boa notícia é que o W3C forneceu padrões e protocolos abertos que permitem que a confiança cresça por meio da adoção em massa. Ao estabelecer uma arquitetura de software livre e de código aberto que conecta transparentemente qualquer coisa a tudo em um cenário de várias nuvens, o W3C estabelece confiança em uma escala global.
O software de código aberto opera como anunciado porque o código é transparente por padrão e está disponível para qualquer um ler e inspecionar. Por meio do uso e da reutilização, o software e os padrões de código aberto são verificados, revisados por pares e testados para funcionar conforme documentado. Sistemas de software proprietários — onde o código-fonte é escondido da inspeção e protegido por lei de direitos autorais — não podem fazer essa mesma alegação.
Principais tecnologias para se tornar nativo da nuvem: REST, NoSQL e microsserviços
Os desenvolvedores estão sempre buscando maneiras mais simples de criar e montar sistemas de software complexos. Transferência de Estado Representacional (REST) é um estilo arquitetônico de padrão aberto que está no coração de todo aplicativo de software nativo da nuvem. REST se tornou uma base para o desenvolvimento de software de internet porque é muito conhecido e compreendido. Seus descendentes são onipresentes e incluem Hypertext Transfer Protocol Secure (HTTPS), Uniform Resource Identifiers (URL) e os protocolos de código aberto do servidor web Apache.
REST depende do princípio de engenharia de software de generalidade, o que significa que nada é limitado a apenas um caso particular, e REST estabelece uma interface uniforme entre todos os elementos da rede. Cada elemento é um componente “sem estado” do sistema maior, simplificando enormemente o desenvolvimento de software e melhorando a visibilidade sobre interações e eventos.
Bancos de dados NoSQL (que significa “não apenas SQL”) são frequentemente encontrados no coração de aplicativos nativos da nuvem. Usados cada vez mais para casos de uso em tempo real e orientados a dados, os bancos de dados NoSQL oferecem um design mais simples que escala horizontalmente em nós distribuídos. Como eles podem armazenar e recuperar quaisquer dados, incluindo dados estruturados, não estruturados e semiestruturados, os bancos de dados NoSQL são adequados para uma ampla variedade de cargas de trabalho.
As estruturas de dados NoSQL são distintas de bancos de dados relacionais e sistemas de arquivos simples e geralmente são definidas como armazenamentos de colunas, armazenamentos de documentos ou armazenamentos de gráficos. Em alguns casos, as operações NoSQL têm desempenho mais rápido do que os armazenamentos de dados tradicionais e, em outros casos, menos. A escolha de qual estilo NoSQL usar depende dos requisitos do caso de uso. Uma vez liberados do design canônico de estruturas relacionais, os cientistas de dados podem descrever seus dados melhor e obter insights de dados mais poderosos.
Os microsserviços são os estrutura arquitetônica de serviços web RESTful. Ao dividir um aplicativo em funções principais orientadas a objetos que se comunicam entre si e operam de forma autônoma, as arquiteturas de microsserviços criam uma malha de computação distribuída e fracamente acoplada que continua funcionando mesmo em caso de falha crítica de infraestrutura. Se um componente falhar ou causar erros, o aplicativo inteiro não precisa ser colocado offline.
Os microsserviços são padronizados, fáceis de implementar e capazes de simplificar enormemente a engenharia de software e a integração de sistemas. Serviços como armazenamento de dados podem ser separados das funções do aplicativo, e os desenvolvedores podem escolher suas próprias ferramentas porque os microsserviços se comunicam usando interfaces de programação de aplicativos (APIs.)
Kubernetes: um divisor de águas
Os contêineres de software transformaram a maneira como desenvolvemos, implantamos e gerenciamos aplicativos nativos da nuvem. Como microsserviços e APIs, os contêineres são isolados do resto do sistema, mas um contêiner inclui todos os arquivos necessários para executar e executar funções. Como os contêineres são portáteis e consistentes, as operações e o gerenciamento da produção são simplificados, permitindo aos desenvolvedores maior controle sobre o ciclo de vida do desenvolvimento de software.
Em um artigo do arquitetura conteinerizada, serviços de software são empacotados separadamente e implantados em clusters de máquinas físicas ou virtuais. A orquestração de contêineres organiza clusters de contêineres juntos em “pods” e agenda os recursos de computação para implantá-los, dimensioná-los e colocá-los em rede em aplicativos orientados a dados. O Kubernetes é um projeto de código aberto que permite que você implante e gerencie “pods” de contêineres em escala. Kubernetes roda em qualquer lugar, incluindo ambientes locais, públicos, privados ou de nuvem híbrida.
Tornar-se nativo da nuvem permite que qualquer organização crie aplicativos que interoperem em um ambiente multi-nuvem. Os desenvolvedores de software ficam encantados porque seu trabalho incrivelmente difícil se torna muito menos complexo. Graças à visão “One Web” do W3C, bem como aos padrões livres e de código aberto, todas as nuvens podem ser executadas da mesma maneira e interoperar com segurança.
