BT

Disseminando conhecimento e inovação em desenvolvimento de software corporativo.

Contribuir

Tópicos

Escolha a região

Início Artigos Cloud e uma pespectiva arquitetural entre risco e serviços

Cloud e uma pespectiva arquitetural entre risco e serviços

Atualmente, a arquitetura de software possui diversos desafios, como a tão sonhada escalabilidade. O conceito de cloud trouxe essa possibilidade com diversos serviços IaaS, PaaS e SaaS. Com tantas opções e serviços, qual escolher para cada cenário? Esse artigo tem como objetivo falar um pouco das desvantagens na escolha de serviços cloud em nosso software corporativo.

Existem um grande número de desafios para um arquiteto, como a escalabilidade e a redução do tempo de resposta de uma requisição. Não é nenhuma novidade que o conceito cloud trouxe diversos benefícios para o mundo do software. De uma maneira geral, o cloud trouxe algumas das seguintes vantagens:

  • Foco no software: Sem dúvida, desenvolver e manter a aplicação sem se preocupar com o hardware, a infraestrutura e conta de luz é maravilhoso! Qualquer redução na complexidade significa maior foco e tempo em desenvolvimento de software. Além disso, sabemos que o maior desafio é a manutenção das máquinas.
  • Multi-região: A possibilidade de escolher a região onde o servidor estará é muito importante. Dentre os motivos, podemos citar uma melhoria na latência, a possibilidade de ter aplicações distribuídas em diversos pontos do mundo para evitar "recuperação de desastres".
  • Escalabilidade: É a propriedade que um sistema tem de lidar com uma quantidade crescente de trabalho, adicionando recursos ao sistema. Em um contexto econômico, um modelo de negócios escalável implica que uma empresa pode aumentar as vendas devido ao aumento de recursos. Que poderá ser dividido em escalabilidade tanto horizontal quanto vertical.
    • A escalabilidade vertical certamente é a maneira mais simples, porém, muitas vezes a mais cara. Basicamente o foco se concentra em aumentar o poder computacional do presente servidor. A simplicidade é o seu ponto focal, uma vez que não existe a necessidade de analisar um sistema distribuído, porém, à medida que o sistema cresce, achar máquinas com um grande poder computacional acaba sendo mais difícil.
    • A escalabilidade horizontal se baseia na possibilidade na estratégia de dividir o trabalho em vários servidores. Essa solução tende a aumentar a complexidade, uma vez que estamos envolvendo um sistema distribuído, porém, tende a ser a opção mais barata.

Complexidade x Riscos nos serviços

Com essas facilidades um ponto importante é que os recursos de computação estão divididos entre os serviços. A melhor maneira de pensar no cloud em termo de abstração para o negócio, certamente é na analogia de uma pizza como serviço. Do qual temos a opção de fazer tudo em casa e ter que gerenciar todo o processo ou, sair para comer uma pizza e não se preocupar com nada.

Um ponto importante quando nós falamos do cloud e seus serviços é que quanto menor a abstração que utilizamos como serviço, por exemplo, o IaaS teremos a maior responsabilidade no processo de construção do software. Esse grande número de processos crescerá na mesma medida que o número de servidores e essa complexidade está relacionada aos riscos.

  • IaaS: Com ele será possível realizar todas os benefícios do cloud, que foram citados acima, porém, toda a responsabilidade de manutenção ficará para a nossa equipe. Garantir a comunicação certa entre os serviços para os respectivos banco de dados, o backup, o escalonamento tanto vertical quanto horizontal, etc. Todos esses pontos geram complexidade e por sua vez, mais risco.
    • Um bom exemplo de IaaS é o Amazon EC2. De uma maneira geral, se pode pensar nele como sendo um grande aluguel de máquinas no qual se pode pagar pelo uso delas, semelhante à nossa conta de luz. Para ilustrar isso, vamos analisar a realização do deploy de uma aplicação com container na Amazon. O primeiro passo é a criação de uma instância que são cerca de sete passos. Em seguida, a instalação do Docker, para que assim seja possível criar uma imagem para executar essa instância. É possível ver que um simples deploy de uma aplicação, requer vários passos.
  • Orquestração no IaaS: Orquestração é a configuração, o gerenciamento e a coordenação automatizada dos serviços, aplicações e sistemas de computador. Ela tem com o objetivo de facilitar e abstrair o IaaS, fazendo com que fique mais próximo de um PaaS.
  • PaaS: Redução drástica de complexidade para focar na criação do software, certamente, é a maior vantagem dentro do PaaS. Com ele, no geral, não é necessário se preocupar com a manutenção das máquinas, criação de rotina de backup, compra de licenças, etc. Todo os cuidados do desenvolvimento será na criação do software. Porém, o PaaS tem um custo mais elevado comparado com os serviços sem maior abstração.
    • Platform.sh: É um PaaS que utiliza todos os conceitos de infraestrutura como serviço e também é orientado ao Git, além de ser possível realizar o deploy da aplicação deixando todo trabalho para a plataforma. Basicamente, a partir de três arquivos: aplicação, serviços e rotas podemos fazer o push para um repositório Git. Um simples push para o sistema remoto do Platform.sh criará automaticamente os containers da aplicação, dos serviços como banco de dados e as rotas da aplicação. Nesse caso a abstração é gigantesca e faz com que o time foque muito mais na aplicação central da empresa.
  • SaaS: O Software como serviço é um programa pronto para uso do qual não se preocupa com hospedagem, escalabilidade, etc. Toda a complexidade e o risco já foram resolvidos. No entanto, a customização está reduzida e a possibilidade de configuração depende diretamente do provedor.

De uma maneira geral temos que pensar nos seguintes três princípios cíclicos que compara:

  • Quanto maior a complexidade menor abstração;
  • Quanto maior abstração menor é o risco;
  • Quanto menor o risco menor é complexidade.

É verdade que existem vários benefícios na navegação nos mares da computação em nuvem, porém, é muito importante conhecer os tipos de serviços que a cloud disponibiliza e fazer uma análise profunda entre a complexidade de um serviço com o seu respectivo risco, além de quanto tempo o time está disposto a gastar para criar e manter toda a infraestrutura. o PaaS fornece uma grande vantagem de abstração de toda a infraestrutura e manutenção para que o desenvolvedor foque no seu negócio. O IaaS te garantirá uma grande flexibilidade e poder para instalar e configurar o que seu time deseja sem nenhum problema mesmo que tudo tenha que seja configurado manualmente. É muito importante que a quanto o time quanto a empresa tenha noção de que, independente da escolha haverá benefícios e desvantagens. É muito importante para que os arquitetos avaliem o que melhor se encaixa na instituição, afinal, cloud e computação não está relacionado a quando, mas como.

Otávio Santana é engenheiro de software, com grande experiência em desenvolvimento open source, com diversas contribuições ao JBoss Weld, Hibernate, Apache Commons e outros projetos. Focado em desenvolvimento poliglota e aplicações de alto desempenho. Otávio trabalhou em grandes projetos nas áreas de finanças, governo, mídias sociais e e-commerce. Membro do comitê executivo do JCP e de vários Expert Groups de JSRs, é também Java Champion e recebeu os prêmios JCP Outstanding Award e Duke's Choice Award.

Avalie esse artigo

Relevância
Estilo/Redação

Conteúdo educacional

BT