Links e referências

  • O que significa virtualizar infraestrutura?
    • Mover a infraestrutura para máquinas virtuais, seja em um provedor remoto (ex. Amazon EC2) ou na própria infraestrutura.
    • Motivação: uso eficiente dos recursos de hardware disponíveis; isolamento de diferentes serviços (cada um em uma máquina).
  • Surgimento dos serviços de nuvem
    • Ideia: oferecer um pouco do contexto de surgimento da computação em nuvem
    • Citar exemplos de serviços:
      • DigitalOcean
      • Amazon Web Services
      • Heroku
      • Microsoft Azure
      • Google Cloud Platform
  • Quais a desvatangens de ter uma infraestrutura na nuvem?
    • Custo
      • Custo alto para grandes organizações
    • Otimização de custos
      • Opções diversas de tecnologias e serviços, configurações.
      • Exemplo: gama de serviços e configurações oferecidas pela AWS, i.e. instâncias reservadas vs spot vs on-demand.
    • Perda de controle dos dados da organização
      • Dados ficam armazenados em uma localidade remota
      • Ninguém garante que o provedor de serviços não tenha acesso a máquina [4], uma vez que o provedor tem acesso ao hardware e a máquina host.
    • Aplicação deve ser estruturada para ser escalável horizontalmente
      • Exemplo: Em uma arquitetura baseada em serviços, basta subir uma nova instância/processo do serviço e usar balanceamento de carga para aumentar a capacidade de processamento [1].
      • Aplicações legadas podem não ser capazes deste tipo de escalabilidade, ex. sistemas ERP e CRM antigos.
      • Bancos de dados relacionais não conseguem escalar horizontalmente, devido às garantias ACID e pelo teorema CAP
  • Quais as vantagens de ter uma infraestrutura na nuvem?
    • Evita manutenção e depreciação de hardware
    • Evita manutenção de uma equipe de infraestrutura
      • Porém necessário ter uma equipe com conhecimento especializado na plataforma de nuvem escolhida!
    • Alta disponibilidade
      • Provedores de nuvem oferecem múltiplas zonas/datacenters
      • Disponibilidade oferecida depende do tipo de contrato
    • Tolerância a falhas
      • Novamente, devido a múltiplas zonas/datacenters
    • Escalabilidade horizontal, i.e. adicionar mais máquinas aumenta a capacidade de processamento do sistema [1].
  • Como pode ser feito o gerenciamento de configuração?
    • Usar diversas máquinas virtuais leva ao problema de manter a configuração das máquinas consistente, principalmente no caso de clusters.
    • Automatização de configuração de novas instâncias
    • Soluções disponíveis: Ansible
      • Ansible é uma ferramenta de gerenciamento de configuração, implantação (deploy) e orquestração [7].
        • Diferencial: não necessita de um agente nas máquinas gerenciadas, uma vez que usa um modelo ‘push’, fazendo o gerenciamento via SSH (Linux) ou WinRM (Windows), usando frameworks existentes nessas plataformas. Por não ter agente, nenhum recurso é consumido nas máquinas gerenciadas.
        • Gerenciamento de configuração é feito via Playbooks, que são arquivos YAML que definem as tarefas de automação a serem executadas.
    • Escalabilidade automática de acordo com a demanda
      • Caso de uso: usar mais recursos em horários de pico, desligar esses recursos em horários de tráfego menor, para reduzir os custos do negócio sem perder disponibilidade.
      • Requer orquestração dos serviços
  • Como pode ser feita a orquestração de serviços?
    • Definição de fluxos de trabalho, políticas e regras
      • Provisionamento automático de recursos.
      • Balanceamento de carga.
      • Escalabilidade sob demanda/dinâmica, de acordo com a necessidade.
      • Automação dos fluxos de trabalho: definição programática (i.e. via código, como Dockerfile) dos serviços necessários para subir uma aplicação na infraestrutura em nuvem.
      • Definição de regras de escalabilidade, balanceamento de carga, entre outros.
    • Exemplos: Amazon Beanstalk, Google Cloud Composer
    • Referências na literatura [2, 3].