pengantar
Halo!
Pada artikel ini, saya akan membagikan pengalaman saya dalam membangun arsitektur layanan mikro untuk sebuah proyek menggunakan jaringan saraf.
Mari kita bicara tentang persyaratan arsitektur, melihat berbagai diagram struktural, menganalisis setiap komponen arsitektur yang sudah jadi, dan mengevaluasi metrik teknis dari solusi tersebut.
Selamat membaca!
– .
, , . , , .
, .
, :
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, , .
Saya akan menambahkan bahwa awalnya artikel itu lebih besar, tetapi agar tidak memposting bacaan panjang, saya memutuskan untuk menghilangkan beberapa poin dalam artikel ini - kami akan kembali ke mereka di publikasi berikutnya.
Anda dapat menyodok bot di Telegram - @AttraiBot, itu akan berfungsi setidaknya hingga akhir musim gugur 2020. Izinkan saya mengingatkan Anda - tidak ada data pengguna yang disimpan - baik gambar asli maupun hasil dari jalur evaluasi - semuanya dihancurkan setelah diproses.