ΠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠ½ΡΡ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΡ
ΠΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠ½Π°Ρ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ° ΡΡΠ°Π»Π° ΡΡΠ°Π½Π΄Π°ΡΡΠΎΠΌ Π΄Π»Ρ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΡ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΡΠ΅ΠΌΡΡ , Π½Π°Π΄Π΅ΠΆΠ½ΡΡ ΠΈ Π³ΠΈΠ±ΠΊΠΈΡ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. ΠΠ½Π° ΠΏΠΎΠ΄ΡΠ°Π·ΡΠΌΠ΅Π²Π°Π΅Ρ ΡΠ°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π½Π° Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΡΠ΅ ΡΠ΅ΡΠ²ΠΈΡΡ, ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΈΠ· ΠΊΠΎΡΠΎΡΡΡ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΡΡΡΠΎΠ³ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΡΡ Π·Π°Π΄Π°ΡΡ. ΠΠ»Ρ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΉ, ΡΡΡΠ΅ΠΌΡΡΠΈΡ ΡΡ ΠΊ Π±ΡΡΡΡΠΎΠΉ Π°Π΄Π°ΠΏΡΠ°ΡΠΈΠΈ ΠΊ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡΠΈΠΌΡΡ Π±ΠΈΠ·Π½Π΅Ρ-ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡΠΌ ΠΈ ΡΠΎΠΊΡΠ°ΡΠ΅Π½ΠΈΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π²ΡΠ²ΠΎΠ΄Π° ΠΏΡΠΎΠ΄ΡΠΊΡΠ° Π½Π° ΡΡΠ½ΠΎΠΊ, ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΡ ΡΡΠ°Π½ΠΎΠ²ΡΡΡΡ ΠΎΠΏΡΠΈΠΌΠ°Π»ΡΠ½ΡΠΌ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ΠΌ.
ΠΠΎΡΠ΅ΠΌΡ Flask?
Flask β ΡΡΠΎ Π»Π΅Π³ΠΊΠΎΠ²Π΅ΡΠ½ΡΠΉ ΠΈ Π³ΠΈΠ±ΠΊΠΈΠΉ Π²Π΅Π±-ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ Π½Π° Python, ΠΈΠ΄Π΅Π°Π»ΡΠ½ΠΎ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡΠΈΠΉ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ RESTful API ΠΈ ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠΎΠ². ΠΠ³ΠΎ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΠΈΠ·ΠΌ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΡΠ΅ΡΠ΅Π½ΠΈΡ Π±ΡΡΡΡΠΎ, Π° ΡΠΈΡΠΎΠΊΠ°Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠΉ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΡ Π½Π° ΡΡΠΎΠ²Π½Π΅ ΠΊΡΡΠΏΠ½ΡΡ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠΎΠ². ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Flask Π² ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠ½ΠΎΠΉ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΠΈΠ·ΠΎΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅, ΡΠ΅ΡΡΠΈΡΡΠ΅ΠΌΡΠ΅ ΠΈ Π»Π΅Π³ΠΊΠΎ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΡΠ΅ΠΌΡΠ΅ ΡΠ΅ΡΠ²ΠΈΡΡ.
Celery Π΄Π»Ρ Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΡΡ Π·Π°Π΄Π°Ρ
Celery β ΡΡΠΎ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ Π΄Π»Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΡΠΎΠ½ΠΎΠ²ΡΡ Π·Π°Π΄Π°Ρ ΠΈ Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΠΎΠ³ΠΎ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΊΠΎΠ΄Π°. Π ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠ½ΠΎΠΉ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ΅ ΠΎΠ½ Π½Π΅Π·Π°ΠΌΠ΅Π½ΠΈΠΌ Π΄Π»Ρ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ Π½Π°Π³ΡΡΠ·ΠΊΠΈ, ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΎΡΠ΅ΡΠ΅Π΄Π΅ΠΉ, ΠΎΡΠΏΡΠ°Π²ΠΊΠΈ ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠΉ, Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠΈ ΠΎΡΡΠ΅ΡΠΎΠ² ΠΈ Π΄ΡΡΠ³ΠΈΡ Π΄ΠΎΠ»Π³ΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°ΡΡ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΠΏΠΎΡΠΎΠΊ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.
ΠΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Flask ΠΈ Celery Π² ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠ°Ρ
- ΠΠ°ΡΡΡΠ°Π±ΠΈΡΡΠ΅ΠΌΠΎΡΡΡ: ΠΠ°ΠΆΠ΄ΡΠΉ ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΠΎΠ²Π°ΡΡ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ, Π²ΡΠ΄Π΅Π»ΡΡ ΡΠ΅ΡΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π½Π°Π³ΡΡΠΆΠ΅Π½Π½ΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ².
- ΠΠΈΠ±ΠΊΠΎΡΡΡ: ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π²ΡΠ±ΠΎΡΠ° ΠΎΠΏΡΠΈΠΌΠ°Π»ΡΠ½ΡΡ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠ΅ΡΠ²ΠΈΡΠ°.
- ΠΡΡΡΡΠ°Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ°: Flask ΡΠΏΠΎΡΠΎΠ±ΡΡΠ²ΡΠ΅Ρ Π±ΡΡΡΡΠΎΠΉ ΡΠ±ΠΎΡΠΊΠ΅ ΠΈ ΡΠ°Π·Π²Π΅ΡΡΡΠ²Π°Π½ΠΈΡ ΡΠ΅ΡΠ²ΠΈΡΠΎΠ², Celery β ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΠΌΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π·Π°Π΄Π°ΡΠ°ΠΌΠΈ.
- ΠΡΠΊΠ°Π·ΠΎΡΡΡΠΎΠΉΡΠΈΠ²ΠΎΡΡΡ: ΠΡΠΎΠ±Π»Π΅ΠΌΡ Π² ΠΎΠ΄Π½ΠΎΠΌ ΡΠ΅ΡΠ²ΠΈΡΠ΅ Π½Π΅ Π²Π»ΠΈΡΡΡ Π½Π° ΡΠ°Π±ΠΎΡΠΎΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡΡ ΠΎΡΡΠ°Π»ΡΠ½ΡΡ .
Π‘ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΏΠΎΠ΄Ρ ΠΎΠ΄Ρ ΠΊ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ
1. ΠΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈΠ·Π°ΡΠΈΡ (Docker)
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Docker ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΈΠ·ΠΎΠ»ΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡ ΠΈ Π΅Π³ΠΎ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ, ΠΎΠ±Π»Π΅Π³ΡΠ°Ρ ΡΠ°Π·Π²Π΅ΡΡΡΠ²Π°Π½ΠΈΠ΅ ΠΈ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅. ΠΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈΠ·Π°ΡΠΈΡ ΡΠΏΠΎΡΠΎΠ±ΡΡΠ²ΡΠ΅Ρ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ ΡΡΠ΅Π΄Ρ ΠΈ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΠΈ CI/CD.
2. ΠΡΠΊΠ΅ΡΡΡΠ°ΡΠΈΡ (Kubernetes)
Kubernetes Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΡΠ΅Ρ ΡΠ°Π·Π²ΡΡΡΡΠ²Π°Π½ΠΈΠ΅, ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠ°ΠΌΠΈ, ΡΠΏΡΠΎΡΠ°Ρ ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ Π·Π° ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ΠΌ ΠΊΠ»Π°ΡΡΠ΅ΡΠ° ΠΈ Π±Π°Π»Π°Π½ΡΠΈΡΠΎΠ²ΠΊΡ Π½Π°Π³ΡΡΠ·ΠΊΠΈ.
3. API Gateway ΠΈ ΡΠ΅ΡΠ²ΠΈΡΠ½Π°Ρ ΡΠΈΠ½Π°
API Gateway Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΠΌΠ°ΡΡΡΡΡΠΈΠ·Π°ΡΠΈΡ Π·Π°ΠΏΡΠΎΡΠΎΠ², ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡ, Π° ΡΠ°ΠΊΠΆΠ΅ ΡΠ±ΠΎΡ ΠΈ Π°Π½Π°Π»ΠΈΠ· ΠΌΠ΅ΡΡΠΈΠΊ. Service Mesh (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Istio) ΡΠΏΡΠ°Π²Π»ΡΠ΅Ρ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ΠΌ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠ΅ΡΠ²ΠΈΡΠ°ΠΌΠΈ, ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Ρ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³, ΡΡΠ°ΡΡΠΈΡΠΎΠ²ΠΊΡ ΠΈ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΡΡ ΠΌΠ°ΡΡΡΡΡΠΈΠ·Π°ΡΠΈΡ.
4. ΠΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³ ΠΈ Π»ΠΎΠ³ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅
ΠΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³Π° (Prometheus, Grafana) ΠΈ Π»ΠΎΠ³ΠΈΡΠΎΠ²Π°Π½ΠΈΡ (ELK, Graylog) ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°ΡΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ ΡΠ΅ΡΠ²ΠΈΡΠΎΠ² ΠΈ Π±ΡΡΡΡΠΎ ΡΠ΅Π°Π³ΠΈΡΠΎΠ²Π°ΡΡ Π½Π° ΠΈΠ½ΡΠΈΠ΄Π΅Π½ΡΡ.
5. Π’Π΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ CI/CD
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΡΠ΅ΡΠ΅Π½ΠΈΠΉ Π΄Π»Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΠΈ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈ ΡΠ°Π·Π²Π΅ΡΡΡΠ²Π°Π½ΠΈΡ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π±ΡΡΡΡΠΎ Π²Π½Π΅Π΄ΡΡΡΡ Π½ΠΎΠ²ΡΠ΅ ΡΠΈΡΠΈ ΠΈ ΠΈΡΠΏΡΠ°Π²Π»ΡΡΡ ΠΎΡΠΈΠ±ΠΊΠΈ Π±Π΅Π· ΠΏΡΠΎΡΡΠΎΠ΅Π² Π΄Π»Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ.
Π Π΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠΎΠ² Π½Π° Flask
ΠΡΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠΎΠ² Π½Π° Flask Π²Π°ΠΆΠ½ΠΎ ΠΏΡΠΈΠ΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΡΡ ΠΏΡΠΈΠ½ΡΠΈΠΏΠΎΠ² SOLID ΠΈ DDD (Domain Driven Design). ΠΠ°ΠΆΠ΄ΡΠΉ ΡΠ΅ΡΠ²ΠΈΡ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΡΠΌ, ΠΈΠΌΠ΅ΡΡ ΡΡΡΠΊΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΡΠ΅ API, Π° Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠ΅ΡΠ²ΠΈΡΠ°ΠΌΠΈ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΡΠΌ ΠΈ ΡΡΠ°Π½Π΄Π°ΡΡΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ΅ΡΠ΅Π· REST ΠΈΠ»ΠΈ gRPC.
ΠΠ»Ρ ΠΎΠ±ΠΌΠ΅Π½Π° Π΄Π°Π½Π½ΡΠΌΠΈ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠ΅ΡΠ²ΠΈΡΠ°ΠΌΠΈ ΡΠ°ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π±ΡΠΎΠΊΠ΅ΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ RabbitMQ ΠΈΠ»ΠΈ Redis, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ°ΠΊΠΆΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Celery.
ΠΠ½Π΅Π΄ΡΠ΅Π½ΠΈΠ΅ Celery Π΄Π»Ρ Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΡΡ Π·Π°Π΄Π°Ρ
Celery ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π²ΡΠ½ΠΎΡΠΈΡΡ ΡΡΡΠ΄ΠΎΡΠΌΠΊΠΈΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ, ΠΎΡΠΏΡΠ°Π²ΠΊΡ e-mail, Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΡΠ°ΡΡΡΡΠΎΠ²) Π² ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΡ, Π½Π΅ Π±Π»ΠΎΠΊΠΈΡΡΡ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΡΠ΅ΡΠ²ΠΈΡ. ΠΡΠΎ ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°Π΅Ρ ΠΎΡΠ·ΡΠ²ΡΠΈΠ²ΠΎΡΡΡ API ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π³ΠΈΠ±ΠΊΠΎ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ ΡΠ΅ΡΡΡΡΡ ΡΠ°Π±ΠΎΡΠΈΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ² (workers).
ΠΠ»Ρ Π²ΡΡΠΎΠΊΠΎΠΉ Π½Π°Π΄Π΅ΠΆΠ½ΠΎΡΡΠΈ Π²Π°ΠΆΠ½ΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΡ ΠΎΡΠΈΠ±ΠΎΠΊ ΠΈ ΠΏΠΎΠ²ΡΠΎΡΠ½ΡΠ΅ ΠΏΠΎΠΏΡΡΠΊΠΈ (retries), Π° ΡΠ°ΠΊΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³ ΠΎΡΠ΅ΡΠ΅Π΄Π΅ΠΉ Π·Π°Π΄Π°Ρ.
ΠΠ΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡ ΠΈ ΠΎΡΠΊΠ°Π·ΠΎΡΡΡΠΎΠΉΡΠΈΠ²ΠΎΡΡΡ
ΠΠ°ΠΆΠ½ΠΎΠΉ ΡΠ°ΡΡΡΡ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΡ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΠ΅ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ: Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ ΠΈ Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΡ (OAuth2, JWT), ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΠ΅ Π΄Π°Π½Π½ΡΡ , ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ API. ΠΠ»Ρ ΠΎΡΠΊΠ°Π·ΠΎΡΡΡΠΎΠΉΡΠΈΠ²ΠΎΡΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΡΠ΅ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡ ΡΠ΅ΡΠ²ΠΈΡΠΎΠ², Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠΈ ΡΠ±ΠΎΡΡ ΠΈ Π±Π°Π»Π°Π½ΡΠΈΡΠΎΠ²ΠΊΠ° Π½Π°Π³ΡΡΠ·ΠΊΠΈ.
ΠΡΡΡΠΈΠ΅ ΠΏΡΠ°ΠΊΡΠΈΠΊΠΈ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΠΈ Flask ΠΈ Celery
- ΠΡΠ΄Π΅Π»ΡΠΉΡΠ΅ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ Π·Π°Π΄Π°Ρ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠΈΠΏΠ° ΡΠ°Π±ΠΎΡ.
- ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ Π²Π΅ΡΡΠΈΠΎΠ½ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ API Π΄Π»Ρ ΠΏΠ»Π°Π²Π½ΠΎΠ³ΠΎ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ ΡΠ΅ΡΠ²ΠΈΡΠΎΠ².
- ΠΠ½ΡΠ΅Π³ΡΠΈΡΡΠΉΡΠ΅ ΡΠΈΡΡΠ΅ΠΌΡ ΡΡΠ΅ΠΉΡΠΈΠ½Π³Π° (Jaeger, Zipkin) Π΄Π»Ρ Π΄ΠΈΠ°Π³Π½ΠΎΡΡΠΈΠΊΠΈ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΡΡ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΉ.
- ΠΠ²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΡΠΉΡΠ΅ Π΄Π΅ΠΏΠ»ΠΎΠΉ ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΡΠ΅ΡΠ²ΠΈΡΠΎΠ² ΡΠ΅ΡΠ΅Π· CI/CD.
- ΠΡΠΈΠΌΠ΅Π½ΡΠΉΡΠ΅ ΡΡΡΠ°ΡΠ΅Π³ΠΈΠΈ Blue/Green ΠΈ Canary Π΄Π»Ρ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΠ³ΠΎ Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ.
ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
ΠΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠ½Π°Ρ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ° Π½Π° Π±Π°Π·Π΅ Flask ΠΈ Celery β ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠ΅ ΠΈ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΡΠ΅ΠΌΡΡ , Π½Π°Π΄ΡΠΆΠ½ΡΡ ΠΈ Π³ΠΈΠ±ΠΊΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. ΠΡΠ°ΠΌΠΎΡΠ½ΠΎΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅, ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈΠ·Π°ΡΠΈΠΈ, Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ², ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³ ΠΈ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΠ΅ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΡΠ΅ΡΠ΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π»Π΅Π³ΠΊΠΎ Π°Π΄Π°ΠΏΡΠΈΡΡΡΡΡΡ ΠΊ ΡΠΎΡΡΡ Π±ΠΈΠ·Π½Π΅ΡΠ° ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡΠΈΠΌΡΡ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡΠΌ.
ΠΡΠ»ΠΈ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ Π²Π½Π΅Π΄ΡΠΈΡΡ ΠΈΠ»ΠΈ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠ½ΡΡ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΡ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Flask ΠΈ Celery β ΠΎΠ±ΡΠ°ΡΠΈΡΠ΅ΡΡ ΠΊ Π½Π°ΠΌ. ΠΠ°ΡΠΈ ΡΠΊΡΠΏΠ΅ΡΡΡ ΠΏΠΎΠΌΠΎΠ³ΡΡ Π²Π°ΠΌ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΠ΅ ΠΈ ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠ΅ IT-ΡΠ΅ΡΠ΅Π½ΠΈΠ΅.
Raman Sapezhka
CEO Plantago/CTO