KnigaRead.com/
KnigaRead.com » Документальные книги » Прочая документальная литература » Джош Кауфман - Первые 20 часов. Как быстро научиться… чему угодно

Джош Кауфман - Первые 20 часов. Как быстро научиться… чему угодно

На нашем сайте KnigaRead.com Вы можете абсолютно бесплатно читать книгу онлайн Джош Кауфман, "Первые 20 часов. Как быстро научиться… чему угодно" бесплатно, без регистрации.
Перейти на страницу:

С момента первой публикации в 2005 году список рекомендуемой литературы из книги «Сам себе MBA» оставался одним из самых популярных, а дополнения к этому списку делают посетители сайта со всего мира. С 2005 года сайт PersonalMBA.com посетили более 2 миллионов читателей.

Моя первая книга «Сам себе MBA» была естественным развитием сайта PersonalMBA.com и стала международным бестселлером. Издание книги предполагает также и ее распространение, и поэтому я на протяжении нескольких лет изо всех сил старался привлечь новых читателей.

О книге «Сам себе MBA» упоминалось в New York Times, Wall Street Journal, Fortune, Forbes, FastCompany, на многих популярных сайтах, в блогах. И после каждого такого упоминания на PersonalMBA.com приходили тысячи новых посетителей.

Цена прогресса

Тысячи посетителей вашего сайта — это здорово, но при условии, если все они имеют возможность одновременно на него попасть. Моя проблема состоит именно в этом: каждый раз, когда трафик сайта значительно увеличивается и достигает определенного порога, сайт рушится в зените своей славы и популярности, оставляя посетителям лишь сообщения с кодом ошибки.

Вот типичный пример: популярный блог Lifehacker.com, посвященный программному обеспечению и компьютерам, за последние семь лет три раза помещал список литературы «Сам себе MBA». И каждый раз тысячи людей одновременно пытались зайти на сайт PersonalMBA.com, перегружая мой веб-сервер (компьютер, предоставляющий веб-страницу по запросу пользователя). Вместо запрашиваемой информации сервер выдавал сообщение «Ошибка установки связи с базой данных» или «Ошибка 503», что эквивалентно просьбе о пощаде в цифровой форме.

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

Изучение проблемы

Моя первая реакция — усилить сервер, добавив вычислительной мощности и памяти. Это помогло, но лишь до некоторой степени. При превышении определенной нагрузки мой сайт снова рушился, что совпадало с каждым серьезным успехом в маркетинге.

В то время PersonalMBA.com использовал популярную систему управления сайтами под названием WordPress [2]. Эта система оптимизирована под легкость установки и использования, а не под работу с большими нагрузками. В стандартной конфигурации WordPress каждый запрос веб-страницы запускает цепочку действий сервера, генерируя сотни внутренних запросов, чтобы предоставить каждую страницу пользователю.

Такой процесс делает каждый отдельный запрос веб-страницы «затратным». То есть выполнение каждого запроса требует выделения существенного объема памяти и вычислительной мощности. Если один посетитель сайта просматривает пять страниц, то он генерирует пять затратных запросов. Если тысяча посетителей сайта одновременно обращаются к одной и той же странице, то сервер попытается запустить тысячу идентичных затратных процессов одновременно.

Система зависла

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

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

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

И в довершение всего популярность и относительная уязвимость WordPress сделали систему любимой мишенью для хакеров и спамеров. Приблизительно раз в неделю какой-нибудь хакер находит новую уязвимость, а затем использует ее для того, чтобы заполнить спамом миллионы блогов WordPress. Поддержание безопасности системы и своевременное обновление программного обеспечения — это уже работа в полную смену, особенно если вы поддерживаете несколько сайтов. (Я поддерживал 12 сайтов одновременно и катастрофически не справлялся.)

В какой-то момент мне стало ясно, что я трачу больше времени на обеспечение работоспособности сайтов, чем на материалы для своих читателей. Это было бессмысленно. Не только из-за того, что уменьшалась полезная отдача, но еще и потому, что я до этого не обучался программированию. Я узнавал лишь набор ситуативных приемов и «заплаток», применимых конкретно к системе WordPress. Не самый эффективный вариант [3].

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

Потенциальное решение

Однажды я наткнулся на Jekyll [4], программу управления сайтами, созданную Томом Престоном-Вернером, который известен как основатель социальной сети для программистов GitHub [5]. Система Jekyll предназначена для того, чтобы заменить WordPress, обеспечив простое управление сайтами без затратных запросов.

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

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

Jekyll предлагал многообещающие возможности. Теоретически я мог заменить WordPress просто папкой текстовых файлов на своем компьютере. Мой сайт будет быстрым, как молния, необыкновенно стабильным, и я сэкономлю больше ста часов в год, которые трачу на поддержание сервера.

Однако тут меня поджидала одна ловушка: система Jekyll написана на языке программирования Ruby, которого я не знаю. Я понятия не имею, как писать программы на Ruby или запускать приложения Ruby, предназначенные для пользователей. Кое-что из того, что мне необходимо для управления сайтом PersonalMBA.com, требует большего, чем простое форматирование.

Чтобы управлять сайтами с помощью системы Jekyll, мне нужно научиться программировать, а также запускать программы веб-приложений, написанные на Ruby.

Похоже, я нашел привлекательную задачу.

Научиться программированию

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

Важно отметить, что все, чем я занимался до сих пор, — это не программирование. Языки HTML и CSS, которыми я пользовался для разработки веб-страниц, называются «языками разметки». Коды HTML и CSS просто указывают компьютеру, в каком виде отобразить текстовый файл (то есть «этот текст отобразить жирным шрифтом» или «данный раздел — основной заголовок, шрифт 24 пункта»).

То же самое можно сказать о моих упорных попытках усовершенствования сервера. Конечно, я составлял какие-то программы, но настоящим программированием это назвать нельзя. Я просто устанавливал готовое программное обеспечение, а затем изменял его настройки. Приложения, которые я использовал, писали профессиональные программисты, и для того чтобы их применять, мне не нужно было уметь программировать. Конфигурирование сервера и его поддержка — полезные навыки, но это не программирование.

Что же такое программирование?

Первое, что мне пришло в голову: программирование — это указание, какие вещи должен делать компьютер. Однако такое определение было слишком расплывчатым и бесполезным. Что делать? Какие «вещи»?

10 лет назад в колледже я прослушал два курса по основам программирования и поэтому немного смутился, когда понял, что не могу дать четкого определения этой дисциплине. Я помню некоторые из основных терминов, например переменная, цикл, ввод, вывод, функция, объектная ориентация, а также нечто под названием пузырьковая сортировка. Вот, пожалуй, и все.

Перейти на страницу:
Прокомментировать
Подтвердите что вы не робот:*