Computação na nuvem: o que é e por quê devemos entender?

December 21, 2020

Acredito que em algum momento você já se deparou com o termo “computação na nuvem”, este termo já existe a alguns anos e tem ganhado força com o crescimento do poder de processamento e flexibilidade fornecidos pela web. Tanto como usuário final ou como desenvolvedor você certamente já utilizou ou utiliza algum serviço hospedado em algum servidor remoto, como o que ocorre neste exato momento por exemplo.

Para entender este paradigma é necessário conhecer um pouco sobre a história da TI tradicional, onde a alguns anos a arquitetura dos softwares desenvolvidos eram baseados em pacotes instalados diretamente nos servidores locais e específicos para um determinado sistema operacional. Os sistemas “desktop” (como são chamados os sistemas dependente de plataforma que não possuem versões web de acesso remoto) necessitam de infraestrutura dedicada no qual envolve servidores, roteadores, switches, cabeamento de rede e manutenção contínua, esta infraestrutura além de muito cara pode em muitos casos inviabilizar o crescimento e implantação de novos serviços. A escalabilidade e disponibilidade foram dois dos vários fatores que motivaram a migração da TI tradicional para a nuvem, onde empresas especializadas no gerenciamento de ‘data centers’ passaram a fornecer a infraestrutura como serviço com o intuito de promover um melhor uso dos dispositivos de rede alocados em regiões distintas, capazes de armazenar diferentes aplicações simultaneamente e transparente para o usuário final.

Com esta “nova” estrutura, o desenvolvimento de aplicações passaram a contar com novos desafios que até então não eram prioridade, como a alocação de recursos de processamento, memória, rede, armazenamento e segurança. Anteriormente ao advento da nuvem não se fazia necessário o conhecimento de técnicas avançadas de criptografia e redes de computadores por parte do desenvolvedor, este tipo de conhecimento passou a ser indispensável tanto para os administradores de redes quanto para os desenvolvedores, o que acarretou em uma supervalorização dos serviços de profissionais da área de configuração, provisionamento e manutenção de redes com conhecimento em desenvolvimento de software.

Dentre os impactos causados pelo surgimento e adoção da computação em nuvem, podemos citar:

Dependência de conexão com a internet

Todo sistema que possui versão web torna-se dependente da troca de dados entre o cliente (este dispositivo que você está usando para ler este texto) e o servidor (local onde este texto está armazenado), o que por sua vez necessita de conexão com a internet para o carregamento de dados. Para ter acesso a este conteúdo, você certamente clicou em um link que abriu o navegador no qual requisitou a um servidor, que por sua vez respondeu com todos os dados que você está visualizando neste momento. Este tipo de operação possui uma abordagem diferente nos sistemas ‘desktop’, no qual todas as operações de processamento são locais.

Necessidade do uso de criptografia de ponta a ponta

Pelo fato da troca de informações entre cliente e servidor, os dados tornam-se vulneráveis ao navegar na web, as informações podem ser interceptadas no meio do caminho e utilizadas de forma indevida, por isso, é papel do desenvolvedor utilizar meios de criptografia de dados em casos de interceptação das mensagens, o que aumenta o consumo de banda de ambos os lados. Por outro lado em servidores locais, a criptografia não necessita de tanta ênfase, uma vez que o tráfego de dados é estritamente local.

Disponibilidade

A adoção da nuvem aumenta consideravelmente os níveis de disponibilidade de serviços de software em comparação à TI tradicional, uma vez que os dados e aplicações estão armazenados em servidores remotos e geograficamente distribuídos é possível redirecionar as requisições de um servidor para outro quando algo inesperado ocorre, de tal forma que se torna transparente para o usuário, como por exemplo, neste momento em que você está lendo este texto seu dispositivo pode estar requisitando dados a um servidor diferente do requisitado a 10 segundos atrás.

É dever do desenvolvedor de software estar alinhado com a evolução da computação na nuvem, é preferível que a modelagem da arquitetura seja elaborada para o contexto web, é também dever do desenvolvedor conhecer os limites e riscos na escolha dos serviços disponíveis antes de projetar, bem como o esclarecimento dos mesmos para os usuários/clientes.