Tópicos

Infrastructure as a Service (IaaS)

Providencia recursos de hardware virtualizados, tais como: computação, armazenamento e networking.

Os recursos são alocados on demand e o preço é deduzido por utilização.

Exemplos:

  • Amazon EC2 e Google Compute Engine (computação)
  • Amazon S3 (armazenamento)

OpenStack

Exemplo de IaaS, software open source cujo objetivo é configurar e controlar clouds públicas e privadas.

OpenStack Compute Providencia diferentes tipos de instâncias:

  • Servidores baremetal
  • Máquinas virtuais (VMs)
  • Containers (Docker, por exemplo)

OpenStack Storage As instâncias anteriormente mencionadas são efémeras, isto é, o estado é perdido quando a execução termina.

Assim, para a persistência de estado existem algumas alternativas:

  • Cinder (block storage)
  • Manila (sistemas de ficheiros partilháveis entre instâncias de computação)
  • Swift (armazenamento key-value, tipo um distributed hash map)

OpenStack Networking & Monitoring Dois serviços distintos:

  • Neutron é responsável pela gestão de redes (seguindo princípios de software defined networks)
  • Telemetry é responsável por monitorar a infraestrutura e os recursos virtualizados
    • Por exemplo, lançar mais instâncias de uma VM quando um certo threshold é atingido

Platform as a Service (PaaS)

O foco dos utilizadores está na funcionalidade do que vão dar deploy e não na configuração e especificação de quais recursos de hardware são necessários.

Por norma, estes serviços oferecem um ambiente onde é possível desenvolver a aplicação (em diversas linguagens e tecnologias) e depois fazer o deployment.

Exemplos:

  • Heroku
  • Fly.io

Software as a Service (SaaS)

Neste caso, falamos de aplicações já feitas que fornecem um certo serviço. Normalmente, estes serviços são utilizados por meio de uma API pública e bem documentada

Exemplos:

  • Sistemas de gestão de base de dados tipo o Amazon DynamoDB (serviço exposto através das credenciais de acesso à base de dados)
  • Google-apps (Gmail, etc)

Aspetos da utilização de uma cloud

Conveniência

IaaS

  • Evitar custos de infraestrutura não utilizada, pagos à cabeça
  • Mais fácil dar deploy de aplicações legacy

PaaS

  • Foco pode ficar simplesmente no desenvolvimento da aplicação e na engenharia de requisitos
  • Ferramentas de desenvolvimento, deployment, debugging e benchmarking já ao dispor

SaaS

  • Utilizar serviços já existentes, testados e bem integrados

Elasticidade

IaaS

  • Ilusão de recursos virtualizados infinitos
  • Utilizadores podem aumentar ou diminuir, consoante necessidade, o poder de computação, quantidade de armazenamento, etc

PaaS

  • A elasticidade é manuseada pelo cloud provider
  • Normalmente, a unidade de escalabilidade é a própria aplicação, não existe muita granularidade

SaaS

  • Tipicamente, o serviço já providencia esta elasticidade automaticamente

Perda de controlo

De notar que isto é uma desvantagem de todos estes serviços, se comparados com um deployment mais tradicional (feito on premises).

IaaS

  • Não existe controlo sobre o hardware e a virtualização utilizada

PaaS

  • Não existe controlo sobre requerer um tipo de hardware específico

SaaS

  • Software utilizada é produzido por terceiros e, normalmente, otimizado e configurado pelo cloud provider

Disponibilidade e Segurança

Isto vale para todos.

Caso o provider falhe (mesmo que improvável), a aplicação falha e a recuperação está fora do controlo do dono da mesma.

A aplicação é tão segura quanto o provider for.

  • Qualquer vunerabilidade do provider afetará o bom funcionamento da aplicação
  • A correção destas vulnerabilidades é, obviamente, feita pelo provider

Em termos de privacidade, vale lembrar que o provider possui informação sobre os utilizadores presentes na aplicação.

  • Existe o risco desta informação ser leaked por ataques internos ou externos
  • Dados críticos (hospitalares, por exemplo) são, por norma, protegidos por alguma legislação que proíbe que estes sejam guardados em serviços externos. Neste caso, não se pode sequer recorrer à cloud