Юрий Максименко
ИТ-менеджер и разработчик приложений, специалист по корпоративным базам данных и Интернет-приложениям
db_maker@aha.ru
По опыту знаю, начальный этап разработки сайта — самый сложный и самый ответственный: на этом этапе принимаются все решения, которые в дальнейшем определят очень многое. "Расхлебывание" результатов неудачных решений, принятых на первом этапе, обойдется очень дорого и может сильно подорвать авторитет руководителя разработки и сказаться на его карьере.
Сложность заключается главным образом в том, что информация об Интернет-технологиях, скажем так, весьма сильно распределена: каждый источник освещает лишь некоторые их аспекты. А попытка обратиться за советом к экспертам приводит обычно к тому, что вам выдается готовое решение: эксперт просто опускает ход своих рассуждений. Тем более что он, как правило, пристрастен: "у каждого портного свой взгляд на искусство".
В этой статье мы обсудим те аспекты Интернет-технологий, которые необходимо знать руководителю разработки сайта для принятия осознанных решений. Автор также готов дать некоторые рекомендации по выбору того или иного решения. Для начала сформулируем определения базовых понятий, которыми будем оперировать в дальнейшем.
Основные понятия
Сетевой протокол (HTTP, FTP, TCP/IP и др.) — стандарт, определяющий способ обмена данными в сети.
Сайт (узел) — это набор файлов, размещенный на Web-сервере и доступный пользователям Интернета по протоколу HTTP (Hypertext Transfer Protocol). Доступность по HTTP-протоколу обеспечивается хостингом.
Хостинг — предоставление таких ресурсов, как дисковое пространство, оперативная память, процессорное время, канал доступа в Интернет и т п. для размещения сайта.
HTML (HyperText Markup Language) — язык разметки документов, стандартный для браузеров (программ, являющихся Web-клиентами, иными словами — программ просмотра сайтов). Отметим здесь важнейшую особенность этого языка: он позволяет оформлять ссылки на другие HTML-страницы, что и позволяет "листать" (browse) сайты.
DHTML (Dynamic HyperText Markup Language) — язык HTML, дополненный скриптами на языке JavaScript, которые выполняются на стороне клиента, т.е. браузером.
Физический Web-сервер — компьютер, содержащий сайт и все необходимые для него сервисы.
Виртуальный Web-сервер — выделенный сайту каталог на Web-сервере провайдера.
IP-адрес — 4-байтное число, однозначно идентифицирующее Web-сервер в сети (в данном случае в Интернете).
Доменное имя — удобочитаемое имя, ссылающееся на IP-адрес; например, byte.com.
DNS — сервис, позволяющий находить IP-адрес по доменному имени.
Какой сайт считать корпоративным
Корпоративный сайт должен предоставить посетителю все сведения (кроме конфиденциальных, разумеется) о компании, ее товарах и услугах, ценах на товары и услуги, о новостях компании. Очень желательно, чтобы посетитель мог сделать заказ на товары и услуги прямо на сайте. Иными словами, у посетителя сайта должно сложиться ощущение, что он посетил компанию и поговорил с ее менеджерами.
Перед созданием корпоративного сайта ИТ-директору будет крайне полезно посмотреть сайты других компаний (особенно конкурирующих с его фирмой). Это позволит ему сформировать представление о том, что же такое корпоративный сайт.
Программно-аппаратная организация
В простейшем случае сайт представляет собой набор HTML-документов и графических файлов в формате GIF и/или JPEG (это стандартные форматы для браузеров). Владелец сайта может производить манипуляции с этими файлами по FTP-протоколу с помощью программ, называемых FTP-клиентами (среди которых хотелось бы отметить менеджер файлов Far). Для доступа по FTP-протоколу необходимо указать логин — имя пользователя, которому на Web-сервере прописаны права на доступ; пароль, соответствующий этому логину, и ftp-сервер.
Но коль скоро речь идет о разработке корпоративного сайта, простейшего уровня явно недостаточно. Я бы, например, посоветовал для создания современного дизайна и облегчения работы с сайтом включить в HTML-документы скрипты на языке JavaScript.
Часто прекрасным решением становится использование серверных скриптов, взаимодействующих с базой данных сайта. Остановимся на этом вопросе подробнее.
Серверные скрипты незаменимы, когда нужно получить информацию из формы, заполняемой посетителем сайта, и они заметно облегчают поддержку сайта. Рассмотрим такой пример :фирма продает некую продукцию (допустим, мебель). Композиция странички, отображающая товар, одна для всех предметов мебели, различаются только данные. В долгосрочном плане много удобнее создать базу данных по предлагаемой мебели, а HTML-документ формировать скриптом на основе запроса к базе данных. Если у фирмы к тому же имеется корпоративная база данных, в которой обновляются характеристики продаваемой мебели, то при помощи серверных скриптов можно без создания и редактирования HTML-документов отображать на сайте самую актуальную информацию о товарах и услугах.
Назовем здесь наиболее популярные серверные скрипты.
CGI-скрипт — это программа, которая выполняется на Web-сервере по запросу клиента (т. е. посетителя Web-сайта). CGI (Common Gateway Interface) — это не язык программирования, а специальный интерфейс, с помощью которого и происходит запуск скрипта и взаимодействие с ним. Web-сервер должен поддерживать выполнение этих скриптов.
CGI-скрипты можно разделить на две группы — компилируемые и интерпретируемые. Компилируемые можно создавать на языке, компилятор которого присутствует на Web-сервере; после компиляции на сервере они готовы к работе. Интерпретируемые CGI-скрипты не требуют компиляции; наиболее популярный язык для их написания — PERL.
PHP-скрипт (Hypertext Preprocessor) — скрипт, написанный на языке PHP и внедренный в HTML-документ.
ASP-скрипт (Active Server Pages) — скрипт, написанный на языке Visual Basic Scripting Edition и внедренный в HTML-документ.
Вы, наверное, уже заметили, что объединяет эти две разновидности скриптов: они вставлены в HTML-документ. И перед тем, как вывести пользователю страничку для его браузера, сервер сначала выполнит эти скрипты (естественно, интерпретируя, а не компилируя их). Как же это работает? Поясним это схемой (см. рисунок).
Организация работы встроенных в HTML-документ скриптов.
|
Рисунок иллюстрирует процесс с момента запроса клиентом странички со скриптом до момента вывода странички браузером. Показано, что скрипт может выполнять следующие функции: § запускать какие-либо сервисы (например, послать сообщение по электронной почте); § модифицировать базу данных; § получать данные из базы данных по SQL- запросу; § с помощью текстовых выражений "дописывать" HTML-выражения в исходную страничку, в том числе и основываясь на результатах запроса.
Очень важно отметить, что при такой организации работы важнейшую роль играет ОС, под управлением которой работает Web-сервер: Unix/Linux или Windows NT/2000. В первом случае скрипты обрабатываются сервером Apache, во втором — Microsoft Internet Information Server.
Базы данных тоже критичны к платформе. Кстати, о базах данных. Какие серверы баз данных можно использовать при создании сайта? Перечислим "первую тройку" наиболее популярных.
Oracle — промышленный стандарт для создания больших баз данных (потенциально — поддержка терабайтных массивов). Работает со всеми ведущими ОС. Существуют средства для создания Web-приложений на основе баз данных Oracle.
MySQL — SQL-сервер, поставляемый в исходных текстах на языке С (в силу этого обстоятельства может работать с любой ОС) условно-бесплатно. Поддерживает таблицы объемом до 50 млн. записей. Не содержит сохраненных процедур, ограничена поддержка транзакций, поддерживает не все инструкции SQL. Но эти недостатки (весьма существенные) компенсируются скоростью выполнения запросов. Можно утверждать, что на сегодняшний день это самый быстрый сервер баз данных. Это обстоятельство, а также его бесплатность и совместимость обеспечили ему широкое распространение.
Microsoft SQL Server — сервер баз данных копании Microsoft. По определению с ним удобно организовывать взаимодействие ASP-скриптов. Заявлена поддержка терабайтных массивов. Работает, разумеется, только под управлением ОС Windows NT/2000.
И вот теперь вам предстоит нелегкая задача выбора. Нелегкая главным образом потому, что даже порядок выбора не определен.
Я вовсе не ставлю перед собой задачу указывать ИТ-специалисту, какой выбор он должен сделать. Но поделюсь некоторыми соображениями — результатом собственного опыта. Вопросы, ответы на которые я анализирую, я пытался расположить в порядке значимости, что в данной ситуации можно сделать лишь условно: так тесно переплетаются проблемы программно-аппаратной организации сайта.
Физический или виртуальный сервер? Физический сервер в техническом отношении, безусловно, выгодно отличается от виртуального, но по затратам далеко впереди.
Чем же он лучше? Во-первых, все сервисы сервера работают только на ваш сайт. А значит, быстродействие и безопасность существенно выше. Во-вторых, сайт не зависит от того, как провайдер настраивает свои сервисы: они у вас свои. Кстати, это позволяет предельно легко сменить провайдера: просто перенести сервер на площадку нового провайдера, не задавая ему вопросов типа: а поддерживаете ли вы PHP? А какой версии? А есть ли у вас ASP? В случае физического сервера мы сами себе режиссеры в Интернет-сервисах.
Но это удовольствие стоит дороже, чем виртуальный сервер. Выше будут единовременныерасходы — выделение для этой цели компьютера, плата за установку на площадку провайдера и настройка сервера (это требует высокой и специальной квалификации). Выше и ежемесячные расходы — значительно более высокая плата за хостинг (в Москве — около 150 долл. в месяц). Хотя расходы на провайдера можно снизить, "захостив" сайт у себя.
Хостинг — у себя или у провайдера? Для того, чтобы обеспечить свой хостинг, необходим канал в Интернет с достаточно высокой пропускной способностью и надежностью (как вы догадались, Web-сервер в этом случае по определению физический). При этом радикально облегчается обновление сайта. И только в этом случае мы можем технически гарантировать защиту базы данных сайта от несанкционированного доступа. Но в то же время для собственного хостинга требуется иметь в штате системного администратора высокой квалификации.
Давайте еще оценим понятие "достаточно высокая пропускная способность" количественно (расчет приблизителен и оценивает величины с точностью до порядка). Канал должен "прокачивать" ваши странички в Интернет. Примем, что средний размер странички — 40 Кбайт. Давайте польстим планируемому сайту и предположим, что для него считается нормой, когда него одновременно заходят 10 посетителей (за такое число еще долго придется бороться!). В этом случае канал должен быстро пропустить 40 Kбайтґ10 =0,4 Мбайт. Примем, что пользователь согласен ждать 5 с, пока ему загрузится страничка. Получаем 0,4/5ґ8=0,64 Мбит/с, т.е. можно уверенно утверждать, что 1 Мбит/с вам на первое время хватит.
А вот что дешевле — хостинг у провайдера или у себя, -однозначно сказать нельзя. Организовав у себя высокоскоростной Интернет-канал, вы тем самым обеспечили высококачественный доступ в Интернет для компании, что может привести к финансовой равноценности обоих вариантов. Перечислим технологические решения, позволяющие это сделать.
Спутниковая связь. Очень дорогое удовольствие! Поэтому в подробности вдаваться не будем.
Радиоканал. Вы устанавливаете у себя антенну, направленную на ретранслятор провайдера. Пропускная способность канала, подключаемого к такому ретранслятору, достигает в Москве 11 Мбит/с. Затраты на канал 2 Мбит/с составят (примерно!) 3000 долл. единовременно и 400 долл. ежемесячно.
Выделенный канал — его обеспечивает вам провайдер. Расходы на 2-мегабитный канал: около 2000 долл. за подключение и столько же — абонентская плата.
На какую операционную систему ориентироваться? Мое мнение: на Unix/Linux — это все-таки "родная" среда для Интернета. К тому же значительно ниже аппаратные требования при той же функциональности. Вы можете использовать под Linux-сервер компьютер, уже не справляющийся с офисными приложениями. Для этого вполне достаточно процессора Pentium 160 МГц с 32 Мбайт памяти.
Какую комбинацию скрипт+сервер базы данных выбрать? Этот вопрос особенно важен, так как в будущем попытка изменить подход к этой проблеме будет означать полную переработку сайта. В этом коренное отличие данного вопроса от всех остальных.
Я предпочитаю PHP и MySQL, и отказался бы от этой комбинации только в том случае, если бы предполагалась очень большая база данных (более 50 млн. записей в таблице) — в пользу Oracle. Но если задача достаточно стандартна (например, гостевая книга, форум и т. п.), имеет смысл воспользоваться CGI-скриптами, библиотеки которых доступны в Интернете.
Если родной язык программирования для ваших программистов — Basic, вы имеете опыт создания баз данных под Microsoft Access, а специалистов по Unix у вас нет, можно использовать комбинацию ASP+Microsoft SQL Server. Но в этом случае вы либо вынуждены будете выделить для этого дорогой физический сервер (Windows NT/2000 — это не Unix), либо попадете в зависимость от провайдера (далеко не все провайдеры поддерживают ASP).
Немного о "раскрутке"
Серьезный разговор о раскрутке еще впереди: сайт сначала нужно сделать. Но уже сейчас необходимо решить два вопроса, которые скажутся и на раскрутке.
Доменное имя. Нужно, чтобы доменное имя легко запоминалось. Прежде всего следует выбрать домен первого уровня (символы справа от последней точки доменного имени), под которым будет "жить" сайт. Если сайт вашей компании предназначается для аудитории всего мира, лучше выбрать домен с суффиксом com; если аудитория сайта находится в одной стране — то лучше выбирать соответствующий ей домен (для России это ru).
Правильно выбранное доменное имя облегчает поиск сайта. Так сложилось, что доменные имена формируются как www.названиекомпании.com (или www.названиекомпании.ru). именно по такому адресу в Интернете компанию, скорей всего, начнут искать пользователи.
Стоит сразу озаботиться приобретением доменного имени. Не всегда удачным решением оказывается поручить эту задачу провайдеру: он может купить домен на себя. И стоит вам принять решение сменить провайдера — вы лишаетесь доменного имени.
Будут ли баннеры на вашем сайте? Баннер — это небольшая картинка, представляющая собой ссылку на другой сайт. Обмен баннерами, как считается, повышает посещаемость сайтов.
Не стану навязывать вам своего мнения, но поделюсь им: чужие баннеры на вашем сайте — это зло для вас. В самом деле, зачем а) заставлять вашего посетителя прокачивать 10 Кбайт чуждой вам информации? б) вводить его в искушение уйти с вашего сайта? в) подвергать риску идеологию сайта? Я как-то зашел на сайт рекрутингового агентства, на форум, посвященный трудоустройству выпускников (и выпускниц) вузов. И обнаружил баннер, рекламирующий интимные услуги в Москве.
Но если я вас не убедил — не забудьте предусмотреть в дизайне место для баннеров.
Календарный план и смета работ
Итак, вы приняли нужные решения о том, как обустроите свой сайт. Теперь составим набросок календарного плана работ и сметы расходов. Разумеется, мы сейчас оцениваем порядки величин: сроки и затраты весьма индивидуальны для каждого сайта, причем учитывать будем только прямые расходы.
Этап 1 — подготовительный.
Содержание: подготовка текстов и графики для сайта.
Исполнитель: как правило, PR-служба.
Сроки: 2-5 месяцев.
Прямые расходы: оплата фотографов, писателей, переводчиков (при необходимости), консультантов, CD-библиотек и т.п. — от 200 до 2000 долл.
Этап 2 — разработка дизайна.
Содержание: разработка дизайна сайта на основе подготовленных материалов. Этому этапу будет посвящена отдельная статья.
Исполнитель: дизайнер (как правило, приглашенный).
Сроки: 2 месяца.
Прямые расходы: оплата труда дизайнера (1000-1500 долл.).
Этап 3 — разработка первой версии сайта.
Содержание: написание всех страниц, скриптов, создание базы данных сайта, отладка его работы на сервере.
Исполнитель: программист (как правило, приглашенный), системный администратор.
Сроки: 2-3 месяца.
Прямые расходы: оплата труда программиста (1000-1500 долл.). Если требуется купить компьютер под Web-сервер — еще плюс 500-1500 долл.
Этап 4 — исправление первой версии сайта в соответствии с замечаниями руководства.
Содержание: теперь руководство может четко сформулировать свои требования к сайту, чем и не преминет воспользоваться. По этим замечаниям сайт будет скорректирован.
Исполнитель: программист (как правило, приглашенный), системный администратор.
Сроки: 2 недели.
Прямые расходы: оплата труда программиста (200 долл.). Если потребуется купить компьютер под Web-сервер — еще плюс 500 долл.
Этап 5 — тестирование.
Содержание: тестирование исправленной версии в рамках фирмы.
Исполнитель: программист (как правило, приглашенный), системный администратор.
Сроки: 2 недели.
Прямые расходы: оплата труда программиста (200 долл.).
Этап 6 — выход в Интернет.
Содержание: организация хостинга сайта.
Исполнитель: системный администратор.
Сроки: 2 недели.
Прямые расходы: для хостинга у провайдера — оплата хостинга и подключения (40-300 долл.).
Этап 7 — документирование, раскрутка, поддержка, обновление.
Содержание: составление технической документации сайта, привлечение посетителей, обеспечение надежной работы.
Исполнитель: ИТ-директор, системный администратор.
Сроки: перманентно.
Итак, по времени разработка корпоративного сайта займет 6-10 месяцев, и прямые расходы на него составят примерно 4000-8000 долл. Еще раз напомню, что это не точные оценки: это определение порядка величин. Ну а седьмой этап будет осуществляться постоянно, пока функционирует сайт.
Где стихи — там и проза…
Итак, мы рассмотрели технические аспекты планирования создания корпоративного сайта. А теперь коснемся самого сложного в планировании сайта — человеческого фактора.
Вам крупно повезло, если вам предоставлен карт-бланш: вы можете планировать расходы, формировать программно-аппаратную часть, подбирать дизайнера и программиста… Но мы замечтались. Вернемся к реальности.
Чем больше корпорация, тем больше давление на руководителя ИТ-проектов. Свет не без добрых людей — в окружении руководства всегда найдутся всезнайки, которым все известно про сайты, к тому же они знают замечательных дизайнеров… И вот руководителю проекта навязываются технические и кадровые решения.
Я призываю коллег помнить следующее. Хороший сайт — это сайт, который интересен, надежно работает, прост в навигации, имеет высокую посещаемость и приносит доход. Как он реализован — второй вопрос. Так что не отчаивайтесь, если вам навязали техническое решение, не затрагивающее идеологию сайта. Отвечать за сайт будете вы. На то вы и руководитель проекта.
А теперь позвольте несколько рекомендаций. Я не хочу преподносить их как непреложную истину — это мой личный опыт, "сын ошибок трудных". Но полагаю, что эти рекомендации заслуживают вашего осмысления.
Старайтесь документировать, насколько возможно, принятие значимых решений по планированию и реализации сайта. Не перегибайте палку — не носите на подпись каждое исправление на страничке. Но выбирая, скажем, платформу, язык скриптов и сервер базы данных — добейтесь подписи руководства под этим решением!
Чьими бы ставленниками ни были ваши подчиненные, работающие в этом проекте, — внимательно контролируйте их работу, при необходимости жестко ее корректируйте. В случае провала вы не спрячетесь за них. Если вы чувствуете, что в создавшейся ситуации не можете сделать хороший Интернет-сайт, лучше откажитесь сразу.
Не спорьте со сторонними экспертами в присутствии начальства или подчиненных. Руководитель — вы. Не забывайте этого. Не роняйте своего авторитета.
Не допускайте обсуждения проекта руководством с вашими подчиненными без вас. Вы руководитель проекта; если ваше мнение стало неинтересно начальству — вас фактически отстранили от проекта.
Вы — профессионал, и у вас получится сайт. Если вы проявите знание Интернет-технологий, выдержку, упорство… и будете продолжать читать наш журнал. Разговор о многих нюансах разработки сайта еще впереди. А пока — удачи!
Рекомендуемые ссылки:
1. Сетевые протоколы: http://www.ysu.ru/network/protocol2
2. HTML: http://html.manual.ru
3. PHP: http://www.php.net
4. MySQL: http://www.mysql.com