Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Construindo sistemas robustos e escaláveis: explorando os fundamentos de system design

Ana Neri
August 28, 2023
5

Construindo sistemas robustos e escaláveis: explorando os fundamentos de system design

Nesta palestra, vamos mergulhar nos conceitos fundamentais de um system design e explorar como eles podem ser usados ​​para construir sistemas robustos e escaláveis. Abordaremos tópicos como Blob Storage, HTTP, Peer-to-Peer, modelo client-servidor e outros temas de construção essenciais de sistemas modernos.

Você aprenderá como projetar sistemas que podem lidar com grandes quantidades de dados, dimensionar para atender à demanda crescente e ser resilientes diante de falhas. Ao final da palestra, você terá uma sólida compreensão dos princípios do projeto de sistemas e será capaz de aplicá-los em seus próprios projetos. Quer você seja um iniciante ou um dev experiente, esta palestra fornecerá informações valiosas sobre a construção de sistemas que resistem ao teste do tempo.

Ana Neri

August 28, 2023
Tweet

Transcript

  1. 1.1 - VAMOS ENTENDER OS REQUISITOS FUNCIONAIS OS USUÁRIOS DEVEM

    TER A CAPACIDADE DE TRANSMITIR E COMPARTILHAR VÍDEOS. A EQUIPE DE CONTEÚDO (OU OS USUÁRIOS NO CASO DO YOUTUBE) DEVEM SER CAPAZES DE FAZER UPLOAD DE NOVOS VÍDEOS (FILMES, EPISÓDIOS DE PROGRAMAS DE TV E OUTROS CONTEÚDOS). OS USUÁRIOS DEVEM SER CAPAZES DE PESQUISAR VÍDEOS USANDO TÍTULOS OU TAGS. OS USUÁRIOS DEVEM SER CAPAZES DE COMENTAR EM UM VÍDEO, ASSIM COMO NO YOUTUBE. @ANANERIDEV
  2. 1.2 - VAMOS ENTENDER OS REQUISITOS NÃO FUNCIONAIS ALTA DISPONIBILIDADE

    COM LATÊNCIA MÍNIMA ALTA CONFIABILIDADE, NENHUM UPLOAD DE VÍDEO DEVERÁ SER PERDIDO O SISTEMA DEVE SER ESCALÁVEL EFICIENTE ALGUNS CONTEÚDOS TEM QUE TER BLOQUEAMENTO DE GEO LOCALIZAÇÃO DETERMINADO CONTEÚDO DEVE SER BLOQUEADO POR GEOLOCALIZAÇÃO RETOMAR A REPRODUÇÃO DE VÍDEOS A PARTIR DO PONTO EM QUE O USUÁRIO PAROU REGISTRAR MÉTRICAS E ANÁLISES DOS VÍDEOS @ANANERIDEV
  3. 1.3 - ESTIMATIVA MACRO DE ARMAZENAMENTO, TRÁFEGO E BANDA LARGA

    TIPO ESTIMATIVA Usuários ativos por dia 200 milhões Requisições por segundo 12k/s Armazenamento [por dia] +/- 5 TB Banda larga +/-50 BG/s @ANANERIDEV
  4. VOU MODELAR A API QUE OS SERVIÇOS VÃO SE COMUNICAR

    STREAMING DE VÍDEO Video ID (UUID): ID do vídeo que será transmitido Codec (Enum<string>): Requer o codec do vídeo em questão, such as h.265, h.264, VP9, etc. Resolution (Tuple<int>): Resolução do video Offset (int): Offset do fluxo de vídeo em segundos para transmitir dados de qualquer ponto do vídeo (opcional) Retorna Stream (VideoStream): Data stream do vídeo requisitado @ANANERIDEV
  5. VOU MODELAR A API QUE OS SERVIÇOS VÃO SE COMUNICAR

    UPLOAD DE VÍDEO Title (string): Titulo de um novo filme ou série Description (string): Descrição de um novo filme ou série Data (Byte[]): Byte stream do dado de um vídeo. Tags (string[]): Tags do video (opcional). Retorna Um boolean representando que a requisição teve sucesso ou não @ANANERIDEV
  6. VOU MODELAR A API QUE OS SERVIÇOS VÃO SE COMUNICAR

    BUSCA DE VÍDEO Query (string): Search query para buscar o usuário Next Page (string): Token para ir para a próxima pagina, uma paginação (opcional) Retorna Videos (Video[]): Todos os vídeos disponíveis para uma determinada query @ANANERIDEV
  7. VOU MODELAR A API QUE OS SERVIÇOS VÃO SE COMUNICAR

    COMENTÁRIO VideoID (UUID): ID do video que o usuário quer ou não comentar Comment (string): O texto em si a ser comentado Returns Um boolean representando que a requisição teve sucesso ou não @ANANERIDEV
  8. OLÁ(); SENIOR SOFTWARE ENGINEER RESOLVEDORA DE PROBLEMAS COM JAVASCRIPT E

    NODEJS BAIXISTA DE UMA BANDA DO POP E METAL MÃE DE PET CRIADORA DE CONTEÚDO TÉCNICO - @ANANERIDEV RATA DE ACADEMIA @ANANERIDEV
  9. BYE(); SENIOR SOFTWARE ENGINEER RESOLVEDORA DE PROBLEMAS COM JAVASCRIPT E

    NODEJS BAIXISTA DE UMA BANDA DO POP E METAL MÃE DE PET CRIADORA DE CONTEÚDO TÉCNICO - @ANANERIDEV RATA DE ACADEMIA @ANANERIDEV