Arquitetura de implantação
Termos e definições
APM
Análises por minuto. Observe:
Análise é uma solicitação para análise de QUALITY (Liveness) ou BIOMETRY usando uma única mídia.
Uma única análise com várias mídias conta como análises separadas em termos de APM.
Vários tipos de análise em uma única mídia (duas mídias para BIOMETRY) contam como análises separadas em termos de APM.
PoC
Prova de Conceito
Nó
Um Nó é uma máquina de trabalho. Pode ser uma máquina virtual ou física.
HA
Alta disponibilidade
K8s
Kubernetes
SC
StorageClass
RWX
ReadWriteMany
Descrição dos componentes
Componentes do Oz API:
APP é o aplicativo frontal da API que recebe solicitações REST, executa o pré-processamento e cria tarefas para outros componentes da API.
Celery é a fila assíncrona de tarefas. A API tem as seguintes filas do celery (observe: paramos de oferecer suporte ao Celery na versão 6.5.0):
Celery-default processa tarefas de todo o sistema.
Celery-maintenance processa tarefas de manutenção.
Celery-tfss processa tarefas de análise.
Celery-resolution verifica a conclusão de todas as análises aninhadas dentro de uma pasta e altera o status da pasta.
Celery-preview_convert cria uma prévia de vídeo para a mídia.
Celery-beat é um CronJob para gerenciar tarefas de manutenção do celery.
Celery-Flower é um coletor de métricas do Celery.
Celery-regula (opcional) processa tarefas de análise de documentos.
Redis é um broker de mensagens e backend de resultados para o Celery.
RabbitMQ (opcional) pode ser usado como broker de mensagens para o Celery em vez do Redis.
nginx serve arquivos estáticos de mídia para solicitações externas HTTP(s).
1:N (opcional) processa a análise de Blacklist.
Estatística (opcional) fornece estatísticas' coleção para o Web UI.
Web UI fornece a interface web.
BIO-Updater verifica atualizações dos modelos e baixa novos modelos.
Oz BIO (TFSS) executa o TensorFlow com modelos de IA e toma decisões para a mídia recebida.
O BIO-Updater e BIO os componentes exigem acesso aos seguintes recursos externos:
Cenários de implantação
O cenário de implantação depende da carga de trabalho esperada.
Casos de uso
Para fins de teste/desenvolvimento
Pequenas instalações com baixo número de APM
Uso típico com carga moderada
Alta carga com HA e escalonamento automático
Uso com provedor de nuvem
Carga de trabalho esperada
~6-8 APM
~250 000 análises por mês
~40-60 APM
500 000 a 1 000 000 análises por mês
60+ APM
1 000 000+ análises por mês
Ambiente
Docker
Docker
Kubernetes
HA
Não
Parcialmente
Sim
Prós
Requer uma quantidade mínima de recursos computacionais
Baixa complexidade, portanto não são necessários engenheiros altamente qualificados no local
Fácil de gerenciar e oferecer suporte
Suporta HA parcialmente
Pode ser ampliado para suportar uma carga de trabalho maior
HA e escalonamento automático
Observabilidade e gerenciabilidade
Permite alta carga de trabalho e pode ser ampliado
Contras
Adequado apenas para cargas baixas, sem APM alto
Sem escalonamento e alta disponibilidade
A HA da API requer balanceamento preciso
Requisitos mais altos de qualificação da equipe
Requisitos elevados de qualificação da equipe
Requisitos adicionais de infraestrutura
Requisitos de recursos externos
PostgreSQL
PostgreSQL
Volume compartilhado (R/W)
Para implantações em Kubernetes:
K8s v1.25+
ingress-nginx
clusterIssuer
kube-metrics
Prometheus
clusterAutoscaler
PostgreSQL
Volume compartilhado (R/W)
Redis
O escalonamento automático é implementado com base no ClusterAutoscaler e deve ser suportado pela sua infraestrutura.
Pequena empresa ou PoC
Consulte o guia de instalação aqui: Docker.
Tipo de containerização: Docker,
Tipo de instalação: Docker Compose,
Escalonamento automático/HA: nenhum.
Requisitos
Software
Docker 19.03+,
Podman 4.4+ (apenas para a API 5),
Python 3.4+.
Armazenamento
Depende da qualidade da mídia, do tipo e do número de análises e da profundidade de arquivamento necessária.
Pode ser calculado como: [average media size] * 2 * [analyses per day] * [archive depth in days]. Consulte este artigo a referência de tamanho da mídia.
Cada solicitação de análise executa operações de leitura e gravação no armazenamento. Qualquer latência adicional nessas operações impactará o tempo de análise.
Qualificação da equipe
Conhecimento básico de Linux e Docker.
Implantação
Dois nós:

Recursos:
2 nós,
16 CPU/32 RAM para o primeiro nó; 8 CPU/16 RAM para o segundo nó.
Carga média
Consulte o guia de instalação aqui: Docker.
Tipo de containerização: Docker (Podman é suportado apenas para a API 5),
Tipo de instalação: Docker Compose,
Escalonamento automático/HA: escalonamento manual; HA é parcialmente suportada.
Requisitos
Recursos computacionais
Dependendo da carga, você pode alterar o número de nós. No entanto, para 5+ nós, recomendamos que prossiga para a seção de Alta carga.
De 2 a 4 nós Docker (consulte esquemas):
2 nós:
24 CPU/32 RAM por nó.
3 nós:
16 CPU/24 RAM por nó.
4 nós:
8 CPU/16 RAM para dois nós (cada),
16 CPU/24 RAM para dois nós (cada).
Recomendamos usar um banco de dados PostgreSQL externo autogerenciado e um compartilhamento NFS.
Software
Docker 19.03+,
Podman 4.4+ (apenas para a API 5),
Python 3.4+.
Armazenamento
Depende da qualidade da mídia, do tipo e do número de análises e da profundidade de arquivamento necessária.
Pode ser calculado como: [average media size] * 2 * [analyses per day] * [archive depth in days]. Consulte este artigo a referência de tamanho da mídia.
Cada solicitação de análise executa operações de leitura e gravação no armazenamento. Qualquer latência adicional nessas operações impactará o tempo de análise.
Qualificação da equipe:
Conhecimento avançado de Linux, Docker e Postgres.
Implantação
Dois nós:

Três nós:

Quatro nós:

Alta carga
Consulte o guia de instalação aqui: Kubernetes.
Tipo de containerização: contêineres Docker com orquestração Kubernetes,
Tipo de instalação: gráficos Helm,
Escalonamento automático/HA: oferece suporte ao escalonamento automático; HA para a maioria dos componentes.
Requisitos
Recursos computacionais
3-4 nós. Dependendo da carga, você pode alterar o número de nós.
Nós de 16 CPU/32 RAM para os pods de BIO,
Nós de 8+ CPU/16+ RAM para toda a outra carga de trabalho.
Recomendamos usar um banco de dados PostgreSQL externo autogerenciado.
Requer StorageClass RWX (ReadWriteMany) ou compartilhamento NFS.
Software
Docker 19.03+,
Python 3.4+.
Armazenamento
Depende da qualidade da mídia, do tipo e do número de análises e da profundidade de arquivamento necessária.
Pode ser calculado como: [average media size] * 2 * [analyses per day] * [archive depth in days]. Consulte este artigo a referência de tamanho da mídia.
Cada solicitação de análise executa operações de leitura e gravação no armazenamento. Qualquer latência adicional nessas operações impactará o tempo de análise.
Qualificação da equipe:
Conhecimento avançado de Linux, Docker, Kubernetes e Postgres.
Esquema de implantação

Atualizado
Isto foi útil?
