ΠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅: ΠΠΎΡΠ΅ΠΌΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈΠ·Π°ΡΠΈΡ ΡΠ°ΠΊ Π²Π°ΠΆΠ½Π°?
Π‘ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΡΡΠ΅Π±ΡΠ΅Ρ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ Π±ΡΡΡΡΠΎΠ³ΠΎ ΠΏΡΠΎΡΠΎΡΠΈΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΡ, Π½ΠΎ ΠΈ ΠΏΡΠΎΡΡΠΎΡΡ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΠΎΠ²Π°Π½ΠΈΡ, Π½Π°Π΄Π΅ΠΆΠ½ΠΎΡΡΠΈ ΠΈ Π³ΠΈΠ±ΠΊΠΎΡΡΠΈ Π² ΡΠ°Π·Π²Π΅ΡΡΡΠ²Π°Π½ΠΈΠΈ. Flask-ΠΏΡΠΎΠ΅ΠΊΡΡ, ΠΊΠ°ΠΊ ΠΈ Π»ΡΠ±ΡΠ΅ Π΄ΡΡΠ³ΠΈΠ΅ Python-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΡΡΠ°Π»ΠΊΠΈΠ²Π°ΡΡΡΡ Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°ΠΌΠΈ ΠΏΠ΅ΡΠ΅Π½ΠΎΡΠΈΠΌΠΎΡΡΠΈ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠΌΠΈ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡΠΌΠΈ. ΠΠ΄Π΅ΡΡ Π½Π° ΠΏΠΎΠΌΠΎΡΡ ΠΏΡΠΈΡ ΠΎΠ΄ΠΈΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈΠ·Π°ΡΠΈΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Docker β ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· ΡΠ°ΠΌΡΡ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΡ ΡΠ΅ΡΠ΅Π½ΠΈΠΉ Π΄Π»Ρ ΡΠΏΠ°ΠΊΠΎΠ²ΠΊΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π²ΠΌΠ΅ΡΡΠ΅ ΡΠΎ Π²ΡΠ΅ΠΌΠΈ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡΠΌΠΈ. ΠΡΠΎΠ±Π΅Π½Π½ΠΎ Π²ΠΎΡΡΡΠ΅Π±ΠΎΠ²Π°Π½Π° ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈΠ·Π°ΡΠΈΡ ΠΏΡΠΈ Π΄Π΅ΠΏΠ»ΠΎΠ΅ Π² ΠΎΠ±Π»Π°ΡΠ½ΡΠ΅ ΡΠ΅ΡΠ²ΠΈΡΡ, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Heroku, Yandex Cloud ΠΈ AWS.
Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ Docker ΠΈ Π·Π°ΡΠ΅ΠΌ ΠΎΠ½ Π½ΡΠΆΠ΅Π½ Flask-ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌ?
Docker β ΡΡΠΎ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΈΠ·ΠΎΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΎΠ΄Π΅ΡΠΆΠ°Ρ Π²ΡΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ: ΠΊΠΎΠ΄, Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ, Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ, ΡΠΈΡΡΠ΅ΠΌΠ½ΡΠ΅ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ. ΠΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΡ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ Π·Π°ΠΏΡΡΠΊΠ°ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π² ΠΈΠ΄Π΅Π½ΡΠΈΡΠ½ΡΡ ΡΡΠ»ΠΎΠ²ΠΈΡΡ Π²Π½Π΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ Ρ ΠΎΡΡΠΎΠ²ΠΎΠΉ ΠΠ‘. ΠΠ»Ρ Flask-ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² Docker Π΄Π°Π΅Ρ:
- ΠΠ΄ΠΈΠ½ΠΎΠ΅ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ, ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈ ΠΏΡΠΎΠ΄Π°ΠΊΡΠ΅Π½Π°
- ΠΡΡΡΡΡΡ ΠΌΠΈΠ³ΡΠ°ΡΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠ΅ΡΠ²Π΅ΡΠ°ΠΌΠΈ ΠΈ ΠΎΠ±Π»Π°ΠΊΠ°ΠΌΠΈ
- ΠΠ΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡ ΠΈ ΠΈΠ·ΠΎΠ»ΡΡΠΈΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ²
- ΠΠΈΠ±ΠΊΠΎΡΡΡ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΠΈ
Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Docker-ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° Π΄Π»Ρ Flask-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ
- ΠΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΊΠ° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ
Π‘ΡΡΡΠΊΡΡΡΠΈΡΡΠΉΡΠ΅ ΠΏΡΠΎΠ΅ΠΊΡ, Π²ΡΠ½Π΅ΡΠΈΡΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ Π²requirements.txt
. - Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Dockerfile
ΠΡΠΈΠΌΠ΅Ρ ΠΏΡΠΎΡΡΠΎΠ³ΠΎ Dockerfile:FROM python:3.11-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY . .
CMD ["python", "app.py"] - Π‘Π±ΠΎΡΠΊΠ° ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°
ΠΡΠΏΠΎΠ»Π½ΠΈΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρdocker build -t flask-app .
- ΠΠ°ΠΏΡΡΠΊ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°
ΠΠ°ΠΏΡΡΡΠΈΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉdocker run -p 5000:5000 flask-app
ΠΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π° Docker-ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠ² Π΄Π»Ρ Π΄Π΅ΠΏΠ»ΠΎΡ
- Π£ΠΏΡΠΎΡΠ΅Π½Π½Π°Ρ Π΄ΠΎΡΡΠ°Π²ΠΊΠ° ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ
- ΠΠΈΠ½ΠΈΠΌΠΈΠ·Π°ΡΠΈΡ Β«it works on my machineΒ» ΠΏΡΠΎΠ±Π»Π΅ΠΌ
- ΠΡΡΡΡΠΎΠ΅ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π² ΠΎΠ±Π»Π°ΠΊΠ΅
- ΠΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ Ρ CI/CD ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½Π°ΠΌΠΈ
ΠΠ΅ΠΏΠ»ΠΎΠΉ Flask-ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠ² Π² ΠΎΠ±Π»Π°ΠΊΠΎ
1. Heroku
- Heroku ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ Π΄Π΅ΠΏΠ»ΠΎΠΉ Docker-ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠ² Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ
heroku container:push
. - Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° Heroku, Π°Π²ΡΠΎΡΠΈΠ·ΡΠΉΡΠ΅ΡΡ Π² CLI, Π²ΡΠΏΠΎΠ»Π½ΠΈΡΠ΅:
heroku container:login
heroku container:push web -a <your-app-name>
heroku container:release web -a <your-app-name>
2. Yandex Cloud
- Yandex Cloud ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠ΅ΡΠ²ΠΈΡ Container Registry ΠΈ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ Compute Cloud Π΄Π»Ρ Π·Π°ΠΏΡΡΠΊΠ° ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠ².
- ΠΡΠ½ΠΎΠ²Π½ΡΠ΅ ΡΠ°Π³ΠΈ:
- ΠΠ°Π³ΡΡΠ·ΠΈΡΠ΅ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ Π² Yandex Container Registry
- Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΡΡ ΠΌΠ°ΡΠΈΠ½Ρ ΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ Yandex Managed Service for Kubernetes
- ΠΠ°ΡΡΡΠΎΠΉΡΠ΅ Π·Π°ΠΏΡΡΠΊ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° ΡΠ΅ΡΠ΅Π· ΠΎΠ±Π»Π°ΡΠ½ΡΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΠΈΠ»ΠΈ CLI
3. AWS (Amazon Web Services)
- AWS ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠ°Π·Π½ΠΎΠΎΠ±ΡΠ°Π·Π½ΡΠ΅ ΡΠ΅ΡΠ²ΠΈΡΡ Π΄Π»Ρ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠ²: Elastic Container Service (ECS), Elastic Kubernetes Service (EKS), Lightsail.
- ΠΡΠΎΡΡΠ΅ΠΉΡΠΈΠΉ ΡΠΏΠΎΡΠΎΠ± β Π·Π°Π³ΡΡΠ·ΠΈΡΡ Docker-ΠΎΠ±ΡΠ°Π· Π² Amazon Elastic Container Registry (ECR), Π·Π°ΡΠ΅ΠΌ ΡΠ°Π·Π²Π΅ΡΠ½ΡΡΡ ΡΠ΅ΡΠ΅Π· ECS ΠΈΠ»ΠΈ EKS.
Π‘ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ best practices ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈΠ·Π°ΡΠΈΠΈ Flask-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ
- ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ Π»Π΅Π³ΠΊΠΎΠ²Π΅ΡΠ½ΡΠ΅ Π±Π°Π·ΠΎΠ²ΡΠ΅ ΠΎΠ±ΡΠ°Π·Ρ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ,
python:3.x-slim
) - ΠΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡΡΠΉΡΠ΅ ΡΠ»ΠΎΠΉ ΠΎΠ±ΡΠ°Π·Π° β ΡΠ΄Π°Π»ΡΠΉΡΠ΅ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ ΠΈ ΠΊΡΡ
- ΠΠΊΠ»ΡΡΠ°ΠΉΡΠ΅ ΡΠΎΠ»ΡΠΊΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ
- ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ Π΄Π»Ρ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ
- ΠΠ°ΡΡΡΠ°ΠΈΠ²Π°ΠΉΡΠ΅ healthchecks Π΄Π»Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³Π° ΡΠΎΡΡΠΎΡΠ½ΠΈΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°
- Π Π΅Π°Π»ΠΈΠ·ΡΠΉΡΠ΅ CI/CD Π΄Π»Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π±ΠΈΠ»Π΄Π° ΠΈ Π΄Π΅ΠΏΠ»ΠΎΡ
ΠΠ²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΡ Π΄Π΅ΠΏΠ»ΠΎΡ: CI/CD Π΄Π»Ρ Flask + Docker
ΠΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ Docker Π² Π²Π°ΡΠΈ ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½Ρ CI/CD (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ΅ΡΠ΅Π· GitHub Actions, GitLab CI, Jenkins) ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ:
- ΠΠ²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠΎΠ±ΠΈΡΠ°ΡΡ ΠΎΠ±ΡΠ°Π·Ρ ΠΈΠ· ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ
- ΠΡΠΎΠ²ΠΎΠ΄ΠΈΡΡ ΡΠ΅ΡΡΡ ΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΠΊΠ°ΡΠ΅ΡΡΠ²Π° ΠΊΠΎΠ΄Π° Π²Π½ΡΡΡΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°
- ΠΡΡΠΈΡΡ ΠΎΠ±ΡΠ°Π·Ρ Π² ΡΠ΅Π΅ΡΡΡΡ ΠΈ Π΄Π΅ΠΏΠ»ΠΎΠΈΡΡ Π² ΠΎΠ±Π»Π°ΠΊΠΎ Π±Π΅Π· ΡΡΡΠ½ΠΎΠ³ΠΎ Π²ΠΌΠ΅ΡΠ°ΡΠ΅Π»ΡΡΡΠ²Π°
ΠΠΎΠ½ΡΡΠΎΠ»Ρ ΡΠ°ΡΡ ΠΎΠ΄ΠΎΠ² ΠΈ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡ
ΠΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈΠ·Π°ΡΠΈΡ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΡΡΠΊΠΎΡΠΈΡΡ Π΄Π΅ΠΏΠ»ΠΎΠΉ, Π½ΠΎ ΠΈ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ΅ΡΡΡΡΠΎΠ². ΠΠ»Π°Π³ΠΎΠ΄Π°ΡΡ ΠΈΠ·ΠΎΠ»ΡΡΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΡΡΠΊΠ°ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ΅ΡΠ²ΠΈΡΠΎΠ² Π½Π° ΠΎΠ΄Π½ΠΎΠΉ ΠΌΠ°ΡΠΈΠ½Π΅, Π° ΡΠ°ΠΊΠΆΠ΅ Π±ΡΡΡΡΠΎ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΠΎΠ²Π°ΡΡ Π½Π°Π³ΡΡΠ·ΠΊΡ. ΠΠ΅ Π·Π°Π±ΡΠ²Π°ΠΉΡΠ΅ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡΡ Π±Π°Π·ΠΎΠ²ΡΠ΅ ΠΎΠ±ΡΠ°Π·Ρ ΠΈ ΡΠ²ΠΎΠ΅Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ Π·Π°ΠΊΡΡΠ²Π°ΡΡ ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΠΈ.
ΠΡΠ²ΠΎΠ΄
ΠΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈΠ·Π°ΡΠΈΡ Flask-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Docker β ΡΡΠΎ ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΉ ΡΡΠ°Π½Π΄Π°ΡΡ Π³ΠΈΠ±ΠΊΠΎΡΡΠΈ ΠΈ Π½Π°Π΄Π΅ΠΆΠ½ΠΎΡΡΠΈ ΠΏΡΠΈ Π΄Π΅ΠΏΠ»ΠΎΠ΅ Π² ΠΎΠ±Π»Π°ΠΊΠΎ. ΠΡΠΏΠΎΠ»ΡΠ·ΡΡ Heroku, Yandex Cloud ΠΈΠ»ΠΈ AWS, Π²Ρ ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΠ΅ ΠΌΠ°ΠΊΡΠΈΠΌΡΠΌ ΡΠ΄ΠΎΠ±ΡΡΠ²Π°, Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΠΈ ΠΈ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΡΠ΅ΠΌΠΎΡΡΠΈ. ΠΡΠ»ΠΈ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ Π±ΡΡΡΡΠΎ ΡΠ°Π·Π²Π΅ΡΠ½ΡΡΡ ΠΈΠ»ΠΈ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ Π²Π°Ρ ΠΏΡΠΎΠ΅ΠΊΡ, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΠΌΠΎΡΡ β ΠΎΠ±ΡΠ°ΡΠ°ΠΉΡΠ΅ΡΡ Π·Π° ΠΊΠΎΠ½ΡΡΠ»ΡΡΠ°ΡΠΈΠ΅ΠΉ!
Raman Sapezhka
CEO Plantago/CTO