SebWeo.com
На зорі моєї кар’єри веб-розробника все було відносно просто: встановив локальний сервер (пам’ятаєте Denwer?), поклав туди файли проєкту, і працюєш. Але сучасна розробка стала значно складнішою. Різні проєкти вимагають різних версій PHP, Node.js, специфічних бібліотек чи навіть операційних систем. Намагатися “подружити” все це на одній машині — це прямий шлях до хаосу, конфліктів залежностей та знаменитої проблеми “а в мене на комп’ютері все працює!”.
Рішенням цієї проблеми для мене стали віртуальні машини (ВМ). Це технологія, яка дозволяє вам створити повністю ізольоване, віртуальне комп’ютерне середовище всередині вашого основного комп’ютера. У цій статті я хочу поділитися, чому я вважаю ВМ незамінним інструментом для будь-якого професійного веб-розробника.
Уявіть, що у вас є потужний комп’ютер (хост-машина). За допомогою спеціальної програми, яка називається гіпервізор (наприклад, VirtualBox або VMware), ви можете створити всередині нього один або кілька “комп’ютерів у комп’ютері” (гостьові машини). Кожна така ВМ має власні віртуальні ресурси: процесор, пам’ять, жорсткий диск, мережевий адаптер. На неї можна встановити будь-яку операційну систему (ОС) — Linux, Windows, macOS — незалежно від того, яка ОС стоїть на вашому основному комп’ютері.
Існує два основні типи гіпервізорів:
Особисто для мене переваги використання ВМ настільки очевидні, що я вже не уявляю розробку без них. Ось ключові причини:
Це головна перевага. Ви можете створити окрему ВМ для кожного проєкту. Один проєкт працює на PHP 7.4 та MySQL 5.7, інший — на PHP 8.3 та PostgreSQL 15, третій — на Node.js 18. Кожна ВМ має свій набір залежностей, і вони ніколи не конфліктують між собою. Прощавай, “пекло залежностей”!
Найбільш неприємна ситуація — коли ваш код ідеально працює на вашому локальному комп’ютері, але “падає” на бойовому сервері. Це часто трапляється через відмінності в ОС, версіях ПЗ (PHP, Nginx, Apache), налаштуваннях (php.ini) тощо. ВМ дозволяє вам відтворити середовище бойового сервера максимально точно (наприклад, підняти Ubuntu Server з тією ж версією PHP, Nginx та OPcache, що й на продакшені). Це мінімізує несподіванки при деплої.
Потрібно протестувати сайт на старій версії Internet Explorer? Підніміть ВМ з Windows XP. Хочете поекспериментувати з новою версією Linux або небезпечною програмою? Робіть це у віртуалці! Якщо щось піде не так, ви просто видалите ВМ, і ваша основна система залишиться чистою та неушкодженою. Також зручно тестувати різні конфігурації сервера (наприклад, Apache vs Nginx), не чіпаючи основну систему.
Вам більше не потрібно засмічувати свій основний комп’ютер десятками різних версій PHP, Node, баз даних та інших інструментів, специфічних для окремих проєктів. Все живе всередині своїх ВМ.
За допомогою таких інструментів, як Vagrant, ви можете описати конфігурацію вашої ВМ у простому текстовому файлі (Vagrantfile). Новий член команди просто запускає одну команду, і отримує точну копію робочого середовища всієї команди за лічені хвилини.
Процес досить простий:
Vagrant — це інструмент, який автоматизує кроки 2-5. Ви просто створюєте текстовий файл Vagrantfile, де описуєте, яку ОС використовувати, які папки зробити спільними, які скрипти виконати для налаштування (встановлення ПЗ). Потім команда vagrant up сама створює, налаштовує та запускає ВМ. Це неймовірно зручно, особливо для командної роботи.
Останніми роками великої популярності набули контейнери, зокрема Docker. Це ще легша технологія віртуалізації, яка ізолює не цілу ОС, а лише окремі процеси, використовуючи спільне ядро хост-системи. Docker запускається швидше і споживає менше ресурсів.
Чи означає це, що ВМ застаріли? На мою думку, ні. Вони просто вирішують різні завдання:
Багато розробників сьогодні використовують обидві технології разом: наприклад, запускають Docker всередині віртуальної машини.
Можливо, налаштування першої віртуальної машини здасться вам трохи складнішим, ніж встановлення XAMPP. Але повірте моєму досвіду: час, витрачений на освоєння ВМ, окупиться сторицею. Ви отримаєте контроль над своїм робочим середовищем, позбудетеся купи проблем із залежностями та значно наблизите локальну розробку до реалій бойового сервера.
Для мене віртуальна машина — це запорука спокою. Це впевненість у тому, що мій код буде працювати не тільки “в мене”, а й там, де він має працювати — на сервері. І я щиро рекомендую кожному веб-розробнику додати цей інструмент до свого арсеналу.
Якщо ви коли-небудь цікавилися, як прискорити свій сайт на WordPress, ви, напевно, чули про "кешування".…
Коли ми говоримо про веб-розробку, перше, що спадає на думку — це HTML та CSS.…
У світі SEO є фраза, яку повторюють так часто, що вона вже стала кліше: "Content…
Створення бізнесу — це як народження дитини. Ви вкладаєте в нього душу, час та гроші.…
Коли ви тільки починаєте працювати з PHP, здається, що все просто: ви пишете код, веб-сервер…
Багато розробників-початківців на Windows починають свій шлях з пакетів типу XAMPP, WampServer або Laragon. Це…