Padrões de design de melhores práticas: otimização do desempenho do Amazon S3
As aplicações podem executar facilmente milhares de transações por segundo em performance de solicitação ao fazer upload e recuperar armazenamento do Amazon S3. O Amazon S3 escala automaticamente para taxas de solicitações elevadas. Por exemplo, a aplicação pode atingir pelo menos 3,5 mil solicitações PUT/COPY/POST/DELETE ou 5,5 mil solicitações GET/HEAD por segundo por prefixo particionado do Amazon S3. Não há limite para o número de prefixos em um bucket. Você pode melhorar a performance de leitura ou gravação usando paralelização. Por exemplo, se você criar 10 prefixos em um bucket do Amazon S3 para paralelizar leituras, poderá escalar a performance de leitura para 55.000 solicitações de leitura por segundo. Da mesma forma, você pode dimensionar as operações de gravação gravando em vários prefixos. O ajuste de escala, no caso de operações de leitura e gravação, ocorre gradualmente e não é algo instantâneo. Embora o Amazon S3 esteja escalando para sua nova taxa de solicitação mais alta, você pode ver alguns erros 503 (desaceleração). Esses erros serão dissipados quando o ajuste de escala for concluído. Para obter mais informações sobre como criar e usar prefixos, consulte Organizar objetos usando prefixos.
Por exemplo, algumas aplicações de data lake no Amazon S3 verificam milhões ou bilhões de objetos para consultas que são executadas em petabytes de dados. Essas aplicações de data lake atingem taxas de transferência de instância única que maximizam o uso da interface de rede para a instância do Amazon EC2, que podem ser de até 100 Gb/s em uma única instância. Esses aplicativos então agregam a taxa de transferência em várias instâncias para obter vários terabits por segundo.
Outros aplicativos são sensíveis à latência, como aplicativos de mensagem de mídias sociais. Essas aplicações podem atingir latências consistentes de objetos pequenos (e latências de saída de primeiro byte para objetos maiores) de aproximadamente 100 a 200 milissegundos.
Outros serviços da AWS também podem ajudar a acelerar a performance para diferentes arquiteturas de aplicação. Por exemplo, para obter taxas de transferência mais altas em uma única conexão HTTP ou latências de um dígito de milissegundos, use o Amazon CloudFront ou o Amazon ElastiCache para armazenar em cache com o Amazon S3.
Além disso, se você quiser um transporte de dados rápido em longas distâncias entre um cliente e um bucket do S3, use Configurar transferências de arquivos rápidas e seguras usando o Amazon S3 Transfer Acceleration. O Transfer Acceleration usa os pontos de presença distribuídos globalmente no CloudFront para acelerar o transporte de dados em distâncias geográficas. Se a workload do Amazon S3 usa criptografia do lado do servidor com o AWS KMS, consulte Limites do AWS KMS no Guia do desenvolvedor do AWS Key Management Service para obter informações sobre as taxas de solicitações compatíveis com seu caso de uso.
Os tópicos a seguir descrevem as diretrizes de melhores práticas e os padrões de design para otimizar a performance de aplicações que usam o Amazon S3. Consulte Diretrizes de desempenho para o Amazon S3 e Padrões de design de desempenho do Amazon S3 para obter as informações mais recentes sobre a otimização de performance do Amazon S3.
nota
Para obter mais informações sobre o uso da classe de armazenamento Amazon S3 Express One Zone com buckets de diretório, consulte Buckets de diretório e S3 Express One Zone e Visão geral dos buckets de diretório.