e.motion
Статьи

По вкусу

5 сентября 2007 by · Комментариев нет 

Автор: Дмитрий Смирнов
Опубликовано в журнале «Домашний компьютер» №9 от 5 сентября 2007 года.

Продолжаем серию разговоров о сайтостроительстве, хостинге и обо всем, что с ними связано. В предыдущих статьях мы упоминали, но подробно еще не рассматривали выбор между Windows- и Unix-платформами. Парадокс: с одной стороны, ОС семейства Windows знакомы подавляющему большинству пользователей, тогда как Unix-подобные операционные системы являются уделом энтузиастов и фанатиков (и не спорьте; 5% или около того — не цифра), а с другой стороны, подавляющее большинство сайтов в Интернете живут именно на Unix-серверах. Но голословные заявления в духе «если не уверены — выбирайте Unix-хостинг» устраивают не всех: человек-то любопытен и недоверчив. Сегодня мы окончательно разберемся, в чем преимущества и недостатки каждой из платформ. Окунемся в самое пекло «религиозной» войны; орудия к бою!

Красивый девиз разработчиков WordPress’а, популярнейшего из блог-движков, гласит: «Код — это поэзия». Речь идет, конечно, не о шифре, а о программном коде и о стиле программирования. Хороший тон программирования важен как в скриптах (и прочем исполняемом коде), так при HTML- и CSS-верстке. Красивый код, написанный внятно и разумно, разбитый на аккуратные блоки, снабженный человеческими комментариями — всегда удовольствие, пусть и для избранных (обычный пользователь этого не увидит, но почувствует скорость и удобство работы приложения, а впоследствии оценит развитие программы и оперативность появления ее новых версий). В идеале код должен базироваться на внятной идее и архитектуре приложения. Как и «настольные» программы, сайты имеют свойство расти и расширяться, и то, что вчера было скриптом онлайнового магазина, завтра может превратиться в Amazon. Но при одном условии: если на ранней стадии развития проекта это превращение спланировать, а потом грамотно реализовать. Так, база данных, которая достигла максимума своих возможностей, становится источником проблем. Представьте: на ней уже построен бизнес, идут продажи, присоединяются компании-партнеры. А в это время база начинает тормозить, данные копятся и становятся неповоротливыми, запросы к ней выстраиваются в длинную очередь. В этой ситуации главной технической проблемой становится уже не развитие бизнеса, а удержание системы в работоспособном состоянии; репутация обычно дороже прибыли. Базу приходится делить на части, разносить по разным серверам и переписывать код «живого» сайта для работы с этими новыми серверами, — а подобные операции «без наркоза» болезненны.

В идеале такие проблемы нужно предусматривать в самом начале проекта. Но разработка красиво масштабируемых платформ — дело непростое, долгое и дорогое, а покупка и настройка готовых решений — также непросто и еще более дорого. Не каждый бизнес в начале своего развития готов вкладывать настолько серьезные средства в технику. Поэтому-то проекты масштаба Amazon, eBay или Google появляются нечасто.

Этим длинным предисловием мы подводим читателя к мысли, что средства разработки и платформу для своего сайта надо выбирать заранее и тщательно (разумеется, если речь не идет об обычном «хомяке»: в этом случае, право слово, проще зарегистрироваться в LiveJournal; говорят, впрочем, и некоторые домашние страницы или фэнсайты могут превратиться в гиперпроекты1). Чтобы не оступиться на первом шаге, разберемся в существующих сегодня серверных механизмах Сети.

По пальцам одной руки

Серверных операционных систем существует не так много. Начнем рассказ с Unix — ОС этого семейства являются доминирующими в сегодняшнем Интернете, именно на них он и вырос.

Система была разработана подразделением американской компании AT&T, которое называется Bell Labs. Это произошло в конце 1960-х (по другим данным — в начале 70-х) годов (когда другие американские ребята, например, проводили фестиваль «Вудсток» или пели «Light My Fire»). Первоначально систему назвали UNICS (UNIplexed Information and Computing System), но потом сократили до сленгового написания. В то время система «бегала» на компьютерах семейства DEC PDP (аналогом которых были советские СМ ЭВМ). Первый Unix был написан на ассемблере, но в 1973 его переписали на языке C («Си»), что позволило портировать (переносить) операционную систему на разные аппаратные платформы.

Как известно, работать имеет смысл с операционной системой не ниже ее третьей версии. Первая — всегда экспериментальная, вторая — работа над грубыми ошибками, а к выпуску третьей устраняется часть «тонких» проблем, и даже появляются драйверы и прикладные программы. Это касалось и оболочки Windows, которая стала популярна с версии 3.1, и многих других ОС. Возможно, успех «Юниксу» обеспечило то, что в народ он пошел только с пятой версии, которую в 1974 году разработчики стали бесплатно раздавать научным учреждениям и университетам. Вскоре один за другим появились шестой и седьмой выпуски; Unix стал действительно популярным (он стоял более чем на 600 компьютерах!).

Наступили 1980-е годы. К тому времени AT&T отчетливо поняла, что разработала золотую жилу, и решила сделать Unix коммерческим продуктом (до этого исходный код ОС раздавался условно-бесплатно). Вскоре появились два конкурирующих дистрибутива следующего поколения: коммерческий Unix System III от AT&T (операционки «на продажу» решили нумеровать по-своему) и свободный BSD (Berkeley Software Distribution), созданный, соответственно, программистами университета Беркли на основе последнего «бесплатного» дистрибутива. И здесь уместно напомнить — на дворе стояли 80-е, а это значит, что только что был разработан протокол TCP/IP, внедрение которого в 1983 году превратило ARPANet в Интернет. Вскоре обе ветви Unix — и свободная, и коммерческая (к тому времени это была System V) — включили поддержку этого протокола в базовый комплект.

Итак, операционная система, успешно зарекомендовавшая себя в последнее десятилетие, стала поддерживать самую прогрессивную на тот момент сетевую технологию. Обе версии «Юникса» стали активно ветвиться. Многие компании купили лицензии на коммерческую System V: так, Hewlett-Packard сделала на ее основе свою серверную операционку HP-UX; Sun — Solaris; IBM — AIX; Silicon Graphics превратила «пятерку» в OC IRIX; компания Commodore — в Amiga Unix.

Бесплатная ветвь Unix также активно росла. Термин BSD стал названием не только операционной системы, но и принципа ее лицензирования. Согласно правилам лицензии, исходный код ПО является собственностью BSD, а все дополнения к нему — собственностью их авторов. Из дистрибутива ОС BSD выросли многие операционки с открытым исходным кодом: OpenBSD, DragonFlyBSD, NetBSD, популярная FreeBSD и другие. Кроме того, из этого семейства выросла закрытая операционная система Apple MacOS X. Любопытные могут изучить «генеалогическое древо» Unix-систем в классическом «текстовом» виде — очень познавательно. Упрощенную графическую версию родословной можно найти, например, в Википедии.

Итак, что такое «Юникс» с точки зрения мировой революции? Это вовремя появившаяся мультизадачная операционная система, которая имела достаточно времени на первоначальное развитие, после чего удачно разделилась на коммерческую и некоммерческую ветви. Первую оценили корпорации (покупка чего-либо всегда означает гарантии: 1) более-менее работоспособности, 2) легитимности использования, 3) возможности сокрытия собственных ноу-хау). Вторую стали разрабатывать и улучшать энтузиасты, из-за чего повысились ее популярность и надежность2. А вовремя внедренная поддержка базового протокола Сети сделала Unix доминирующей платформой Интернета.

А тем временем…

Перенесемся в другой лагерь и посмотрим на положение вещей в нем.

Первой ОС, созданной компанией Microsoft, был… не поверите, — клон Unix, созданный по лицензии AT&T. Система называлась Xenix OS, она появилась в 1980 году. Позднее разработка была продана компании Santa Cruz Operation (SCO) и легла в основу SCO Unix.

Через два года после выхода Xenix Билл Гейтс и компания написали свою популярную систему MS-DOS, а вскоре (в 1985 году) и ее графическую надстройку Windows (долгое время это была именно надстройка, а не самостоятельная ОС), управляемую «манипулятором типа мышь». До 1992 года система развивалась как оболочка, однако в 1993 году произошло раздвоение жизненного пути Windows: появилась серверная операционная система Windows NT 3.1, где NT — означало «новая технология».

Первой клиентской графической операционной системой, которую можно было назвать так по праву, стала Windows 95 OSR2. Это была 32-разрядная ОС с полноценной поддержкой TCP/IP, встроенными средствами dial-up и прочими сетевыми «примочками» для выхода в Сеть. Наличие большого количества прикладного софта, написанного для этой ОС, обеспечило ей безусловное лидерство (а по сути — монополию) на рынке клиентских операционных систем.

Долгое время Редмонд (в этом городе базируется штаб-квартира Microsoft) делал ставку на клиентские ОС как доминирующий рынок программного обеспечения, однако к 1995 году стало ясно, что «центр тяжести» софтверных разработок перемещается в Интернет. Надо было менять стратегию.

Летом 1996 года появилась новая версия сервера Microsoft — Windows NT 4.0. Она включала в базовый комплект веб-сервер (Internet Information Server), DNS-сервер и поддержку маршрутизации. Таким образом, Microsoft вышла на рынок веб-ориентированных продуктов почти через 15 лет после Unix, который уверенно царил в Сети до этого момента.

Microsoft развязала войну на интернет-фронте и в своей клиентской ветви: старожилы помнят захватывающую и «кровопролитную» битву Internet Explorer’а с браузером Netscape Navigator. Последний пал в неравной борьбе — аргумент в лице Windows 95, куда Редмонд встроил свой браузер, в то время был еще сильнее любых веб-магнитов (впрочем, в наше время этот Феникс восстал из пепла в виде огненной — нет, не птицы, но лисицы — браузера Firefox).

Серверную «флотилию» Microsoft утяжелили отдельным прокси-сервером, который впоследствии превратился в Internet Security & Acceleration (ISA) Server, а также расширенным почтовым сервером по имени Exchange. Для работы с базами данных был создан продукт MS SQL Server. Таким образом, армия проприетарных «тяжеловесов» была подготовлена и спущена на воду. C тех пор (за одиннадцать лет) сменилось несколько поколений серверов Microsoft, так что их стабильность и безопасность уже достигли вполне приемлемого уровня.

Стоит упомянуть, что в зависимости от типа поставки (одно- или многопроцессорная, стандартная или корпоративная версия, количество клиентов и т. д.) каждый программный сервер Microsoft может стоить от 2–3 до многих десятков тысяч долларов.

Ставки сделаны

Итак, мы представили основных игроков рынка веб-серверов. Исторические предпосылки ситуации на рынке понятны, посмотрим же на саму ситуацию. А она радикально различается в России и в мире.

Сначала о нашей стране. Соотношение сил в российском хостинге напоминает мировой расклад десятилетней давности. По данным проекта «RUметрика», лидерами зоны RU являются четыре серверные операционные системы: FreeBSD (53%), Linux (32%), Windows (9%) и Solaris (5%). Таким образом, 90% серверов работают под управлением *nix. Можно привести несколько причин этого явления. И первая — то, что традиция серверного администрирования у нас исторически связана с «Юниксом». Веб-админы недоверчиво или даже с презрением относятся к продуктам Microsoft. Отчасти это оправдано — прорех в системе безопасности этой ОС найдено и залатано немало. С другой стороны, фольклор, связанный с «глючностью» Windows, зачастую обусловлен недостаточной квалификацией самих администраторов (причина которой, в свою очередь, в малой распространенности веб-серверов Windows). Получается порочный круг и средневековое мракобесие: люди клянут то, чего не знают и боятся.

Другой причиной низкой распространенности Windows-хостинга является высокая цена серверов, которой оппонирует приятная бесплатность FreeBSD и Linux. Установка каждого веб-сервера, «заряженного» всеми технологиями Microsoft, может обойтись в 100–200 тысяч долларов и выше. Разумеется, его ресурсы будут разделены между сотнями, если не тысячами пользователей. Хостинговые компании обычно не разглашают информацию о количестве виртуальных серверов на одной машине, ссылаясь на разумный динамический уровень загрузки, который индивидуально определяется для каждого сервера. Однако простейшие расчеты показывают, что машину с настолько дорогим ПО имеет смысл набить «железом» (памятью, процессорами, жесткими дисками) по максимуму — оно все равно будет дешевле софта. Предположим, у нас есть дисковый массив в пару терабайт и 64 Гбайта RAM. Их легко можно поделить на 2000 виртуальных хостов, каждому из которых достанется по гигабайту винчестерного пространства и 32 Мбайта оперативной памяти (подсчет грубый и очень приблизительный; в зависимости от ситуации хостов может быть и на порядок меньше).

Так или иначе, Windows-хостинг оказывается дороже «Юникса». Набрать сразу — если вообще! — 2000 (или хотя бы 200) клиентов, которым нужна Windows как платформа для сайта — непростая задача в стране без соответствующей традиции. Наши грубые расчеты показывают, что Windows-хостинг может зародиться и существовать (во всяком случае, первое время) только за счет Unix-соседа.

Однако обратим взор на Запад. Там картина совершенно иная. Согласно последним статистическим данным компании Netcraft, в августе 2007 года в Интернете было почти 128 миллионов сайтов; за последний месяц их прибавилось 2,3 миллиона. Из них… более трети, а именно 34,2% приходится на Windows! При этом количество Windows-хостинга увеличилось на 1,4% за месяц, тогда как число Apache (это программный веб-сервер, который обычно установлен на юниксоидных операционных системах) снизилось на 1,7% и составило 50,9% от всего рынка. Разница между платформами составляет не 80%, как в России, а всего 16,6%. На третьем месте в битве титанов — хостинг от Google (4,5%), на четвертом Solaris с 1,7%.

Разрыв с Россией колоссальный. Обусловлен он несколькими причинами. Во первых, социокультурными: на Западе лояльнее относятся к Microsoft, там меньше предрассудков, связанных с использованием проприетарных программ. Во-вторых, маркетинговыми ходами, которые недавно перевернули рынок. Так, одним из крупнейших западных регистраторов доменов и хостинг-провайдеров является компания Go Daddy. В декабре 2006 года в Сети было 80 миллионов сайтов, а соотношение Apache/Windows было, соответственно, 69%/21%. Go Daddy в то время был крупнейшим Linux-хостером. Это не помешало ему в одночасье поменять тактику и стать, опять же, крупнейшим хостером Windows Server 2003: они просто перевели 4,4 миллиона хостов на Windows-платформу. Представители Go Daddy объяснили свой шаг тем, что «тестировали разные технологии и решили, что Microsoft предлагает масштабируемую серверную платформу, производительность которой в состоянии выдержать небывалый рост компании». Незадолго до этого на платформу Windows мигрировал провайдер eNom. В то же время другие крупнейшие западные регистраторы — 1&1 Internet, Dotster и Register.com держат сайты на Linux, а Network Solutions — на Solaris.

Из-за резкого движения Go Daddy Windows-хостинг прибавил почти 5% (получив тогда 25,2% рынка), тогда как Apache резко потерял почти 6%.

Еще одним ударом по «акциям» Apache нанес Google, переведя в июне 2007 года купленный им сервис Blogger и часть других служб на платформу Google Front End (GFE).

При этом западный пользователь практически не чувствует разницы. Технологии, которые ему предоставлялись на одной платформе, продолжают предоставляться и на другой. Доступа к shell западные хостеры обычно не предлагают, однако дают развернутые визуальные средства управления доменом и сайтом через браузер — такие как cPanel. И, разумеется, если число пользователей измеряется миллионами, о завышенной стоимости хостинга из-за платформы речи не идет.

Таким образом, глобализация категорически идет на пользу платформе Microsoft и позволяет ей уже увереннее конкурировать с Unix, которая, тем не менее, продолжает доминировать на рынке веб-серверов.

Что делать?

Для начала — вернемся к родным пенатам. Большинство российских пользователей размещают сайты в нашей стране, а значит, играют по законам отечественного рынка. А на нем практически нет универсальных, «безличных» хостинг-решений без первичных признаков операционной системы: наш пользователь выбирает либо *nix, либо Windows, и знает, зачем он это делает.

Разумеется, это не значит, что разрабатывать сайт надо в той же операционной системе, в которой он впоследствии будет работать. Если вы разумно выберете Linux-тариф, не обязательно ставить себе эту ОС вместо привычных «форточек». Во-первых, Perl, PHP, MySQL и Apache можно поставить и под Windows; они замечательно работают. С этим набором отлаживать и тестировать сайт можно на домашней машине или ноутбуке офлайн. Впрочем, быстрый Интернет охватывает все большие пространства, и поэтому сегодня проще строить сайт сразу в боевой среде, заливая его на сервер провайдера.

Если же трогать «живой» сайт нельзя, или хостинг еще не куплен, или вы планируете в будущем купить серьезный хостинговый план (например, colocation) — можно развернуть на своей машине виртуальный сервер и поставить туда «боевую» операционную систему. В случае с Linux это упирается лишь в ваш опыт настройки этой ОС, в случае же Windows — в серьезную стоимость серверных ОС или муки совести, связанные с использованием нелицензионного ПО.

Для развертывания виртуальной ОС понадобится поставить виртуальную машину, то есть программу, которая будет использовать часть ресурсов вашего компьютера и эмулировать аппаратные средства для устанавливаемой ОС (другими словами, «прикинется отдельным компьютером»). Существует много виртуальных машин, как платных, так и свободных; их список и характеристики можно посмотреть в Википедии в статье «Сравнение виртуальных машин».

И, наконец, подходим вплотную к выбору.

Windows или Unix?

Технологию Windows выбирают обычно по двум причинам. Во-первых, это удобно программистам, пишущим приложения для Windows-платформ. У них есть наработки (например, на Visual Basic Script), которые можно импортировать в веб-проекты; или база данных на MS SQL или в Access; наконец, возможно, проект подразумевает установку потокового Windows Media-сервера. Программистам на ASP или ASP.NET не хочется, а зачастую технически трудно или невозможно перевести свои разработки на Perl или PHP.

Во-вторых, дело в масштабируемости и надежности проекта. При равных условиях коммерческий MS SQL выдерживает гораздо большие нагрузки, чем MySQL и даже PostgreSQL; и было бы странно, если бы дорогой продукт Microsoft без боя проиграл распространяемым бесплатно. В подробности SQL-программирования мы в этом материале вдаваться не будем, но, по традиции, отошлем заинтересовавшихся читателей в английскую часть Википедии к статье «Comparison of relational database management systems».

Посмотрим, что еще предлагают российские хостеры в Windows-тарифах.

К примеру, у .masterhost, одного из крупнейших провайдеров, активно продвигающих Windows-хостинг, в дополнение ко всему традиционному мы видим следующее: множественные FTP-аккаунты с возможностью распределения прав; множественные SQL-аккаунты; возможность размещения нескольких сайтов на одном аккаунте; SQL-база — в полном распоряжении пользователя; управление почти всеми WEB-ошибками (можно настроить не только страницу 404, но и какую-нибудь вроде 500.15); HTTP-расширение WebDAV (мощный инструмент для совместной работы с удаленными файлами, который заменяет протоколы FTP или SMB).

По совершенно непонятной причине хостер не предлагает в Windows-тарифе поддержку Perl или PHP, оправдывая их отсутствие их большей «заточенностью» под Apache. В то же время опыт Go Daddy говорит, что в идеале пользователь должен быть в состоянии развернуть на хостинге любой проект, будь то ASP.NET или PHP, вообще не задумываясь о платформе.

У программистов, пишущих на Perl или PHP, воспитание и привычки совсем иные. Идея писать на .NET кажется им странной, они являются сторонниками свободного ПО и лицензии GNU. У них также есть свои наработки и привычный стиль написания кода; кроме того, многие используют готовые механизмы и свободно распространяемые модули.

А третьим нужен лишь WordPress; они ставят его на свои виртуальные серверы и не торопясь изучают красивый код. Который — поэзия.

Юридические вопросы

Законодательно название Unix могут носить не все потомки первых «юниксов». История эта запутанная, и вряд ли стоит ее распутывать. Скажем лишь, что некоторые системы называют Unix-подобными даже несмотря на то, что они унаследовали часть исходного кода. Для обозначения всего спектра систем этого семейства применяют термин *nix.

Другие Unix-подобные ОС были написаны с нуля. Разработчики ставили задачу создать ОС, принцип работы и функционал которой был бы похож на Unix, но при этом код должен был быть переписан от первой до последней строки. Систему назвали GNU (что оригинально расшифровывается как «GNU’s Not Unix», то есть «GNU — это не «Юникс»; название нарочито рекурсивно). Работа была начата в 1983, однако флагманский продукт появился только спустя 8 лет, в 1991 году. Это была операционная система GNU/Linux, созданная финном Линусом Торвальдсом. Обычно ее называют просто Linux, тогда как аббревиатуру GNU чаще относят к типу лицензии. Linux стала не только очень популярной серверной платформой, но, хотя и менее популярной, тем не менее, конкурирующей с Windows клиентской операционной системой.

Полное название лицензии, по которой распространяется Linux — GNU GPL (GNU General Public License). Выпущенный под этой лицензией код можно свободно копировать, изменять и распространять при условии, что результат работы распространяется по тем же правилам игры. Другими словами, разработку GNU GPL нельзя зашифровать и продать, поставив копирайт и запретив модифицировать код. Под лицензией GPL создается огромное количество программных продуктов, в том числе и сама ОС Linux. Помимо GPL существует еще несколько видов «свободных» (open source) лицензий; сравнить их можно в таблице*.

Следует уточнить ситуацию с бесплатностью Linux. Ядро ОС действительно распространяется по лицензии GNU GPL. Однако у этой операционной системы есть множество дистрибутивов, составленных разными людьми или компаниями. В них, помимо ядра системы, входят сотни пакетов, каждый из которых распространяется по своей лицензии, в том числе встречаются и проприетарные (то есть, грубо говоря, «платные»). В этом случае разработчики дистрибутива сопровождают его инструкцией, где объясняют юридические тонкости комплекта. Кроме того, часто разработчики выпускают две версии «Линукса»: коммерческую и свободную, например: Mandriva Linux Discovery и Mandriva Linux Free, SUSE Linux и OpenSUSE и т. д. Коммерческий продукт содержит модули «на продажу», а в бесплатном родственнике их нет.

* Таблица взята с сайта Libertarium.ru

1 Автор намекает на историю сайта Ozon.ru, который, если верить забытой легенде, сначала был домашней страницей, посвященной творчеству режиссера Франсуа Озона, а потом плавно превратился в русский Amazon. Очевидно, из-за созвучного названия; «музыка навеяла»!

2 Американский хакер Эрик Реймонд сказал по этому поводу: «При достаточном количестве глаз все ошибки лежат на поверхности».

  • WordPress

Speak Your Mind

Tell us what you're thinking...
and oh, if you want a pic to show with your comment, go get a gravatar!

e.motion