Обзор инфраструктуры разработки под Windows с 1999 по 2022
Сеньоры, маркизы и графья разработчики редко всерьез воспринимают тех, кто использует Windows. Но нам, менеджерам, это простительно. Главное, не сильно уж отставать от хода времени.
Локальный вэб-сервер (WAMP)
В начале 2000-х большинство проектов состояло из вэб-сервера (Apache), базы данных (MySQL) и языка программирования (PHP). Под Windows набор получил название WAMP, по первым буквам составляющих решений. Под Linux - LAMP. Для ускоренной установки этой инфраструктуры энтузиасты создали готовые комплекты, включающие дистрибутивы и скрипты настройки. Мне нравился Денвер.
Скачиваешь, устанавливаешь и получаешь настроенный веб сервер, базу данных и работающий PHP. Код проектов хранился в отдельных папочках, обращаться к проектам можно было из браузера по настроенным доменам, а для работы с базой данных чаще всего использовали phpMyAdmin.
Виртуальные машины
С ростом производительности оборудования, сложности проектов и желанием приблизится к серверной инфраструктуре, стали набирать популярность решения с виртуализацией: Hyper-V, VMware, VirtualBox. Я пользовался последним:
На виртуальной машине можно настроить всю инфраструктуру проекта в максимально близком к "боевому" окружении.
Менеджеры конфигураций
Вскоре появились решения для быстрого развертывания виртуальных машин из командной строки и репозитории этих виртуальных машин. Типовые конфигурации стало возможно разворачивать за считанные минуты. Славу на этом поприще снискал Vagrant.
Поверх Vagrant стали формироваться другие популярные "сборки". Я пользовался Homestead от Laravel (популярный PHP фреймворк) с очень внушительным списком интегрированного и настроенного софта
Docker и подсистема Linux в Windows
Архитектура современных проектов усложнилась кардинально с начала 2000-х. Набрали популярность микросервисы, появились nosql базы данных, колоночные и inmemory, стало хорошим тоном добавлять в проект готовые опенсорсные решения.
Каждая из этих подсистем упаковывается в свой контейнер и средством оркестрации обеспечивается контроль их работы, взаимодействие и количество запущенных экземпляров. Среда разработки должна поспевать за эксплуатацией на продакшн.
Прежде чем перейти к следующему шагу - проговорим, чем современная концепция контейнеров отличая от упомянутой выше виртуализации.
Каждая виртуальная машина содержит свою операционную систему и работает изолировано. Контейнер работает поверх хостовой операционной системы и использует ее ресурсы. В мире серверов это Linux.
В среде разработки, под Windows, чтобы иметь возможность запускать те же контейнеры что и в продакшн, - хостовую операционную систему надо заменить на Linux. Для этого в Windows была разработана технология WSL (Windows Subsystem for Linux), а в последствии и WSL2.
Стало возможным под Windows запускать те же контейнеры, что вы используете на своих продакшн серверах.
Таким образом, у разработчиков под Windows есть абсолютно все инструменты и возможности, чтобы не отставать от своих коллег под MacOS или Linux. Да, сложность входа повысилась, но она возрастает у всех участников рынка.
Вместо морали
Не операционная система делает разработчиков хорошими. Не операционная система вытянет ваш проект, сделав его более финансово успешным или стабильным. И даже сев за мак с самым последним процессором, вы не станете понимать больше абстракций. Но раньше, работая из под Windows, нужно было делать гораздо больше танцев с бубном, чтобы остальные участники команды это не заметили. Теперь же процессы разработки стандартизировались и инфраструктура выглядит единообразно что под маком, что под виндой, что под linux.