DEV
June 11, 2022

Обзор инфраструктуры разработки под Windows с 1999 по 2022

Сеньоры, маркизы и графья разработчики редко всерьез воспринимают тех, кто использует Windows. Но нам, менеджерам, это простительно. Главное, не сильно уж отставать от хода времени.

Локальный вэб-сервер (WAMP)

В начале 2000-х большинство проектов состояло из вэб-сервера (Apache), базы данных (MySQL) и языка программирования (PHP). Под Windows набор получил название WAMP, по первым буквам составляющих решений. Под Linux - LAMP. Для ускоренной установки этой инфраструктуры энтузиасты создали готовые комплекты, включающие дистрибутивы и скрипты настройки. Мне нравился Денвер.

Денвер - локальный сервер. WAMP сервер для разработки под Windows

Скачиваешь, устанавливаешь и получаешь настроенный веб сервер, базу данных и работающий PHP. Код проектов хранился в отдельных папочках, обращаться к проектам можно было из браузера по настроенным доменам, а для работы с базой данных чаще всего использовали phpMyAdmin.

Виртуальные машины

С ростом производительности оборудования, сложности проектов и желанием приблизится к серверной инфраструктуре, стали набирать популярность решения с виртуализацией: Hyper-V, VMware, VirtualBox. Я пользовался последним:

Скриншот: рабочее окно VirtualBox

На виртуальной машине можно настроить всю инфраструктуру проекта в максимально близком к "боевому" окружении.

Менеджеры конфигураций

Вскоре появились решения для быстрого развертывания виртуальных машин из командной строки и репозитории этих виртуальных машин. Типовые конфигурации стало возможно разворачивать за считанные минуты. Славу на этом поприще снискал Vagrant.

Скриншот: пример разворачивания окружения с использованием vagrant

Поверх Vagrant стали формироваться другие популярные "сборки". Я пользовался Homestead от Laravel (популярный PHP фреймворк) с очень внушительным списком интегрированного и настроенного софта

Скриншот: список интегрированных в Homestead продуктов

Docker и подсистема Linux в Windows

Архитектура современных проектов усложнилась кардинально с начала 2000-х. Набрали популярность микросервисы, появились nosql базы данных, колоночные и inmemory, стало хорошим тоном добавлять в проект готовые опенсорсные решения.

Каждая из этих подсистем упаковывается в свой контейнер и средством оркестрации обеспечивается контроль их работы, взаимодействие и количество запущенных экземпляров. Среда разработки должна поспевать за эксплуатацией на продакшн.

Прежде чем перейти к следующему шагу - проговорим, чем современная концепция контейнеров отличая от упомянутой выше виртуализации.

Сравнение виртуализации от контейнеризации.

Каждая виртуальная машина содержит свою операционную систему и работает изолировано. Контейнер работает поверх хостовой операционной системы и использует ее ресурсы. В мире серверов это Linux.

В среде разработки, под Windows, чтобы иметь возможность запускать те же контейнеры что и в продакшн, - хостовую операционную систему надо заменить на Linux. Для этого в Windows была разработана технология WSL (Windows Subsystem for Linux), а в последствии и WSL2.

Стало возможным под Windows запускать те же контейнеры, что вы используете на своих продакшн серверах.

Скриншот работы Docker for Windows со списком контейнеров

Таким образом, у разработчиков под Windows есть абсолютно все инструменты и возможности, чтобы не отставать от своих коллег под MacOS или Linux. Да, сложность входа повысилась, но она возрастает у всех участников рынка.

Вместо морали

Не операционная система делает разработчиков хорошими. Не операционная система вытянет ваш проект, сделав его более финансово успешным или стабильным. И даже сев за мак с самым последним процессором, вы не станете понимать больше абстракций. Но раньше, работая из под Windows, нужно было делать гораздо больше танцев с бубном, чтобы остальные участники команды это не заметили. Теперь же процессы разработки стандартизировались и инфраструктура выглядит единообразно что под маком, что под виндой, что под linux.