Этот пост, в противоположность предыдущему, будет не для программистов, а скорее для тех, кто в Интернет-технологиях - пользователь. Итак...
Из чего состоит и как работает сайт? Немного необычный (хотя и достаточно известный в узких кругах) взгляд в этом посте, и он заключается в том, что сайт - это функция. Наподобие математической, y = f(x). Если не вдаваться в подробности, то для обычного пользователя сети Интернет, вот эта самая f - и есть сайт, в то время как x - это строка запроса в браузере, а y - ответ от сайта, который в нем же и отображается.
Компоненты и работа сервера, на котором работают сайты.
Если смотреть "с высоты птичьего полета", сайт состоит из следующих компонент, в порядке их вступления в дело на сервере, где размещен сайт (хостинг):
1. Сервер статики. Статика - это файлы, содержимое которых не зависит от запроса (изображения, файлы стилей для контента, скриптов обработки пользовательских событий в браузере, вложенные документы). Для них ставят быстрые серверные приложения, и чаще всего это многим известный Nginx.
2. Сервер, запускающий код сайта. Чаще всего это Apache - он умеет запускать код, предварительно сообщив ему характеристики запроса (ту самую строку запроса из браузера скажем).
3. Собственно, программный код сайта (очень распространен язык PHP), о которым мы поговорим чуть далее и подробнее. Он в ответ на запрос генерирует HTML, отображаемый (как называют этот процесс программисты - рендеринг, от английского rendering) в браузере клиента. Этот код часто взаимодействует с базой данных.
4. База данных - хранилище данных, чаще всего MySQL. В базе данных удобно хранить перечисляемые объекты, например, записи новостей или записи о товарах, записи о зарегистрированных пользователях и их заказах. База данных позволяет быстро получать различные срезы перечисляемых объектов (по определенному признаку, например - по категории).
За один запрос программный код может несколько раз сходить в базу данных для выполнения различной логики, и это составляет основную нагрузку на сервер. Чем больше логики, чем больше данных в ней задействовано, тем производительней должны быть характеристики выбранного тарифного плана хостинга.
Об устройстве программного кода и системах управления контентом (CMS).
Системы управления контентом (Content Management Systems) - это заготовленные заранее сайты, как минимум, с уже готовыми функциями администрирования контента и методами работы по сохранению/извлечению его из базы данных.
Все они отличаются, в первую очередь:
1. Набором функций: как можно организовать контент, какие типы уже заготовлены (новости, товары, и тому подобное), какие технические возможности он предоставляет (резервное копирование например).
2. Внешним видом административной и публичной части. Для публичной части возможно выбрать как эксклюзивный дизайн (по заказу), так и шаблонные варианты (которые в большинстве случаев можно до некоторой степени поменять). Вид административного интерфейса обычно не меняют, но от него так же часто требуется некоторое удобство. Например, корректная работа в мобильных браузерах.
3. Ценой. Существуют как платные системы управления контентом (например, многофункциональный 1С-Битрикс, который хорошо подходит для Интернет-магазинов), так и бесплатные - многим известный Wordpress (который хорошо подходит для одностраничных или сайтов, где основной упор на текстовом контенте).
Разные CMS в своих "внутренностях" (программном коде) устроены сильно по-разному. Это связанно и со внешним видом, и с функциональностью.
В этом обзорном посте мы неглубоко рассмотрели как работают некоторые несложные сайты. Существуют и отличные от описанного выше способы работы серверов. Так, достаточно молодая технология Node.JS работает иначе - там каждый запрос не обрабатывается новым экземпляром программного кода, а обрабатывает поток событий (различные запросы) в одном цикле. Это удачное решение не столько для веб-сайтов, сколько для веб-приложений (требующих совместной работы - например, одновременное онлайн-редактирование документов). Но историю об этом мы прибережем на будущее :)