introduction
salut!
Dans cet article, je partagerai mon expérience dans la construction d'une architecture de microservice pour un projet utilisant des réseaux de neurones.
Parlons des exigences de l'architecture, examinons divers schémas structurels, analysons chacun des composants de l'architecture finie et évaluons les métriques techniques de la solution.
Bonne lecture!
â .
, , . , , .
, .
, :
MTCNN. PyTorch, backbone ResNet34 â « / CPU»
ML , , .
ML
â -, . :
- â ,
- â Bottleneck
- - â
- () ,
- , ,
, .
, , Telegram API.
, , .
, Single Responsibility .
«attrai-telegram-bot»
Telegram API. 2 â . .
:
- , :
- ,
- docker volume
- âto_estimateâ , , , , volume
- â , . â , .
, , celery worker, «after_estimate», , .
âafter_estimateâ:
- â , â
- ,
«attrai-estimator»
celery worker , . â .
âto_estimateâ:
- :
- (MTCNN)
- ( ResNet34)
-
- bounding boxes
- ()
- âafter_estimateâ, âattrai-telegram-botâ
Graylog (+ mongoDB + Elasticsearch)
Graylog â . , .
, ELK , Python. , Graylog, GELFTCPHandler graypy root logger handlers python-.
, , ELK , , Graylog. , â Kibana - Graylog.
RabbitMQ
RabbitMQ â AMQP.
Redis
Redis â NoSQL , « â »
python- , - .
, Redis hashmap «telegram_user_id => », , , DoS-.
- Telegram
- «attrai-telegram-bot» Telegram API
- «to_estimate»
- «attrai-estimator» «to_estimate», «after_estimate»
- «attrai-telegram-bot», «after_estimate»,
DevOps
, , â DevOps
Docker Swarm
Docker Swarm - , Docker Engine .
«», 2 â worker manager. (), , . .
leader manager worker
â 1 , leader manager worker. , .
, , production-, , , , ( , - - , ).
Docker Stack
«» ( docker services) docker stack
docker-compose , deploy .
, ( N N , - , PyTorch`, )
attrai_estimator:
image: 'erqups/attrai_estimator:1.2'
deploy:
replicas: 4
resources:
limits:
cpus: '4'
restart_policy:
condition: on-failure
âŠ
, Redis, RabbitMQ Graylog â stateful , «attrai-estimator»,
â Kubernetes?
, Kubernetes â , Docker Swarm, user friendly , .
VDS :
- CPU: 4 IntelÂź XeonÂź Gold 5120 CPU @ 2.20GHz
- RAM: 8 GB
- SSD: 160 GB
, , , .
, , (, ), . CPU RAM .
, ,
, , â .
, , CPU, , .
J'ajouterai qu'au départ l'article était plus volumineux, mais afin de ne pas publier une longue lecture, j'ai décidé d'omettre certains points de cet article - nous y reviendrons dans les prochaines publications.
Vous pouvez piquer le bot dans Telegram - @AttraiBot, cela fonctionnera au moins jusqu'à la fin de l'automne 2020. Laissez-moi vous rappeler - aucune donnée utilisateur n'est stockée - ni les images d'origine, ni les résultats du pipeline d'évaluation - tout est démoli aprÚs le traitement.