В предыдущем поколении компьютерных технологий эти действия могли осуществляться одним монолитным приложением, отвечающим на запросы одного-единственного пользователя. Но современные веб-приложения вполне могут одновременно обслуживать миллионы пользователей, а их функции разбиты на так называемые микросервисы – наборы отдельных структурных элементов, каждый из которых делает что-то одно, и делает это очень хорошо. Если бы традиционное монолитное приложение, такое как Microsoft Word, было переделано в набор микросервисов, вы могли бы легко изменить опцию проверки орфографии на более качественную или добавить новую функцию, которая превращала бы веб-ссылки в сноски, или наоборот.
Микросервисы – это эволюция ориентированного на коммуникации конструктивного шаблона, который мы видим в структуре Unix и Интернета, а также в меморандуме Джеффа Безоса. Микросервисы определяются входящими и исходящими данными – тем, как они сообщаются с другими сервисами. Они могут быть написаны на разных языках и работать на множестве машин. Если они правильно спроектированы, любой из компонентов может быть заменен на улучшенный вариант, который выполняет ту же функцию, не требуя обновления остальной части приложения. Это то, что позволяет осуществлять непрерывное использование, при котором новые функции могут обновляться постоянно, а не одним мощным рывком, а также проводить А/Б-тестирование, во время которого альтернативные версии одной и той же функции можно протестировать на отдельных группах пользователей.
По мере увеличения количества и скорости разработки интернет-приложений характер работы в сфере программного обеспечения для множества людей также изменился. Это чем-то похоже на замену пропеллеров на реактивные двигатели в авиации. Для широкой категории приложений этот «реактивный двигатель» появился в виде первой прикладной статистики и теории вероятности, затем в виде машинного обучения и все более изощренных алгоритмов ИИ.
В 2006 году Роджер Магоулас, вице-президент O’Reilly Media по научным исследованиям, впервые ввел термин «большие данные» для описания новых инструментов управления данными в масштабе, который позволяет обслуживать такие компании, как Google. Бывший научный сотрудник корпорации Bell Labs Джон Маши использовал этот термин еще в 1998 году, но для описания растущего объема собираемых и хранимых данных, а не для каких-то управляемых этими данными услуг, основанных на статистике, и не для обозначения крупных достижений в области программного обеспечения и рабочих процессов, которые делают возможным предоставление этих услуг.
Большие данные означают не просто более масштабную версию реляционной базы данных, такой как Oracle. Это нечто совершенно иное. В своем докладе 2009 года «Необъяснимая эффективность данных» (своим названием он обязан классическому докладу Юджина Вигнера 1960 года «Необъяснимая эффективность математики в естественных науках») исследователи машинного обучения корпорации Google Алон Халеви, Питер Норвиг и Фернандо Перейра объяснили растущую эффективность статистических методов при решении сложных тогда проблем, таких как распознавание речи и машинный перевод.
Большая часть предшествующей работы была основана на грамматике. Смогли бы вы сконструировать, по сути, огромный поршневой двигатель, который использовал бы свои знания грамматических правил для распознавания человеческой речи? Успех был бы незначительным. Но по мере появления в Интернете все большего количества документов ситуация менялась. Несколько десятилетий назад исследователи полагались на тщательно отобранные фигуры человеческой речи и литературные произведения, которые в лучшем случае содержали несколько миллионов слов. Но в конечном итоге в Интернете стало настолько много контента, что правила игры сильно изменились. В 2006 году корпорация Google собрала базу из триллиона слов для исследователей языка и разработала «реактивный двигатель» для их обработки. С того момента прогресс пошел быстро и решительно.