Python na nuvem
OpenStack Swift
Denis Cavalcante: denis.cavalcante@lsbd.ufc.br
dencaval@gmail.com
Elvis Teixeira: elvis.teixeira@lsbd.ufc.br
elvismtt@gmail.com
OpenStack
- Escrito em python
- Open Source (Licença Apache 2.0)
- Comunidade ativa
- > 1500 contribuidores
- > 100 empresas
- > 250 projetos (módulos, clients, especificações…)
- Summit Event a cada 6 meses
- Lançamento de release a cada 6 meses
- Não há vendor lock-in (Grande disponbilidade de
drivers por diversas empresas)
O que é computação em nuvem
- Recursos remotos disponíveis e orquestrados.
- Cliente consome serviços ao invés de produtos.
- Flexibiliza e possibilita escalabilidade.
- Consumo otimizado dos recursos.
- IaaS PaaS DevaaS SaaS DBaaS EaaS
O que é OpenStack?
Principais módulos do OpenStack
Tipos de armazenamento
- Armazenamento em blocos.
- Tipo básico de armazenamento em discos.
- Sistemas de arquivos
- Tipo mais conhecido, organizado hierarquicamente.
- Armazenamento de objetos
- Armazena objetos imutáveis.
- Metadados arbitrários.
- Objetos tem um identificador universal.
OpenStack-Swift
- Serviço de armazenamento de objetos do
OpenStack;
- Massivamente escalável
- Sem ponto único de falha;
- Oferece interfaces via HTTP/REST, CLI, python e
wrappers para outras linguagens;
Arquitetura OpenStack-Swift
OpenStack-Swift Rings
- Basic Hashing
OpenStack-Swift Rings
- Consistent Hashing
Replicação
- O swift cluster é otimizado para armazenar suas
replicas em diferentes zonas e regiões;
- Não é necessário RAID.
- O Swift suporta múltiplas políticas de replicação.
Consistência Eventual
- Teorema CAP: Impossibilidade de se obter ao mesmo
tempo “Consistência”, “Disponibilidade” e “Tolerância a
particionamento”
- O Swift prioriza disponibilidade e tolerância a
particionamento.
- O Swift encara o problema da consistência por
meio de serviços auxiliares que verificam o
cluster periodicamente.
Consistência eventual Swift
- Replicator
- Verifica a integridade das réplicas e conserta as mesmas
transferindo de um nó para outro via RSync
- Deleta objetos marcados e deixa uma lápide no lugar.
- Auditor
- Verifica se os objetos não estão corrompidos.
- Updater
- Atualiza as listas de objetos nos containers.
OpenStack Swift Client
- Swiftclient python lib
- Dashboard / CLI / Others
- Requisições REST
- Object Storage API v1
- Gerencia accounts, containers, e objects.
- http://developer.openstack.org/api-ref-objectstorage-v1.html
V1 API - Accounts
- GET
/v1/​{account}​
Show account details and list containers
- POST
/v1/​{account}​
Create, update, or delete account metadata
- HEAD
/v1/​{account}​
Show account metadata
V1 API - Containers
- GET
/v1/​{account}​/​{container}​
Show container details and list objects
- PUT
/v1/​{account}​/​{container}​
Create container
- DELETE
/v1/​{account}​/​{container}​
Delete container
- POST
/v1/​{account}​/​{container}​
Create, update, or delete container metadata
- HEAD
/v1/​{account}​/​{container}​
Show container metadata
V1 API - Objects
- GET
/v1/​{account}​/​{container}​/​{object}​
Get object content and metadata
- PUT
/v1/​{account}​/​{container}​/​{object}​
Create or replace object
- COPY
/v1/​{account}​/​{container}​/​{object}​
Copy object
- DELETE
/v1/​{account}​/​{container}​/​{object}​
Delete object
- HEAD
/v1/​{account}​/​{container}​/​{object}​
Show object metadata
- POST
/v1/​{account}​/​{container}​/​{object}​
Create or update object metadata
Exemplos
Vamos para a prática!
Obrigado!
Denis Cavalcante:
denis.cavalcante@lsbd.ufc.br
dencaval@gmail.com
https://www.linkedin.com/in/deniscavalcante
Elvis Teixeira:
elvis.teixeira@lsbd.ufc.br
elvismtt@gmail.com
https://www.linkedin.com/in/elvisteixeira
Links
https://www.openstack.org/
http://www.openstack.org/software/
http://docs.openstack.org/juno/install-guide/install/apt/content/ch_overview.
html#architecture_overview
http://vmiss.net/openstack/openstack-swift-how-many-rings-to-rule-them-all/
http://michaelnielsen.org/blog/consistent-hashing/
https://julien.danjou.info/blog/2012/openstack-swift-consistency-analysis
https://ihong5.wordpress.com/tag/consistent-hashing-algorithm/
Eric Brewer, “CAP twelve years later: How the "rules" have changed”, IEEE Explore,
Volume 45, Issue 2 (2012), pg. 23-29.

Python na nuvem: OpenStack Swift