ΠΡΡΡΠΏΠ»Π΅Π½ΠΈΠ΅
ΠΡΠΈΠ²Π΅Ρ!
Π Π΄Π°Π½Π½ΠΎΠΉ ΡΡΠ°ΡΡΠ΅ Ρ ΠΏΠΎΠ΄Π΅Π»ΡΡΡ ΠΎΠΏΡΡΠΎΠΌ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΡ ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠ½ΠΎΠΉ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΡ Π΄Π»Ρ ΠΏΡΠΎΠ΅ΠΊΡΠ°, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠ΅Π³ΠΎ Π½Π΅ΠΉΡΠΎΠ½Π½ΡΠ΅ ΡΠ΅ΡΠΈ.
ΠΠΎΠ³ΠΎΠ²ΠΎΡΠΈΠΌ ΠΎ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡΡ ΠΊ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ΅, ΠΏΠΎΡΠΌΠΎΡΡΠΈΠΌ Π½Π° ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΡΡΡΡΠΊΡΡΡΠ½ΡΠ΅ Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠΌΡ, ΡΠ°Π·Π±Π΅ΡΠ΅ΠΌ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΈΠ· ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² Π³ΠΎΡΠΎΠ²ΠΎΠΉ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΡ, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΎΡΠ΅Π½ΠΈΠΌ ΡΠ΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΌΠ΅ΡΡΠΈΠΊΠΈ ΡΠ΅ΡΠ΅Π½ΠΈΡ.
ΠΡΠΈΡΡΠ½ΠΎΠ³ΠΎ ΡΡΠ΅Π½ΠΈΡ!
ΠΠ°ΡΡ ΡΠ»ΠΎΠ² ΠΎ Π·Π°Π΄Π°ΡΠ΅ ΠΈ Π΅Π΅ ΡΠ΅ΡΠ΅Π½ΠΈΠΈ
ΠΡΠ½ΠΎΠ²Π½Π°Ρ ΠΈΠ΄Π΅Ρ β Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΡΠΎΡΠΎ Π΄Π°ΡΡ ΠΎΡΠ΅Π½ΠΊΡ ΠΏΡΠΈΠ²Π»Π΅ΠΊΠ°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΡΠ΅Π»ΠΎΠ²Π΅ΠΊΠ° ΠΏΠΎ Π΄Π΅ΡΡΡΠΈΠ±Π°Π»Π»ΡΠ½ΠΎΠΉ ΡΠΊΠ°Π»Π΅.
Π Π΄Π°Π½Π½ΠΎΠΉ ΡΡΠ°ΡΡΠ΅ ΠΌΡ ΠΎΡΠΎΠΉΠ΄Π΅ΠΌ ΠΎΡ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ Π½Π΅ΠΉΡΠΎΠ½Π½ΡΡ ΡΠ΅ΡΠ΅ΠΉ, ΡΠ°ΠΊ ΠΈ ΠΏΡΠΎΡΠ΅ΡΡΠ° ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΊΠΈ Π΄Π°Π½Π½ΡΡ , ΠΎΠ±ΡΡΠ΅Π½ΠΈΡ. ΠΠ΄Π½Π°ΠΊΠΎ, Π² ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· ΡΠ»Π΅Π΄ΡΡΡΠΈΡ ΠΏΡΠ±Π»ΠΈΠΊΠ°ΡΠΈΠΉ, ΠΌΡ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ Π²Π΅ΡΠ½Π΅ΠΌΡΡ ΠΊ ΡΠ°Π·Π±ΠΎΡΡ ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½Π° ΠΎΡΠ΅Π½ΠΊΠΈ Π½Π° ΡΠ³Π»ΡΠ±Π»Π΅Π½Π½ΠΎΠΌ ΡΡΠΎΠ²Π½Π΅.
Π‘Π΅ΠΉΡΠ°Ρ ΠΆΠ΅ ΠΌΡ Π²Π΅ΡΡ Π½Π΅ΡΡΠΎΠ²Π½Π΅Π²ΠΎ ΠΏΡΠΎΠΉΠ΄Π΅ΠΌΡΡ ΠΏΠΎ ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½Ρ ΠΎΡΠ΅Π½ΠΊΠΈ, Π° ΡΠΏΠΎΡ ΡΠ΄Π΅Π»Π°Π΅ΠΌ Π½Π° Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠΎΠ² Π² ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ΅ ΠΎΠ±ΡΠ΅ΠΉ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΡ ΠΏΡΠΎΠ΅ΠΊΡΠ°.Β
ΠΡΠΈ ΡΠ°Π±ΠΎΡΠ΅ Π½Π°Π΄ ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½ΠΎΠΌ ΠΎΡΠ΅Π½ΠΊΠΈ ΠΏΡΠΈΠ²Π»Π΅ΠΊΠ°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ, Π·Π°Π΄Π°ΡΠ° Π±ΡΠ»Π° Π΄Π΅ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡΠΎΠ²Π°Π½Π° Π½Π° ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΡΠΎΡΡΠ°Π²Π»ΡΡΡΠΈΠ΅:
- ΠΡΠ΄Π΅Π»Π΅Π½ΠΈΠ΅ Π»ΠΈΡ Π½Π° ΡΠΎΡΠΎ
- ΠΡΠ΅Π½ΠΊΠ° ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· Π»ΠΈΡ
- Π Π΅Π½Π΄Π΅Ρ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ°
ΠΠ΅ΡΠ²ΠΎΠ΅ ΡΠ΅ΡΠ°Π΅ΡΡΡ ΡΠΈΠ»Π°ΠΌΠΈ ΠΏΡΠ΅Π΄ΠΎΠ±ΡΡΠ΅Π½Π½ΠΎΠΉ
Π€ΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½Π°Ρ Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠΌΠ° ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½Π° ΠΎΡΠ΅Π½ΠΊΠΈ
ΠΠ½Π°Π»ΠΈΠ· ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ ΠΊ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΠ°
Π ΠΆΠΈΠ·Π½Π΅Π½Π½ΠΎΠΌ ΡΠΈΠΊΠ»Π΅
ΠΠΈΠ·Π½Π΅Π½Π½ΡΠΉ ΡΠΈΠΊΠ» 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)
ΠΡΠ±ΠΎΡ ΠΏΠ°Π» ΠΈΠΌΠ΅Π½Π½ΠΎ Π½Π° Π½Π΅Π³ΠΎ, Π° Π½Π΅ Π½Π° ΠΏΡΠΈΠ²ΡΡΠ½ΡΠΉ Π²ΡΠ΅ΠΌ
Π―, ΠΊΠ°ΠΊ ΡΠ΅Π»ΠΎΠ²Π΅ΠΊ, ΠΊΠΎΡΠΎΡΡΠΉ Π΄ΠΎ ΡΡΠΎΠ³ΠΎ ΡΠ°Π±ΠΎΡΠ°Π» ΡΠΎΠ»ΡΠΊΠΎ Ρ ELK ΡΡΡΠΊΠΎΠΌ, Π² ΡΠ΅Π»ΠΎΠΌ, ΠΏΠΎΠ»ΡΡΠΈΠ» ΠΏΠΎΠ·ΠΈΡΠΈΠ²Π½ΡΠΉ ΠΎΠΏΡΡ Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΡΠ°Π±ΠΎΡΡ Ρ Graylog. ΠΠ΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΠΎΠ΅, ΡΡΠΎ ΡΠ΄ΡΡΡΠ°Π΅Ρ β ΠΏΡΠ΅Π²ΠΎΡΡ ΠΎΠ΄ΡΡΠ²ΠΎ ΠΏΠΎ ΡΠΈΡΠ°ΠΌ Kibana Π½Π°Π΄ Π²Π΅Π±-ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠΌ Graylog.
RabbitMQ
Π Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡΠΎΠ΅ΠΊΡΠ΅ ΠΎΠ½ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΡΡ ΠΊΠ°ΠΊ
Redis
ΠΠ½ΠΎΠ³Π΄Π° Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π² ΡΠ°Π·Π½ΡΡ 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
Β
ΠΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ Β«ΡΠΎΡΒ», Π²ΡΠ΅ Π½ΠΎΠ΄Ρ Π½Π°ΡΠ΅Π³ΠΎ ΠΊΠ»Π°ΡΡΠ΅ΡΠ° ΠΌΠΎΠΆΠ½ΠΎ ΡΠ°Π·Π΄Π΅Π»ΠΈΡΡ Π½Π° 2 ΡΠΈΠΏΠ° β worker ΠΈ manager. ΠΠ° ΠΌΠ°ΡΠΈΠ½Π°Ρ
ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ ΡΠΈΠΏΠ° ΡΠ°Π·Π²ΠΎΡΠ°ΡΠΈΠ²Π°ΡΡΡΡ Π³ΡΡΠΏΠΏΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠ² (ΡΡΡΠΊΠΈ), ΠΌΠ°ΡΠΈΠ½Ρ Π²ΡΠΎΡΠΎΠ³ΠΎ ΡΠΈΠΏΠ° ΠΎΡΠ²Π΅ΡΠ°ΡΡ Π·Π° ΡΠΊΠ°Π»ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅, Π±Π°Π»Π°Π½ΡΠΈΡΠΎΠ²ΠΊΡ ΠΈ
ΠΠ»Π°ΡΡΠ΅Ρ Ρ ΠΎΠ΄Π½ΠΈΠΌ leader manager ΠΈ ΡΡΠ΅ΠΌΡ worker
ΠΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠΉ ΡΠ°Π·ΠΌΠ΅Ρ ΠΊΠ»Π°ΡΡΠ΅ΡΠ° β 1 Π½ΠΎΠ΄Π°, Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½Π°Ρ ΠΌΠ°ΡΠΈΠ½Π° Π±ΡΠ΄Π΅Ρ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ Π²ΡΡΡΡΠΏΠ°ΡΡ ΠΊΠ°ΠΊ leader manager ΠΈ worker. ΠΡΡ ΠΎΠ΄Ρ ΠΈΠ· ΡΠ°Π·ΠΌΠ΅ΡΠ° ΠΏΡΠΎΠ΅ΠΊΡΠ° ΠΈ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΡΡ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ ΠΊ ΠΎΡΠΊΠ°Π·ΠΎΡΡΡΠΎΠΉΡΠΈΠ²ΠΎΡΡΠΈ, Π±ΡΠ»ΠΎ ΠΏΡΠΈΠ½ΡΡΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΈΠΌΠ΅Π½Π½ΠΎ ΡΡΠΎΡ ΠΏΠΎΠ΄Ρ ΠΎΠ΄.
ΠΠ°Π±Π΅Π³Π°Ρ Π²ΠΏΠ΅ΡΠ΅Π΄, ΡΠΊΠ°ΠΆΡ, ΡΡΠΎ Ρ ΠΌΠΎΠΌΠ΅Π½ΡΠ° ΠΏΠ΅ΡΠ²ΠΎΠΉ production-ΠΏΠΎΡΡΠ°Π²ΠΊΠΈ, ΠΊΠΎΡΠΎΡΠ°Ρ Π±ΡΠ»Π° Π² ΡΠ΅ΡΠ΅Π΄ΠΈΠ½Π΅ ΠΈΡΠ½Ρ, ΠΏΡΠΎΠ±Π»Π΅ΠΌ, ΡΠ²ΡΠ·Π°Π½Π½ΡΡ Ρ Π΄Π°Π½Π½ΠΎΠΉ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΠ΅ΠΉ ΠΊΠ»Π°ΡΡΠ΅ΡΠ°, Π½Π΅ Π±ΡΠ»ΠΎ (Π½ΠΎ ΡΡΠΎ Π½Π΅ Π·Π½Π°ΡΠΈΡ, ΡΡΠΎ ΠΏΠΎΠ΄ΠΎΠ±Π½Π°Ρ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΡ Ρ ΠΎΡΡ ΡΠΊΠΎΠ»ΡΠΊΠΎ-Π½ΠΈΠ±ΡΠ΄Ρ Π΄ΠΎΠΏΡΡΡΠΈΠΌΠ° Π² Π»ΡΠ±ΡΡ ΡΡΠ΅Π΄Π½Π΅-ΠΊΡΡΠΏΠ½ΡΡ ΠΏΡΠΎΠ΅ΠΊΡΠ°Ρ , Π½Π° ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π°ΠΊΠ»Π°Π΄ΡΠ²Π°ΡΡΡΡ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡ ΠΏΠΎ ΠΎΡΠΊΠ°Π·ΠΎΡΡΡΠΎΠΉΡΠΈΠ²ΠΎΡΡΠΈ).
Docker Stack
Π ΡΠ΅ΠΆΠΈΠΌΠ΅ Β«ΡΠΎΡΒ» Π·Π° ΡΠ°Π·Π²Π΅ΡΡΡΠ²Π°Π½ΠΈΠ΅ ΡΡΡΠΊΠΎΠ² (Π½Π°Π±ΠΎΡΠΎΠ² docker services) ΠΎΡΠ²Π΅ΡΠ°Π΅Ρ
ΠΠ½ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ 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, ΡΡΠΏΠ΅ΡΠ½ΠΎ ΠΌΠΎΠ³ΡΡ ΠΏΠ΅ΡΠ΅Π½ΡΡΡ ΠΏΡΠ°ΠΊΡΠΈΠΊΠΈ, ΠΎΠΏΠΈΡΠ°Π½Π½ΡΠ΅ Π² Π΄Π°Π½Π½ΠΎΠΉ ΡΡΠ°ΡΡΠ΅.
ΠΠΎΠ±Π°Π²Π»Ρ, ΡΡΠΎ ΠΈΠ·Π½Π°ΡΠ°Π»ΡΠ½ΠΎ ΡΡΠ°ΡΡΡ Π±ΡΠ»Π° Π±ΠΎΠ»ΡΡΠ΅, Π½ΠΎ, Π΄Π°Π±Ρ Π½Π΅ ΠΏΠΎΡΡΠΈΡΡ Π»ΠΎΠ½Π³ΡΠΈΠ΄, ΡΠ΅ΡΠΈΠ» Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠΌΠ΅Π½ΡΡ Π² Π΄Π°Π½Π½ΠΎΠΉ ΡΡΠ°ΡΡΠ΅ ΠΎΠΏΡΡΡΠΈΡΡ β Π²Π΅ΡΠ½Π΅ΠΌΡΡ ΠΊ Π½ΠΈΠΌ Π² ΡΠ»Π΅Π΄ΡΡΡΠΈΡ ΠΏΡΠ±Π»ΠΈΠΊΠ°ΡΠΈΡΡ .
ΠΠΎΡΡΠΊΠ°ΡΡ Π±ΠΎΡΠ° ΠΌΠΎΠΆΠ½ΠΎ Π² Telegram β @AttraiBot, ΡΠ°Π±ΠΎΡΠ°ΡΡ Π±ΡΠ΄Π΅Ρ, ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡΠΌ, Π΄ΠΎ ΠΊΠΎΠ½ΡΠ° ΠΎΡΠ΅Π½ΠΈ 2020 Π³ΠΎΠ΄Π°. ΠΠ°ΠΏΠΎΠΌΠ½Ρ β Π½ΠΈΠΊΠ°ΠΊΠΈΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠ΅ Π΄Π°Π½Π½ΡΠ΅ Π½Π΅ Ρ ΡΠ°Π½ΡΡΡΡ β Π½ΠΈ ΠΈΡΡ ΠΎΠ΄Π½ΡΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ, Π½ΠΈ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½Π° ΠΎΡΠ΅Π½ΠΊΠΈ β Π²ΡΠ΅ ΡΠ½ΠΎΡΠΈΡΡΡ ΠΏΠΎΡΠ»Π΅ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ.
ΠΡΡΠΎΡΠ½ΠΈΠΊ: habr.com