Чому власний застосунок, який працює в інтернеті, — найкоротший шлях пройти повний життєвий цикл продукту
Застосунок, який ви робите з власної ініціативи, для себе або невеликої аудиторії, і за який відповідаєте повністю — від першого коміту до сервера, що має працювати вночі.
| Робочий проєкт | Навчальний проєкт | Pet-проєкт | |
|---|---|---|---|
| Мета | Прибуток компанії, задача бізнесу | Оцінка, залік, сертифікат | Вирішити власну проблему, навчитися |
| Хто вирішує | Product owner, тімлід, архітектор | Викладач, методичка | Ви |
| Стек | Той, що вже є в компанії | Той, що в програмі курсу | Будь-який, навіть «не прод» |
| Закінчується | Коли бізнес каже «досить» | Після здачі | Коли є живі користувачі |
| Відповідальність | Поділена між командою | Фактично відсутня | Повна й особиста |
На роботі стек фіксований. У pet-проєкті можна спробувати Go, Rust, Svelte, Postgres замість MySQL — без ризику для бізнесу
Ніхто не каже «так історично склалося». Ви самі обираєте архітектуру, бібліотеки й спосіб деплою — і самі живете з наслідками
Немає тімліда, який приймає рішення за вас. Доводиться самому зважувати компроміси, читати документацію, розбиратися з помилками
Посилання на робочий застосунок переконує краще за будь-який рядок у резюме. Код у GitHub показує, як ви думаєте
Головне: pet-проєкт — єдине місце, де junior проходить увесь цикл, а не лише свій тікет.
Компроміс: ставте ціль «один справжній користувач, який не ви», а не «перший долар». Гроші прийдуть або ні — досвід залишиться.
«Своя соцмережа», «аналог Notion», «маркетплейс» — це роки роботи команди. 90% таких проєктів закінчуються на екрані логіну.
Краще свою: вам не треба проводити дослідження користувачів — ви і є користувач. Біль, який ви відчуваєте щотижня, — найкраще ТЗ.
Одна функція, яка вже приносить користь. Усе інше — у список «потім». Якщо MVP не можна зробити за кілька вихідних — він ще не MVP.
| Занадто велика ідея | Та сама ідея як MVP |
|---|---|
| Соцмережа для розробників | Telegram-бот, що щопонеділка надсилає підсумок вашої активності на GitHub за тиждень: коміти, PR, стрік |
| Платформа онлайн-курсів | Сторінка з розкладом і нагадуванням про дедлайни однієї групи |
| Фінансовий застосунок з ШІ | Імпорт виписки банку в таблицю з категоріями витрат |
| Маркетплейс для домашніх майстрів | Каталог з десятьма майстрами вашого району і формою заявки |
| Система керування проєктами | Канбан-дошка для себе, яку можна відкрити з телефону |
У правій колонці — те, що можна показати людям уже за два тижні і дізнатися, чи потрібне воно комусь.
Цінність для користувача, метрики, гіпотези, 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
Агенти, контекст, специфікації, перевірка результату
Застосунок, який ви відкриваєте лише з власної IDE, — це ще не продукт. Це ескіз продукту.
| localhost | production | |
|---|---|---|
| Користувачі | Ви один, і ви знаєте, куди клікати | Люди, які роблять те, чого ви не передбачили |
| Дані | Тестові, їх можна стерти | Справжні; втратити їх — значить втратити довіру |
| Помилки | Видно в терміналі одразу | Ніхто не скаже, що зламалося, якщо немає логів |
| Мережа | Миттєва, без збоїв | Повільна, з обривами, з мобільного |
| Безпека | Не має значення | Відкритий порт сканують за години після запуску |
| Час роботи | Поки запущено npm run dev | 24/7, зокрема під час оновлень |
| Оновлення | Ctrl+S | Збірка, деплой, міграція, відкат, якщо щось пішло не так |
Кожна з цих проблем — тема, яку junior у компанії бачить лише з боку: нею займаються DevOps, SRE або сеньйор. У pet-проєкті вона ваша, і ви розумієте її не з лекції, а з ночі, коли все впало.
Саме тут народжується «розуміння системи в цілому», про яке йшлося в попередній доповіді.
| Термін | Що це насправді | Що з ним робите ви |
|---|---|---|
| Domain | Людське ім'я вашого застосунку, яке ви орендуєте в реєстратора | Купуєте за $5–15 на рік, вказуєте DNS-записи |
| DNS | Розподілена «телефонна книга»: ім'я → IP-адреса | Створюєте A-запис на IP сервера, чекаєте до години |
| Server / VPS | Віртуальна машина в чужому дата-центрі, доступна по SSH | Ставите Docker, налаштовуєте firewall, оновлюєте |
| HTTP / HTTPS | Протокол запит-відповідь; HTTPS — той самий, але шифрований | Отримуєте сертифікат Let's Encrypt, редиректите 80 → 443 |
| Reverse proxy | Один вхід на сервер, який розводить запити по застосунках | Nginx, Traefik або Caddy; саме тут живе TLS |
| Application | Ваш код у контейнері, що слухає внутрішній порт | Збираєте образ, запускаєте, читаєте логи |
| Database | Процес зі станом: єдине, що не можна просто перестворити | Том на диску, бекапи, міграції, закритий порт |
cPanel-хостинг за $2–5. PHP (Laravel, WordPress) і статика: файли по FTP або з Git, MySQL уже є, SSL — кнопкою. Деплой за годину.
Railway, Render, Vercel, Fly.io. Підключаєте GitHub-репозиторій — платформа сама збирає, запускає, видає HTTPS-адресу. Деплой за 15 хвилин.
Hetzner, DigitalOcean + Docker Compose + Nginx або Traefik. Сервер, домен, сертифікати, бекапи — самі. Деплой за вихідні, але ви розумієте кожен шар.
| Shared hosting | PaaS | VPS + Docker | |
|---|---|---|---|
| Стек | PHP, статика; Node і Python — рідко | Усе, що збирається в контейнер | Будь-який |
| Ціна | $2–5 на місяць, база включена | Безкоштовний tier, далі $5–20 за сервіс | $4–6 на місяць за все |
| Складність | Мінімальна: FTP і панель | Низька: натиснули Deploy | Середня: SSH, Linux, Docker, DNS, TLS |
| Контроль | Майже нуль: без root і фонових процесів | Обмежений: що дозволяє платформа | Повний: будь-який процес, крон, воркер |
| Ризики | Сусіди на сервері, старі версії PHP | Зміна тарифів, «сон» безкоштовних інстансів | Ви ж і DevOps: оновлення, безпека, бекапи |
| Чого навчитесь | Домен, DNS, FTP, базова панель | Деплой як кнопка, env, логи | Як насправді працює інтернет |
VPS на Ubuntu, SSH за ключем, ufw відкриває лише 22, 80, 443
A-запис на IP сервера. Поки DNS оновлюється — ставимо Docker
Проксі, застосунок, база — три сервіси в одному файлі
Секрети в .env на сервері, ніколи в репозиторії
Caddy або Traefik отримують сертифікат Let's Encrypt автоматично
docker compose up -d, міграції, перевірка з телефона
Кожен крок окремо — година роботи. Разом — перший застосунок, який працює без вашого ноутбука.
docker compose logs -f — спочатку досить. Далі — Loki або Better Stack, щоб шукати по всіх контейнерах і не забивати диск
Uptime Kuma або Better Uptime пінгують сайт щохвилини і пишуть у Telegram, коли він упав. Ви дізнаєтесь раніше за користувачів
pg_dump щоночі в S3-сумісне сховище. Бекап, який жодного разу не відновлювали, — це не бекап
Оновлення ОС, fail2ban, закриті порти, HTTPS, rate limit на логін, залежності без відомих CVE
Теги образів замість latest: тоді відкат — це запуск попередньої версії, а не паніка
Перший місяць після запуску вчить більше, ніж три місяці написання коду до нього.
Ідея, вимоги, архітектура, код, тести, деплой, підтримка — усі етапи SDLC своїми руками, а не один тікет із середини
Docker, Linux, DNS, TLS, CI/CD перестають бути словами з вакансій і стають речами, які ви налаштовували о другій ночі
Чому моноліт, де кеш, що буде під навантаженням, як не втратити дані — відповіді з власного досвіду, а не з відео
Посилання, що відкривається з телефона інтерв'юера, і репозиторій із README — найсильніший аргумент на співбесіді
Дякую за увагу! Запитання?