Від HTTP і баз даних до архітектури, продакшену та відповідальності за систему
Цінність розробника зміщується від здатності написати код до здатності зрозуміти проблему, спроєктувати систему, керувати її створенням і перевірити результат.
Людина пише код, ШІ підказує наступні рядки
«Напиши endpoint», «створи тест», «знайди помилку»
Агент сам бере задачу з трекера, читає код, змінює файли, запускає тести і відкриває pull request
Людина керує процесом: вимоги, план, реалізація, тести, рев'ю, деплой
Що залишається людині, якщо ШІ може пройти майже весь цикл?
Якщо ваша робота полягає в тому, щоб взяти задачу з Jira і перетворити її на код, цю роботу вже виконує агент: швидше і дешевше.
Якість роботи ШІ обмежена якістю контексту, який ми йому надали.
Що людина має передати ШІ:
Jira, YouTrack, Linear, Trello, ClickUp, Asana
Confluence, Notion, вікі в GitHub і GitLab
Slack, Microsoft Teams, Discord
GitHub, GitLab, Bitbucket: pull requests, code review
Figma, Miro: макети, схеми, спільні дошки
Scrum, Kanban: спринти, беклог, ретроспективи
Добре описану задачу з Jira агент уже виконує сам. Цінність переходить до того, хто вміє таку задачу сформулювати.
HTTP/HTTPS, DNS, TCP/IP, TLS-сертифікати
HTML, CSS, JavaScript і TypeScript, React або Vue
Node.js, Python, PHP, Go або Java; REST і GraphQL API
PostgreSQL, MySQL, MongoDB; індекси, транзакції
Гілки, merge, pull requests, командна робота
SSH, процеси, права, логи, базове адміністрування
Без цього неможливо перевірити, чи правильний код згенерував ШІ.
Чим вище, тим повільніші й дорожчі тести. Чим нижче, тим їх має бути більше.
| Модульні | Jest, Vitest, PyTest, JUnit |
| Інтеграційні і API | Supertest, Postman, Testcontainers |
| End-to-end | Playwright, Cypress, Selenium |
| Навантажувальні | k6, JMeter, Locust |
| Безпека і якість коду | OWASP ZAP, SonarQube, ESLint |
| Керування тестуванням | TestRail, Zephyr для Jira, ручне QA |
ШІ швидко пише тести, але що саме і як перевіряти, вирішує інженер.
// зберігаємо файл на диск сервера app.post('/upload', upload.single('file'), (req, res) => { res.json({ path: req.file.path }); }); // 3 сервери за балансувальником: // файл є лише на одному з них. // Перезапуск контейнера: файл зник.
// файл іде в об'єктне сховище await s3.send(new PutObjectCommand({ Bucket: 'uploads', Key: fileId, Body: req.file.buffer, })); // віддаємо через CDN: // cdn.example.com/uploads/{fileId} // сервери без стану, масштабуються
| Як запустити? | Docker, CI/CD, PaaS |
| Як масштабувати? | Балансувальники, Swarm, Kubernetes, CDN, кеш |
| Як зберігати? | Бази даних, об'єктні сховища, Redis, черги |
| Як зрозуміти, що зламалося? | Метрики, логи, трасування, дашборди |
| Як захистити? | TLS, секрети, OWASP |
Спочатку проблема, потім технологія.
# docker-compose.yml services: api: build: ./api ports: ["3000:3000"] depends_on: [db, redis] db: image: postgres:16 volumes: [pgdata:/var/lib/postgresql/data] redis: image: redis:7 volumes: pgdata:
GitHub Actions, GitLab CI, Jenkins: автоматичний запуск тестів, збірка образів і деплой після кожного коміту
Terraform, Ansible: сервери, мережі й доступи описані в репозиторії
AWS, Google Cloud, Azure; простіше і дешевше: Hetzner, DigitalOcean
| Тип | Інструменти | Особливості |
|---|---|---|
| Хмарні PaaS | Vercel, Netlify, Heroku, Render, Railway, Fly.io | Зручно, без адміністрування, але дорожче при зростанні і прив'язка до провайдера |
| Self-hosted PaaS на власному VPS | Dokploy, Coolify, CapRover, Dokku, Easypanel | Дешево і повний контроль над даними, але сервер обслуговуєте ви |
| Керування контейнерами | Portainer | Візуальне керування Docker, Swarm і Kubernetes. Деплой стеків можливий, але збірку образів, домени, SSL і бекапи налаштовуєте самі |
Під капотом Docker, Compose, Swarm і Traefik. Коли щось ламається, рятує розуміння саме цих технологій.
| Docker Swarm | Kubernetes | |
|---|---|---|
| Поріг входу | Низький, вбудований у Docker | Високий, багато нових понять |
| Основні поняття | Сервіси, стеки, репліки | Pods, Deployments, Services, Ingress |
| Масштабування | Ручне, за кількістю реплік | Автомасштабування за навантаженням |
| Коли обирати | Невеликі кластери, прості проєкти | Великі системи, багато команд і сервісів |
Разом з цим: reverse proxy і балансувальники (Nginx, Traefik, Caddy), CDN, кеш. Керовані Kubernetes: EKS, GKE, AKS.
PostgreSQL, MySQL, MongoDB; Redis для кешу і сесій
Amazon S3, Cloudflare R2, MinIO: файли окремо від серверів, сервери без стану легко масштабуються
Cloudflare, CloudFront, Fastly: статика поруч із користувачем, захист від DDoS
Фонові задачі і обмін між сервісами: черги RabbitMQ, Kafka, Redis Queue
| Що відстежуємо | Інструменти | Навіщо |
|---|---|---|
| Метрики | Prometheus, Zabbix, VictoriaMetrics | CPU, пам'ять, диск, кількість і швидкість запитів |
| Логи | ELK-стек, Grafana Loki | Пошук причин помилок у записах усіх сервісів |
| Трасування | OpenTelemetry, Jaeger | Шлях одного запиту через усі мікросервіси |
| Помилки | Sentry | Винятки в коді з контекстом користувача |
| Доступність і алерти | Uptime Kuma, Alertmanager | Сповіщення в Telegram чи Slack, коли щось падає |
| Все в одному (SaaS) | Datadog, New Relic | Готове рішення без власної інфраструктури |
ШІ може написати кожен блок окремо. Але хтось повинен зрозуміти, які блоки взагалі потрібні і як вони мають взаємодіяти.
Цінність для користувача, метрики, гіпотези, MVP, пріоритети
User stories, критерії приймання, нефункціональні вимоги
Дослідження користувачів, сценарії, прототипи, юзабіліті-тести
Figma, дизайн-системи, типографіка, доступність (a11y)
Системний дизайн, патерни, C4, OpenAPI, ADR
Jira, Confluence, Scrum, Kanban, Slack
HTML, CSS, JavaScript, TypeScript, React, Vue
Node.js, Python, Go, Java, PHP, REST, GraphQL
PostgreSQL, MySQL, MongoDB, Redis, S3, MinIO
Jest, PyTest, Playwright, Cypress, k6, SonarQube
Docker, Compose, Swarm, Kubernetes
DNS, HTTPS, Nginx, Traefik, CDN, балансувальники, черги
Linux, VPS, AWS, Google Cloud, Azure, PaaS
Git, GitHub Actions, GitLab CI, Terraform, Ansible
Prometheus, Loki, Sentry, Grafana, Kibana, Datadog
Агенти, контекст, специфікації, перевірка результату
Одна й та сама модель дає різну цінність залежно від того, чи здатна людина оцінити результат.
Яку проблему взагалі треба вирішувати?
Що насправді потрібно користувачу і бізнесу?
Як має виглядати система?
Які компроміси допустимі, а які неприпустимі. Агент не знає ціни помилки для бізнесу
Чи правильний результат видав ШІ?
Хто відповідає, якщо система втратить дані, гроші або відкриє вразливість?
ШІ може сказати «це рішення правильне», але не може відповідати за його наслідки.
Агент не знає ціни помилки для бізнесу, регуляторних вимог, домовленостей із клієнтами та історії інцидентів. Тому межі треба записати явно: у специфікації, AGENTS.md і критеріях приймання.
Агент оптимізує те, що бачить. Людина визначає, чим можна пожертвувати, а що недоторканне.
Раніше головним обмеженням була швидкість написання коду, і роль «взяв задачу, написав код» мала цінність. Тепер цю ланку закриває агент, а обмеженням стає здатність сформулювати, спроєктувати і перевірити систему.
ШІ став між наміром людини та реалізацією. Але відповідальність нікуди не зникла.
Роль виконавця, який лише перетворює задачі на код, зникає. Чим більше коду створює ШІ, тим важливішою стає людина, здатна зрозуміти, що саме потрібно створити, як це має працювати і чи можна цьому результату довіряти.
Дякую за увагу! Запитання?