Otimizando o desempenho de transferência de arquivos e diretórios entre servidores e serviços de armazenamento em nuvem por André Rocha Agostinho - IPT (Mestrado Profissional – Engenharia de Computação)
Com o uso cada vez maior de serviços de armazenamento em nuvem, a necessidade em migrar, replicar ou sincronizar arquivos armazenados localmente para serviços de armazenamento remoto pode se tornar uma tarefa árdua para administradores de sistemas que muitas vezes não dispõem de soluções adequadas para atender necessidades específicas de uma organização. Esta proposta pretende abordar algorítmos, técnicas de otimização em linguagem de programação e boas práticas em configurações de infraestrutura de servidores para ganhos em desempenho na transferência de arquivos e diretórios entre servidores e serviços de armazenamento em nuvem. Para comprovar os resultados, a proposta utilizará de um estudo de caso real para uma empresa no segmento B2B, comprovando eficiência em ganhos de desempenho e abrindo discussões para soluções técnicas em cenários diversos
Similar to Otimizando o desempenho de transferência de arquivos e diretórios entre servidores e serviços de armazenamento em nuvem por André Rocha Agostinho - IPT (Mestrado Profissional – Engenharia de Computação)
Similar to Otimizando o desempenho de transferência de arquivos e diretórios entre servidores e serviços de armazenamento em nuvem por André Rocha Agostinho - IPT (Mestrado Profissional – Engenharia de Computação) (20)
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
Otimizando o desempenho de transferência de arquivos e diretórios entre servidores e serviços de armazenamento em nuvem por André Rocha Agostinho - IPT (Mestrado Profissional – Engenharia de Computação)
1. Proibida cópia ou divulgação sem
permissão escrita do CMG Brasil.
17 de maio de 2017
André Rocha Agostinho
Mestrando em engenharia da computação - IPT-USP
Chief Technology Officer SindicoNet / Magnadev
Otimizando o desempenho de transferência de
arquivos e diretórios entre servidores e serviços
de armazenamento em nuvem
2. Proibida cópia ou divulgação sem
permissão escrita do CMG Brasil.
Agenda
- Sobre a Cloud File System
- Objetivos da apresentação
- Otimizando para AWS S3
- Experimentos realizados
- Desafios na migração File System para
S3
- Conclusão do estudo
3. Proibida cópia ou divulgação sem
permissão escrita do CMG Brasil.
Sobre a Cloud File System - Definição
Cluster-Based Distributed File Systems
“The basic idea is simple: by distributing a large file across multiple servers, it
becomes possible to fetch different parts in Parallel.”
(Tanenbaum, 2007)
File System
“Collection of files, attributes, directories, and data blocks that are jointly
implemented as a logical block device” (Tanenbaum and Woodhull, 2006)
Distributed File System
”Distributed file systems allow multiple processes to share data over long
periods of time in a secure and reliable way. As such, they have been used as
the basic layer for distributed systems and applications.” (Tanenbaum and Van
Steen 2007)
• Client-Server Architectures / Network File System (NFS)
4. Proibida cópia ou divulgação sem
permissão escrita do CMG Brasil.
Sobre a Cloud File System - Características
- Suporte à operações como: create, delete, modify, read e write
- Escalabilidade e eslasticidade no compartilhamento de dados
- Cada arquivo pode ser particionado em diversas partes
“chunks”, sendo possível alocar cada chunk em máquinas
remotas diversas possibilitando paralelismo de PUT/GET.
- Existem diferentes formas de compartilhamento de dados, o que
exatamente se proporciona em um sistema de arquivos
distribuídos em nuvem, mas os requisitos não funcionais como
confiabilidade, disponibilidade e integridade são peças
fundamentais para assegurar segurança.
5. Proibida cópia ou divulgação sem
permissão escrita do CMG Brasil.
Sobre a Cloud File System – Exemplo GFS (Google File System)
Google file system (GFS), of which the design is described in Ghemawat et al. (2003).
6. Proibida cópia ou divulgação sem
permissão escrita do CMG Brasil.
Cloud File System
Region A
Server1Server1 Server2Server2 Server3Server3 ServerNServerN
...
Region N
Server1Server1 Server2Server2
......
Sobre a Cloud File System – Visão da arquitetura
Serviços de entrega
r
Serviços de computação e
serviços de armazenamento
estruturado
CDNs / Searchs
Serviços de
processamento
r
APIsPUT GET
7. Proibida cópia ou divulgação sem
permissão escrita do CMG Brasil.
Objetivos da apresentação
Objetivo 1
Apresentar formas de como melhorar o desempenho na transferência de
arquivos (PUT/GET) para uma Cloud File System
Objetivo 3
Analisar os desafios e soluções na migração de File System para Cloud File
System utilizando-se de um cenário hipotético
Objetivo 2
Utilizar as soluções apresentadas no Objetivo 1 para rodar experimentos que
possam comprovar ou não melhorias no desempenho de transferência de arquivos
8. Proibida cópia ou divulgação sem
permissão escrita do CMG Brasil.
Otimizando o uso do AWS S3
O Amazon Simple Storage Service (AWS S3) é um serviço de
armazenamento de objetos com uma interface de web service simples para
armazenar e recuperar qualquer volume de dados de qualquer parte da
web.
• Durabilidade de 99,9999%
• Escalar mais de 1 trilhão de objetos em todo o mundo
• Baixos custos de infra-estrutura
Utilizado para:
-Armazenamento de dados não estruturados
-Distribuição de conteúdo
-Backup e arquivamento
-Recuperação de desastres
-Hospedagem de websites estáticos
9. Proibida cópia ou divulgação sem
permissão escrita do CMG Brasil.
Otimizando o uso do AWS S3
- Regions
- Configuração das Instâncias
- Keyname Building
- Otimizando operações GET, LIST e PUT
- Aceleração de transferência
- Maximizando TCP
10. Proibida cópia ou divulgação sem
permissão escrita do CMG Brasil.
Otimizando o uso do AWS S3
- Regions
Escolher a região do bucket mais próximo dos recursos consumidores
•A decisão não apenas afetará o desempenho das requisições como também custos
•Caso seja necessário atuar em N regiões, é possível ativar o recurso de replicação
cross-region
11. Proibida cópia ou divulgação sem
permissão escrita do CMG Brasil.
Otimizando o uso do AWS S3
- Regions
Paridade Região Instância X Região S3
Amazon Web Services Network Test
Teste realizado dentro de um servidor EC2 (c4.large)
12. Proibida cópia ou divulgação sem
permissão escrita do CMG Brasil.
Otimizando o uso do AWS S3
- Configuração das instâncias
O tipo de instância influencia diretamente em:
- Processamento: capacidade de execução de requisições API
- Rede: capacidade de transferência de pacotes X largura de banda
Instância c4.4xlarge – 16vCPUs – Rede Gigabit
13. Proibida cópia ou divulgação sem
permissão escrita do CMG Brasil.
Otimizando o uso do AWS S3
- Configuração das instâncias
O tipo de instância influencia diretamente em:
- Processamento: capacidade de execução de requisições API
- Rede: capacidade de transferência de pacotes X largura de banda
Instância c4.8xlarge – 32 vCPUs – Rede 10 Gbps
14. Proibida cópia ou divulgação sem
permissão escrita do CMG Brasil.
Otimizando o uso do AWS S3
Considerações iniciais
• Key name não é um diretório!
• É um identificador único para um objeto em um bucket
• Cada bucket deve ter um nome único (independente da região)
• Cada objeto em um bucket tem exatamente uma key name
https://magnadev.s3.amazonaws.com/files/d4o9rd2.jpg
BUCKET NAME KEYNAME
- Key name Building
15. Proibida cópia ou divulgação sem
permissão escrita do CMG Brasil.
Otimizando o uso do AWS S3
- Key name Building
Prefixo - Irá influenciar diretamente no desempenho GET
• A utilização de prefixo sequencial é uma prática ruim e irá influenciar em requisições
GET, principalmente se for listar objetos
Frequentemente usado:
http://doc.s3.cmgbrasil.com/2017/s3.pptx
http://doc.s3.cmgbrasil.com/2017/ec2.pptx
http://doc.s3.cmgbrasil.com/2017/route53.pptx
Recomendado:
http://doc.s3.cmgbrasil.com/685732017/s3.pptx
http://doc.s3.cmgbrasil.com/182622017/ec2.pptx
http://doc.s3.cmgbrasil.com/278222017/route53.pptx
16. Proibida cópia ou divulgação sem
permissão escrita do CMG Brasil.
Otimizando o uso do AWS S3
- Key name Building
Como funciona o armazenamento de key names
1. O serviço S3 mantem um índice de objeto “key names” para cada região
2. As keys são amarzenadas em binário (UTF-8) e ordenadas em partições
3. Usando um prefixo sequencial como data/alfabético aumentará a probabilidade de
se alocar uma específica partição para um grande volume de keys simplesmente
pelo agrupamento de prefixo.
Region Key Name’s Index
PartitionPartition PartitionPartition PartitionPartition PartitionPartition
Key1Key1 Key2Key2 Key3Key3 KeyNKeyN
17. Proibida cópia ou divulgação sem
permissão escrita do CMG Brasil.
Otimizando o uso do AWS S3
- Key name Building
Como funciona o armazenamento de key names
1. A utilização de um hash no prefixo da keyname quebra o agrupamento
2. Força a distribuição da key name nas demais partições
Region KeyName’s Index
PartitionPartition PartitionPartition PartitionPartition Partition/Partition/
7832Key17832Key1 322Key2322Key2 489Key3489Key3 164KeyN164KeyN
18. Proibida cópia ou divulgação sem
permissão escrita do CMG Brasil.
Otimizando o uso do AWS S3
- Key name Building
Parâmetros para uso - Request Rate
Contato AWS
Recomendado quando existe um
processo rotineiro de 100 ou mais
solicitações por segundo
PUT/DELETE
LIST/GET
Frequência alta
more than 300 PUT/LIST/DELETE requests per second
more than 800 GET requests per second
19. Proibida cópia ou divulgação sem
permissão escrita do CMG Brasil.
Otimizando o uso do AWS S3
- Key name Building
Referências na aplicação (Anti-Pattern)
1. Operações de listagem (Ex: Thumbnails)
2. Políticas de LifeCycle
3. Listagens com filtros baseado em prefixo
4. Get by key name
Region KeyName’s Index
PartitionPartition PartitionPartition PartitionPartition Partition/Partition/
group1/78
32Key1
group1/78
32Key1
group1/32
2Key2
group1/32
2Key2
group2/48
9Key3
group2/48
9Key3
group3/16
4KeyN
group3/16
4KeyN
Categorizar prefixo
para sorting
20. Proibida cópia ou divulgação sem
permissão escrita do CMG Brasil.
Otimizando o uso do AWS S3
- Key name Building
Randomização de prefixo
1. Caracteres curtos (4 primeiros caracteres)
2. Epoch Timestamp, MD5, SHA-1, GUID...
Recomendado:
http://doc.s3.cmgbrasil.com/d41d2017/s3.pptx
http://doc.s3.cmgbrasil.com/da392017/ec2.pptx
http://doc.s3.cmgbrasil.com/c1382017/route53.pptx
21. Proibida cópia ou divulgação sem
permissão escrita do CMG Brasil.
Otimizando o uso do AWS S3
- Otimizando GET
Utilização de uma CDN
•Cloudfront: +50 camadas localizadas no mundo tudo
•Fornece baixas latências e altas taxas de transferência para operações de leitura
•Reduz o número de requisições GETs aos buckets
•Fornece gestão e aplicação de camada de cacheamento
S3
Bucket1Bucket1
Bucket
N
Bucket
N...
Serviços de entrega
CDNs / Searchs
Servidores
Server1Server1
Server2Server2
22. Proibida cópia ou divulgação sem
permissão escrita do CMG Brasil.
Otimizando o uso do AWS S3
- Otimizando GET – S3 c/ CloudFront
S3
Bucket público:
magnadev-public
Arquivo: image2.jpg
Tamanho: 9,70 MB
EC2 C4.Large
Processador 2,9 GHz Intel
Xeon E5-2666 v3 – 2vCPUS
Rede VPC AWS - Network
Performance: moderado
EC2
Win
Server
Win
Server
S3
Bucket1Bucket1
Cloudfront
Cloudfront
d23xzegsqzlrl2.cloudfront.net
Apontado para o bucket
público: magnadev-public
Suporte: HTTPS/HTTP
23. Proibida cópia ou divulgação sem
permissão escrita do CMG Brasil.
Otimizando o uso do AWS S3
- Otimizando GET – S3 c/ CloudFront
Cloudfront
S3
Cloudfront: 156ms S3: 230.5ms
Tempo de carregamento: 32% menor
24. Proibida cópia ou divulgação sem
permissão escrita do CMG Brasil.
Otimizando o uso do AWS S3
- Otimizando GET – Aplicação de cacheamento HTTP
Cache-Control e E-Tag – Cacheamento HTTP
“cache control: max-age"
Essa diretiva especifica o tempo máximo, em
segundos, que a resposta recuperada pode ser
reutilizada, a partir do momento da solicitação.
“etag"
O servidor usa a ETag de cabeçalho HTTP para
comunicar um token de validação. O token de
validação permite verificações eficientes de
atualização de recursos: nenhum dado é transferido se
o recurso não foi alterado.
25. Proibida cópia ou divulgação sem
permissão escrita do CMG Brasil.
Otimizando o uso do AWS S3
- Otimizando GET – Aplicação de cacheamento HTTP
Aplicando metatag Cache Control
setmeta files/* -s
-meta:"cache-control: max-age= 36000"
• Via programas (S3 Browser, Bucket Explorer, etc), APIs (por
exemplo .Net SKD) e Command Line Utility (Ex: S3Express, s3cmd
e outros)
26. Proibida cópia ou divulgação sem
permissão escrita do CMG Brasil.
Otimizando o uso do AWS S3
- Otimizando GET – Aplicação de cacheamento HTTP
Resultados com metatags aplicadas
Max-Age >= 3600
27. Proibida cópia ou divulgação sem
permissão escrita do CMG Brasil.
Otimizando o uso do AWS S3
- Otimizando GET – HTTP 2.0
Configuração de HTTP 2.0 para otimizar GETs em páginas web
http://caniuse.com/#feat=http2- Windows Server 2016 – IIS 10
- Linux
28. Proibida cópia ou divulgação sem
permissão escrita do CMG Brasil.
Otimizando o uso do AWS S3
- Otimizando GET – HTTP 2.0
Requisições em HTTP 1.1
Tempo de renderização final:
355ms
29. Proibida cópia ou divulgação sem
permissão escrita do CMG Brasil.
Otimizando o uso do AWS S3
- Otimizando GET – HTTP 2.0
Requisições em HTTP 2
Tempo de renderização final: 82ms
30. Proibida cópia ou divulgação sem
permissão escrita do CMG Brasil.
Otimizando o uso do AWS S3
- Otimizando LIST
• Operação LIST é muito custosa e pesada!
• Utilizar um índice secundário para armazenar informações sobre as key names e
potencializar GET para recurso a ser baixado
SQL
Servidor Web
S3
Bucket1Bucket1
Bucket
N
Bucket
N...
CDN
doc.cmgbrasil.starwars/d48dR2D2.JPG
doc.cmgbrasil.starwars/d48dSTORM.JPG
31. Proibida cópia ou divulgação sem
permissão escrita do CMG Brasil.
Otimizando o uso do AWS S3
- Otimizando PUT
Segmentação de arquivos com Multipart via API
- Indicado para objetos >= 100 mb
- Multipart upload transfere um único objeto como com um conjunto de partes
- A partes dos objetos podem ser transferidas em qualquer ordem
- O S3 recebe as partes do objeto e remonta o objeto ao fim de transferência
32. Proibida cópia ou divulgação sem
permissão escrita do CMG Brasil.
Otimizando o uso do AWS S3
- Otimizando PUT
Segmentação de arquivos com Multipart via API
Pela API
-Tracking control: progresso de envio
-Possibilidade de enviar partes em paralelo
-Controle de falha/restart de todo o processo
-Partes menores (chunks) minizam impactos de restarting
33. Proibida cópia ou divulgação sem
permissão escrita do CMG Brasil.
Otimizando o uso do AWS S3
- Otimizando PUT
Multithreading de chamadas API
- Aumenta a velocidade de transferência de objetos usando o paralelismo de threads e
escalando execuções na CPU
- Deve ser aplicado diretamente na linguagem de programação que está usando o SDK
- Para uma maior eficiência considerar
- Servidores com 2 ou mais núcleos
- Redes >= 100Mb/s
Exemplo de multhireading usando C#
34. Proibida cópia ou divulgação sem
permissão escrita do CMG Brasil.
Otimizando o uso do AWS S3
- Otimizando PUT
Multithreading de chamadas API
Using C# Parallel to copy files to S3
Estudo publicado por minha autoria em 2015 que avaliou e comprovou a
eficiência no desempenho de transferência de objetos
http://aragostinho.github.io/2015/03/11/using-c-parallel-to-copy-files-to-s3.html
Execution Time Elapsed Perfomance
Classic For Each 30m 46s 12ms -
Parallel.ForEach in directories 3m 25s 842ms 9.34x faster
Parallel.ForEach in directories and files 3m 15s 990ms 9.64x faster
35. Proibida cópia ou divulgação sem
permissão escrita do CMG Brasil.
Otimizando o uso do AWS S3
- Maximizando TCP
As conexões com o serviço S3 ocorrem através de portas dinâmicas
ConsoleApp
de replicação
usando AWS APIs
cmd prompt netstat -anob
36. Proibida cópia ou divulgação sem
permissão escrita do CMG Brasil.
Otimizando o uso do AWS S3
- Maximizando TCP
Portas dinâmicas – range de portas
•Internet Assigned Numbers Authority (IANA): 49152 à 65535
•Linux versões mais recentes: 32768 à 61000
•Windows Server 2012 e 2016: 49152–65535
Em cenários onde o servidor tiver uma carga elevada de trabalho
com o uso do S3:
-Grande volume de transferência de arquivos (PUT)
-Muitas requisições de arquivos (GET/LIST)
•É aconselhável verificar o uso de portas dinâmicas (dump nestat)
•Efetuar configurações de portas do servidor se detectado um grande uso de
portas dinâmicas com bases nas referências de range de portas do SO
37. Proibida cópia ou divulgação sem
permissão escrita do CMG Brasil.
Otimizando o uso do AWS S3
- Maximizando TCP
Portas dinâmicas – exaustão de portas
38. Proibida cópia ou divulgação sem
permissão escrita do CMG Brasil.
Otimizando o uso do AWS S3
- Maximizando TCP
Aumentando portas dinâmicas no Windows Server
netsh int ipv4 show dynamicportrange tcp
netsh int ipv4 set dynamicport tcp
start=1025 num=64510
Via cdm prompt
39. Proibida cópia ou divulgação sem
permissão escrita do CMG Brasil.
Otimizando o uso do AWS S3
- Maximizando TCP
Redução do TIME_WAIT (quando necessário)
TIME_WAIT:
O tempo de espera que uma conexão fechada possa ser liberada para reutilização.
A RFC 793 requer que a TCP mantenha uma conexão fechada em um intervalo de ao
menos 2x tempo de vida máximo de um segmento de rede (120 segundos)
Clint Huffman Microsoft PFE - Technet
“Also, consider decreasing the TIMED WAIT delay using the TcpTimedWaitDelay registry
key”
40. Proibida cópia ou divulgação sem
permissão escrita do CMG Brasil.
Otimizando o uso do AWS S3
- Maximizando TCP
Redução do TIME_WAIT (quando necessário)
1. Executar Regedit
2. HKEY_LOCAL_MACHINESYSTEMCurrentControlSetservicesTcpipParameters
3. Criar uma nova entrada DWORD (32 bit) named: TcpTimedWaitDelay
4. Setar um valor decimal
5. Reboot
Valor mínimo: 30
Valor máximo: 240
41. Proibida cópia ou divulgação sem
permissão escrita do CMG Brasil.
Otimizando o uso do AWS S3
- Acelerador de transferência
S3 Transfer Acceleration
- Indicado para ganhos de perfomance na transferência de arquivos para buckets em
regiões diversas
- Faz intermediação com o S3 endpoint carregando todo o tráfego HTTP/HTTPS
para uma ponte de rede otimizada que funciona entre a camada Cloudfront mais
próxima
- A ativação é feita sobre o bucket porém seu uso é feito somenta na chamada APIAmazon S3 Transfer Acceleration
Speed Comparison
42. Proibida cópia ou divulgação sem
permissão escrita do CMG Brasil.
Experimentos de replicação de arquivos para S3
Escopo
- O objetivo desta seção é abordar um experimento que pode ser
aplicado para simular a replicação de arquivos considerando os
seguintes tópicos abordados:
- Uso de servidores EC2 em 3 diferentes tipos de instância
- Criação do bucket S3 na mesma região dos servidores EC2
- Uma ferramenta de transferência multi-threading criada
especificamente para a replicação de dados
Não será abordado no experimento:
- Construção de keynames com hash
- Maximização de portas TCP
- Upload usando multi-part (chunks)
- Ativação do S3 Transfer Acceleration
43. Proibida cópia ou divulgação sem
permissão escrita do CMG Brasil.
Experimentos de replicação de arquivos para S3
Escopo
- Utilizado:
- Os serviços AWS Ec2 e S3
- Windows Server 2016
- AWS SDK para .NET (Linguagem C#)
- Algoritmos e técnicas de programação usando paralelismo
- Ao todo 2 experimentos foram executados:
- Experimento A - Transferência Non-Multithreading
- Experimento B - Transferência Multithreading
- Benchmarking dos resultados
44. Proibida cópia ou divulgação sem
permissão escrita do CMG Brasil.
Experimentos de replicação de arquivos para S3
• Para testar os experimentos um diretório “samplefolder” foi criado com 4 arquivos:
Casos de
testes
Arquivos Diretórios
Níveis de
diretórios
Distribuição
Arquivos/Pasta
Tamanho total
1 8.000 2.000 1 4 3.80GB
2 30.000 3.000 3 10 6.69GB
3 100.000 25.000 1 4 47.5GB
Casos de testes
• O mesmo diretório foi replicado para compor 3 casos de testes
1.94MB
45. Proibida cópia ou divulgação sem
permissão escrita do CMG Brasil.
Experimentos de replicação de arquivos para S3
• 3 computadores EC2 como palco do experimentos
• Processadores Intel Xeon E5-2666 v3 (Haswell) de alta frequência otimizados
especificamente para o EC2 classe de instância c4
• Otimizado para EBS por padrão
• Suporte a redes aperfeiçoadas e clustering
Name Memory vCPUs Instance Storage
Network
Performance
EBS Optimized:
Max Bandwidth
c4.large 3.75 GB 2 vCPUs EBS only Moderate 500.0 Mbps
c4.xlarge 7.5 GB 4 vCPUs EBS only High 750.0 Mbps
c4.2xlarge 15.0 GB 8 vCPUs EBS only High 1000.0 Mbps
Ambientes
46. Proibida cópia ou divulgação sem
permissão escrita do CMG Brasil.
Experimentos de replicação de arquivos para S3
Ferramenta de replicação
CopyFasterToS3 - Console aplication desenvolvida para auxiliar na cópia de
milhões de arquivos durante um projeto de migração. Solução utilizada para
suprir a carência de ferramentas não otimizadas para este fim.
Descrição técnica
•AWS S3 SDK .Net versão 3.3.5
•.Net C# - Framework 4.5
•Multithread usando C# Parallels
•Algorítimo de recursividade em cauda
•Stopwatch (System.Diagnostics) para benchmarking
Código aberto em:
https://github.com/aragostinho/CopyFasterToS3
47. Proibida cópia ou divulgação sem
permissão escrita do CMG Brasil.
Experimentos de replicação de arquivos para S3
Ferramenta execução dos testes
Console application CopyFasterToS3
48. Proibida cópia ou divulgação sem
permissão escrita do CMG Brasil.
Experimentos de replicação de arquivos para S3
Ferramenta execução dos testes
Console application CopyFasterToS3
Exemplo de método recursivo em cauda usando ForEach Parallel
(System.Threading.Tasks.Parallel) para chamada do método SaveObject() da classe
BAmazon().
49. Proibida cópia ou divulgação sem
permissão escrita do CMG Brasil.
Experimentos de replicação de arquivos para S3
Método de benchmarking – Time Elapsed de processamento
Exemplo de benchmarking usando a classe Stopwatch() para capturar o Time Elapsed do
processamento do método ReplicationFiles() da classe estática ReplicationToS3().
A impressão da saída na console aplication é composta por horas, minutos, segundos e
milesegundos.
50. Proibida cópia ou divulgação sem
permissão escrita do CMG Brasil.
Experimentos de replicação de arquivos para S3
Método de benchmarking – Exemplo
51. Proibida cópia ou divulgação sem
permissão escrita do CMG Brasil.
Experimentos de replicação de arquivos para S3
Etapas de execução do testes
1) Experimento A
Transferência Non-Multithreading
2) Experimento B
Transferência Multithreading
52. Proibida cópia ou divulgação sem
permissão escrita do CMG Brasil.
Experimentos de replicação de arquivos para S3
Servidor Caso de teste 1 Caso de teste 2 Caso de teste 3
c4.large 00h 09m 19s 998ms 00h 27m 59s 001ms 02h 00m 12s 295ms
c4.xlarge 00h 09m 39s 195ms 00h 27m 00s 800ms 01h 57m 29s 282ms
c4.2xlarge 00h 09m 04s 300ms 00h 26m 15s 684ms 02h 02m 02s 069ms
1) Resultados: Experimento A
53. Proibida cópia ou divulgação sem
permissão escrita do CMG Brasil.
Experimentos de replicação de arquivos para S3
Servidor Caso de teste 1 Caso de teste 2 Caso de teste 3
c4.large 00h 01m 32s 861ms 00h 02m 59s 952ms 00h 17m 45s 375ms
c4.xlarge 00h 00m 59s 225ms 00h 02m 01s 554ms 00h 09m 38s 791ms
c4.2xlarge 00h 00m 43s 619ms 00h 01m 33s 790ms 00h 07m 08s 656ms
2) Resultados: Experimento B
54. Proibida cópia ou divulgação sem
permissão escrita do CMG Brasil.
Experimentos de replicação de arquivos para S3
Servidor Experimento A Experimento B
c4.large 02h 37m 31s 294ms 00h 22m 18s 188ms
c4.xlarge 02h 34m 09s 277ms 00h 12m 39s 570ms
c4.2xlarge 02h 37m 22s 053ms 00h 09m 26s 065ms
Total 07h 49m 02s 624ms 00h 44m 23s 823ms
3) Comparando os resultados
Experimento B foi 90%mais eficiente que o experimento A
55. Proibida cópia ou divulgação sem
permissão escrita do CMG Brasil.
Desafios na migração de File System para S3
Uma empresa hipotética de e-commerce já possui alguns de
seus serviços em nuvem AWS
- Servidores já se encontram virtualizados (EC2).
- Redes VPC, Blocos de IP, Zona DNS e Load Balance
configurados.
Porém... essa mesma empresa ainda utiliza armazenamento de arquivos
em File System padrão com um GRANDE VOLUME de dados (TBs).
O CTO da empresa decide que é hora de migrar todo o volume de dados
para armazenamento de arquivos na nuvem, e decide junto a equipe
técnica utilizar a AWS S3.
Por onde começar?
56. Proibida cópia ou divulgação sem
permissão escrita do CMG Brasil.
Desafios na migração de File System para S3
Quais soluções?
Baixar (free) e/ou comprar ferramentas na AWS Marketplace?
Apertar botões e está tudo resolvido?!
Dificilmente isso
vai dar certo!
57. Proibida cópia ou divulgação sem
permissão escrita do CMG Brasil.
Desafios na migração de File System para S3
Pré-requisitos:
- Entender a diferença entre File System e Cloud File System
- Conhecer profundamente o serviço de Cloud File System a ser
utilizado:
- Disponibilidade
- Escalabilidade
- Custos
- Segurança
- Desempenho
- Dependendo das necessidades ferramentas não farão milagres.
- Recrutar profissionais capacitados.
- Montar um projeto de migração.
58. Proibida cópia ou divulgação sem
permissão escrita do CMG Brasil.
Desafios na migração de File System para S3
Elicitação de requisitos do projeto de migração:
- Analisar cuidadosamente o que deve ser migrado
- Fazer tudo? Por partes? Paralelo?
- Levantar informações sobre o que será migrado
- Volume de diretórios e arquivos
- Tamanho médio de cada arquivo
- Tamanho total de diretórios
- Tipos de arquivos
- Definir acessibilidade
- O que deve ser público? O que deve ser privado?
- Estrutura hierárquica de diretórios
- Será mantida? Sofrerá alterações?
59. Proibida cópia ou divulgação sem
permissão escrita do CMG Brasil.
Desafios na migração de File System para S3
Elicitação de requisitos do projeto de migração:
- Estrutura de diretórios
- Como manter?
Como aplicar as recomendações de key name?
- Arquivos
- Como aplicar recomendações de key name?
- Como aplicar recomendações para GET?
- Volume de transferência
- Como transferir com eficiência?
- Como garantir a integridade dos arquivos transferidos?
- Como manter a integridade entre o que está sendo migrado e o
que ainda não foi migrado?
60. Proibida cópia ou divulgação sem
permissão escrita do CMG Brasil.
Desafios na migração de File System para S3
Após levantar todas as possíveis perguntas….
- Algumas das respostas estão no uso de boas práticas citadas
nesta apresentação.
- Porém, para todas elas será necessário o uso de SDKs.
61. Proibida cópia ou divulgação sem
permissão escrita do CMG Brasil.
Desafios na migração de File System para S3
SDKs
- A utilização de SDKs facilitam a manipulação de operações
PUT/GET/LIST para a linguagem de programação a ser usada.
- Algumas configurações só podem ser feitas pela API, por
exemplo o uso do S3 Transfer Aceleration.
- Indicado para atender à todos os requisitos do projeto de
migração como por exemplo modificação da estrutura de
diretórios e uso de recomendações para key names.
- Antes mesmo de migrar, permite que o software legado possa ser
implementado com o SDK e já comece a atuar na nova estrutura
de arquivos no S3.
62. Proibida cópia ou divulgação sem
permissão escrita do CMG Brasil.
Desafios na migração de File System para S3
Utilitários
S3CMD s4cmd
Super S3
command
line tool
Linux/Mac PythonWindows
- Podem ser usados para mover grande volumes de arquivos
sem uma estratégia de modificação de estrutura de diretório
e confecção de key names.
- Úteis para atuar em arquivos que já estão no S3, como por
exemplo a aplicação de metatags em arquivos e encryptação.
63. Proibida cópia ou divulgação sem
permissão escrita do CMG Brasil.
Conclusão do estudo
Objetivo 1
Boas práticas e recomendações de uso da AWS S3 proporcionaram
boas melhorias no desempenho de operações PUT/GET/LIST.
Objetivo 2
Os experimentos executados comprovam a eficiência nas técnicas linguagem de
programação empregadas com o intuito de potencializar o uso das APIs. O
experimento B usando a transferência multithreading foi 90% mais eficiente
que o experimento.
Objetivo 3
A migração de File System para Cloud File System deve ser planejada
considerando diversos questionamentos entre Stakeholders e equipe técnica. Os
dois sistemas de arquivos por serem completamente diferentes, não
proporcionam uma migração simples e sem um bom conhecimento.
64. Proibida cópia ou divulgação sem
permissão escrita do CMG Brasil.
That's all folks!
Obrigado :)
André Rocha Agostinho
andre@magnadev.com.br
https://github.com/aragostinho Doubts?
Contact me!
65. Proibida cópia ou divulgação sem
permissão escrita do CMG Brasil.
Referências
Distributed systems principles and paradigms
Tanembaum S. Andrew, Van S. Maarten (2007)
Operating Systems Design and Implementation
Tanembaum S. Andrew, Woodhull S. Albert (2006)
AWS Storage Services - Overview - A Look at Storage Services Offered by AWS
https://d0.awsstatic.com/whitepapers/AWS%20Storage%20Services%20Whitepaper-v9.pdf
Maximizing Amazon S3 Performance | AWS re:Invent 2014 - Felipe Garcia
https://www.slideshare.net/AmazonWebServices/pfc403-maximizing-amazon-s3-performance-aws-reinvent-2014?
ref=https://cloudnative.io/blog/2015/01/aws-s3-performance-tuning/
10 Things You Might Not Know About Using S3
https://www.sumologic.com/aws/s3/10-things-might-not-know-using-s3/
AWS S3 Performance Tuning
https://cloudnative.io/blog/2015/01/aws-s3-performance-tuning
Request Rate – Perfomance Considerations
http://docs.aws.amazon.com/AmazonS3/latest/dev/request-rate-perf-considerations.html
66. Proibida cópia ou divulgação sem
permissão escrita do CMG Brasil.
Referências
TCP Window Scaling
http://docs.aws.amazon.com/AmazonS3/latest/dev/TCPWindowScaling.html
TCP Extensions for High Performance V. Jacobson, R. Braden, D. Borman - Network Working Group
http://www.ietf.org/rfc/rfc1323.txt
The TIME-WAIT state in TCP and Its Effect on Busy Servers - Theodore Faber, Joe Touch, Wei Yue -
University of Southern California/Information Sciences Institute
http://www.isi.edu/touch/pubs/infocomm99/infocomm99-web/
Detecting ephemeral port exhaustion – Technet Microsoft
https://blogs.technet.microsoft.com/clinth/2013/08/09/detecting-ephemeral-port-exhaustion/
Amazon S3 Transfer Acceleration Examples
http://docs.aws.amazon.com/AmazonS3/latest/dev/transfer-acceleration-examples.html
Service Name and Transport Protocol Port Number Registry
https://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.xhtml
AWS S3 vs Google Cloud vs Azure: Cloud Storage Performance
http://blog.zachbjornson.com/2015/12/29/cloud-storage-performance.html
67. Proibida cópia ou divulgação sem
permissão escrita do CMG Brasil.
Anexos
Execução do testes – Servidor c4.large - Multithreading
2 Caso de teste:
00h 02m 59s 952ms
3 Caso de teste:
00h 17m 45s 375ms
1 Caso de teste:
00h 01m 31s 861ms
68. Proibida cópia ou divulgação sem
permissão escrita do CMG Brasil.
Anexos
Execução do testes – Servidor c4.xlarge - Multithreading
2 Caso de teste:
00h 02m 01s 554ms
3 Caso de teste:
00h 09m 38s 791ms
1 Caso de teste:
00h 00m 59s 225ms
69. Proibida cópia ou divulgação sem
permissão escrita do CMG Brasil.
Anexos
Execução do testes – Servidor c4.2xlarge - Multithreading
2 Caso de teste:
1m 33s 790ms
3 Caso de teste:
7m 08s 656ms
1 Caso de teste:
43s 619ms
70. Proibida cópia ou divulgação sem
permissão escrita do CMG Brasil.
Anexos
Execução do testes – Servidor c4.large - NonMultithreading
2 Caso de teste:
00h 27m 59s 001ms
3 Caso de teste:
02h 00m 12s 295ms
1 Caso de teste:
00h 09m 19s 998ms
71. Proibida cópia ou divulgação sem
permissão escrita do CMG Brasil.
Anexos
Execução do testes – Servidor c4.xlarge - NonMultithreading
2 Caso de teste:
00h 27m 00s 800ms
3 Caso de teste:
01h 57m 29s 282ms
1 Caso de teste:
00h 9m 39s 195ms
72. Proibida cópia ou divulgação sem
permissão escrita do CMG Brasil.
Anexos
Execução do testes – Servidor c4.2xlarge - NonMultithreading
2 Caso de teste:
00h 26m 15s 684ms
3 Caso de teste:
02h 02m 02s 069ms
1 Caso de teste:
00h 9m 04s 300ms
Editor's Notes
Google files tend to be very large, commonly ranging up to multiple gigabytes, where each one contains lots of smaller objects. Moreover, updates to files usually take place by appending data rather than overwriting parts of a file. These observations, along with the fact that server failures are the norm rather than the exception, lead to constructing clusters of servers as shown in Fig. 11-5. Each GFS cluster consists of a single master along with multiple chunk servers. Each GFS file is divided into chunks of 64 Mbyte each, after which these chunks are distributed across what are called chunk servers. An important observation is that a GFS master is contacted only for metadata information. In particular, a GFS client passes a file name and chunk index to the master, expecting a contact address for the chunk. The contact address contains all the information to access the correct chunk server to obtain the required file chunk. To this end, the GFS master essentially maintains a name space, along with a mapping from file name to chunks. Each chunk has an associated identifier that will allow a chunk server to lookup it up. In addition, the master keeps track of where a chunk is located. Chunks are replicated to handle failures, but no more than that. An interesting feature is that the GFS master does not attempt to keep an accurate account of chunk locations. Instead, it occasionally contacts the chunk servers to see which chunks they have stored. The advantage of this scheme is simplicity. Note that the master is in control of allocating chunks to chunk servers. In addition, the chunk servers keep an account of what they have stored. As a consequence, once the master has obtained chunk locations, it has an accurate picture of where data is stored. However, matters would become complicated if this view had to be consistent all the time. For example, every time a chunk server crashes or when a server is added, the master would need to be informed. Instead, it is much simpler to refresh its information from the current set of chunk servers through polling. GFS clients simply get to know which chunk servers the master believes is storing the requested data. Because chunks are replicated anyway, there is a high probability that a chunk is available on at least one of the chunk servers