Introdução

Este documento apresenta uma visão abrangente da arquitetura do sistema de streaming de vídeos e transmissão ao vivo de conteúdo relacionado à programação. Desenvolvido para orientar os desenvolvedores de software, este guia tem como objetivo documentar de maneira clara e completa os requisitos essenciais para a construção bem-sucedida deste sistema inovador.

Finalidade do Documento:

Este documento tem como finalidade esclarecer e detalhar os requisitos fundamentais para o desenvolvimento do sistema. Elaborado com a intenção de ser um guia abrangente, visa fornecer referências essenciais ao longo de todas as etapas do ciclo de vida do projeto. Seu propósito é esclarecer e detalhar cada aspecto relevante, oferecendo uma base sólida para a sua criação e execução eficaz. Este guia se destaca como um recurso central para a equipe de desenvolvimento, proporcionando uma visão clara e abrangente do projeto.

Escopo do Documento:

Incluso no Documento

  • Requisitos fundamentais para a arquitetura do sistema CodeCast.
  • Detalhes sobre os principais componentes e estratégias arquiteturais.
  • Linguagens de programação utilizadas.
  • Banco de dados utilizados.
  • Diagramas.
  • entre outras informações.

Não Incluso no Documento:

  • Codificação do sistema.
  • Detalhes operacionais específicos da codificação.
  • Processos operacionais.
  • Documentação legal específica.
  • entre outros.

Definições, Acrônimos e Abreviações:

Definições:

  • CodeCast: Nome da plataforma de streaming de vídeos.
  • Live Coding: Prática de programar ao vivo para uma audiência.

Referências:

  • Documentos ou fontes consultadas durante a criação da arquitetura.
  • Padrões ou recursos relevantes.

Visão Geral do Documento:

Resumo das seções ou capítulos:

  • Introdução: Finalidade do documento.
  • Identificação do projeto: Descrição de algumas informações do projeto, como brainstormings, e listagem de requisitos funcionais e não funcionais.
  • Representação Arquitetural: Apresentação das visões arquiteturais.
  • Guia de Estilo: Detalhes do design do projeto, como Logo, tipografia, identidade visual, etc.
  • Padrões e Práticas Recomendadas: Padrões e práticas recomendadas para garantir a qualidade da arquitetura.
  • Comunicação e Integração:mecanismos de comunicação entre os componentes e APIs.
  • Segurança: Estratégias de segurança adotadas.
  • Desempenho e Escalabilidade: Detalhes que garantem o desempenho e a escalabilidade.
  • Realizações de Casos de Uso: Representações de casos de uso do sistema.
  • Plano de Risco: Avaliação dos possivéis riscos para o sistema.
  • Estimativas de Custo: Avaliação de estimativas de custo para a criação do sistema.
  • Prototipação: Prototipos das telas do sistema.
  • Metodologia: Descreve a metodologia utilizada para o desenvolvimento do sistema.
  • Visão Geral: Apresenta uma visão resumida do sistema.
  • Visão Lógica: Detalhes da lógica do sistema.
  • Visão de Implantação: Descreve a distribuição física do sistema.
  • Visão de Dados: Aborda a estrutura e gerenciamneto do banco de dados.
  • Qualidade: Descreve a qualidade do sistema.
  • Anexos:
  • Referências:

Público-Alvo:

Este documento é destinado a desenvolvedores de software, arquitetos de sistemas, e demais profissionais envolvidos no ciclo de desenvolvimento do projeto CodeCast.

Uso do Documento:

Os desenvolvedores podem utilizar este documento como referência para entender os requisitos arquiteturais do sistema CodeCast. Arquitetos de sistemas podem usá-lo como base para tomar decisões fundamentadas.

Resumo da Arquitetura:

A arquitetura do projeto é fundamentada no paradigma de microserviços, adotando uma abordagem distribuída para oferecer uma plataforma de streaming de vídeos e transmissões ao vivo relacionadas à programação.

Principais Componentes

  • Microserviços: Desenvolvidos principalmente em TypeScript, os microserviços são projetados para interagir de maneira eficaz, promovendo escalabilidade e manutenção eficientes.

  • Comunicação entre Microserviços: Utilização de chamadas de API REST para estabelecer a comunicação entre os diferentes serviços. Adoção de mensageria assíncrona, possivelmente implementada com tecnologias como RabbitMQ ou Kafka, para garantir eficiência em cenários assíncronos.

  • Protocolos e APIs: Predominância do protocolo HTTP, seguindo os princípios REST, para padronizar a comunicação entre os componentes. Exploração de protocolos de mensageria, como AMQP, para comunicação assíncrona.

  • Segurança: Implementação de práticas robustas de segurança, abrangendo a segurança da comunicação entre microserviços, o uso de contêineres seguros e a proteção de segredos, utilizando ferramentas como HashiCorp Vault, Microsoft Azure Key Vault ou Amazon KMS.

  • Orquestração de Containers: Possível utilização de tecnologias como Docker ou Kubernetes para orquestrar contêineres, garantindo uma abordagem dinâmica para dimensionar recursos conforme necessário.

  • Desempenho e Escalabilidade: Adoção de estratégias para otimização de desempenho e escalabilidade, visando uma arquitetura flexível e preparada para atender às demandas específicas da plataforma.