В наши дни существует огромное количество технологий, ориентированных на различные аспекты облачных вычислений.
В частности, речь идет о контейнеризации и микросервисах.
Именно по этой причине мы стали воспринимать приложения как распределенные системы, компоненты которых можно легко развернуть и перенести в облако.
Я считаю, что то, с чем мы столкнулись сегодня, — это революция.
Но дело не только в технологиях.
Сейчас мы находимся на пороге чего-то настолько огромного, что это может изменить наше восприятие и понимание программного обеспечения и программных инфраструктур.
Моя идея заключается в том, что нам нужны новые абстракции и понятия, чтобы жить в новых условиях.
В науке всегда ищут модель, которая лучше всего отражает суть реальности.
Делается это так потому, что на основе таких моделей можно создавать технологии, отвечающие потребностям человечества.
То же самое произошло и в информатике с самого ее зарождения, когда исследователи начали автоматизировать вычисления – то, на что раньше был способен только человеческий разум.
С этого момента понятие «вычислительная машина» всегда использовалось как основа всего, что связано с автоматизированными вычислениями.
На основе этой модели созданы разнообразные технологии.
Здесь я хочу подумать о новой базовой идее вычислений, которая лучше соответствует реальности облачных вычислений, чем традиционная модель вычислительной машины.
Я хочу поговорить о том, что я называю «коммуникационной машиной».
Из машины, созданной для вычислений.
Исторически компьютеры и другие вычислительные машины создавались для автоматизации вычислений.
Если перейти от счетов к современному компьютеру, то окажется, что всевозможные компьютеры всегда создавались для того, чтобы расширить вычислительные возможности человека с помощью внешнего устройства.
Теория вычислений была разработана Аланом Тьюрингом с использованием созданной им абстрактной вычислительной «Машины Тьюринга», а базовая архитектура вычислений была предложена Фон Нейманом.
Компьютерная архитектура
Управление такой машиной, ее программирование по сути осуществляется с помощью потока битов.
Языки программирования появились, чтобы дать разработчикам инструменты для создания программ, напоминающих естественный язык.
Такие инструменты были созданы для увеличения скорости работы и уменьшения количества ошибок.
Все эти языки представляют абстрактные примитивы для описания вычислений, предоставляя программистам широкий спектр возможностей — от возможности описывать выражения до возможности объявлять процедуры, функции и объекты.
После компиляции все это превращается в поток битов, который может питать компьютер.
Память, блок управления, арифметико-логический блок – вот основные понятия компьютера.
.
компьютер превратился в виртуальную машину.
С тех времен и по сей день компьютеры совершенствовались с целью увеличения их вычислительной мощности.
Больше памяти, больше процессоров, выше тактовая частота.
Вычислительная мощность реальных компьютеров стала настолько велика, что стала возможной виртуализация.
Сегодня на одном реальном компьютере могут работать сотни экземпляров виртуальных машин, которые могут использоваться разными людьми или организациями, то есть продаваться отдельно.
Рост рынка виртуализации — очень интересное явление, поскольку означает, что в коммерческих целях в целом не требуется вся вычислительная мощность реальных компьютеров.
Вместо этого нам нужна меньшая, но более доступная вычислительная мощность.
Виртуальные машины ценны тем, что их основные параметры, такие как объем памяти, количество процессоров и объем дискового пространства, можно очень быстро перенастроить.
Самый интересный аспект виртуальной машины заключается в том, что это не настоящий компьютер, созданный из аппаратных компонентов.
Это программа, которая дает работающим с ней иллюзию того, что они работают с настоящим компьютером.
Это не незначительный факт, а доказательство того, что существует облачный слой, который дает нам абстракцию компьютера, который не является реальным, но ведет себя так же, как настоящий.
Программы, на которых основаны виртуальные машины, предназначены для того, чтобы дать системным администраторам и программистам нечто похожее на настоящий компьютер, с которым они привыкли работать, но в то же время что-то, что можно развернуть удаленно.
-центр.
.
а затем - к системам контейнеризации и бессерверным системам.
В настоящее время эволюция вычислительных машин от реальных компьютеров к виртуальным сделала еще один шаг вперед. Следующий этап эволюции — контейнеризация.
Благодаря контейнеризации мы наконец избавились от иллюзии работы с настоящей, полнофункциональной вычислительной машиной.
Вместо этого мы работаем с какой-то настраиваемой вычислительной «коробкой».
Реальные вычислительные ресурсы, виртуализация (независимая от оборудования), контейнеризация (независимая от облака) )
Каждый контейнер оснащен минимальным набором инструментов, необходимых для запуска конкретных приложений.
У него нет ничего лишнего.
Поскольку мы можем построить стек контейнерных технологий по своему желанию, мы можем выбрать именно ту технологию, которая нам нужна для разработки приложения, используя стандартные протоколы и форматы для взаимодействия с другими компонентами.
Это важный момент, поскольку каждый контейнер может быть немедленно связан с его наблюдаемым извне поведением (функционалами, которые он обеспечивает при доступе к объявленной конечной точке).
Это настолько важно, что можно сказать, что часть нашей вычислительной инфраструктуры (контейнера) определяется предоставляемым ей функционалом (программным обеспечением).
Становится все более важным управлять взаимодействием различных контейнеров, а не выполнять вычисления внутри этих контейнеров.
Невероятно важное следствие такого подхода можно увидеть в бессерверных архитектурах, когда разработчик занимается исключительно функциональностью программ, а решение вопросов развертывания кода и распределения ресурсов ложится на плечи облачного провайдера.
Если довести до такой крайности, то вычислительная машина перестанет существовать.
Оно превращается в количество выделенной памяти и процессорного времени.
Единственная проблема этого подхода заключается в том, что он сильно привязан к архитектуре конкретного облачного провайдера.
Мы вынуждены использовать технологии, выбранные облачным провайдером.
С другой стороны, технологии контейнеризации дают нам большую гибкость, поскольку позволяют нам самим выбирать инструменты для выполнения вычислений.
Вот почему я продолжу обсуждение ниже, рассматривая контейнеризацию как основу новой машины и, таким образом, выйдя за рамки бессерверных вычислений, которые я считаю особым случаем того, о чем я хочу поговорить.
.
добраться до машины, предназначенной для общения Прежде чем мы продолжим, позвольте мне подвести итог вышесказанному.
Вычислительные системы сегодня и завтра
Сегодня, когда мы работаем с поставщиком облачных услуг, мы все еще видим уровень абстракции, представленный виртуальными машинами.
Но завтра нам будут доступны только контейнеры (многие платформы уже так работают).
На этом этапе виртуальные машины перестанут существовать.
Будут только контейнеры — океан вычислительных «коробочек», реализующих определённый функционал.
Они станут новым вычислительным слоем, с которым нам придется работать.
В данном случае речь пойдет уже не о битах, а о связях.
Разработчики, общие компоненты и потребители
Новая машина, по сути, будет состоять из огромного количества компонентов, которые необходимо соединить, чтобы получить новый программный функционал.
Убедиться, что эти компоненты корректно взаимодействуют друг с другом, будет одной из основных задач разработчиков.
В этом сценарии общение и координация станут более важными, чем расчеты.
Компонентная связь
Эта концепция не нова.
В 1980-х годах Робин Милнер разработал «Исчисление коммуникационных систем» (CCS), которое обеспечивает математическую основу, в которой вычисления выполняются путем установления связей между процессами.
В то же время были предложены и другие математические методы моделирования взаимодействующих систем.
Единственное новое явление, с которым мы столкнулись сегодня, заключается в том, что «коммуникационная машина» становится привычной, широко доступной машиной, которую может использовать каждый.
Это не что-то похожее на специальный прибор, используемый в исследовательской лаборатории.
Контейнеры являются строительными блоками такой машины, и роль, которую когда-то играли биты, теперь играют взаимодействия между контейнерами.
Новые технологии для нового автомобиля
Если мы признаем тот факт, что мы являемся свидетелями революции, затрагивающей самые основы вычислений, мы сможем начать менять подход к новой коммуникационной машине и связанным с ней технологиям.Перед нами стоит большая задача: найти технологии, которые лучше подходят для программирования такой машины, чем те, которые у нас есть.
Программирование API, архитектура как код, сервис-ориентированные вычисления, микросервисы, хореография — это лишь некоторые из концепций, которые необходимо принимать во внимание, размышляя о будущей эволюции технологий для коммуникационных машин.
На написание этой статьи меня побудило участие в создании нового языка программирования ( Джоли ), тот опыт, который я накопил за время работы.
Мы начали с математической основы CCS, адаптировав ее к сервис-ориентированной модели.
Джоли — это язык, в котором примитивы общения находятся на том же уровне, что и вычислительные.
Работая над Jolie, мы заметили, что примитивы, встроенные в язык, могут упростить общение и координацию, сокращая время разработки программ и упрощая их обслуживание.
Это связано с тем, что некоторые аспекты программирования встроены в сам язык, а не привнесены в него внешними библиотеками.
Более того, при таком подходе разработчику требуется сравнительно небольшой объем знаний для создания распределенных сервис-ориентированных приложений.
Дело в том, что разработчикам нужно только знать язык, а не помимо языка владеть набором библиотек и фреймворков.
Мы находимся в самом начале новой эры информатики, и ситуация может измениться очень быстро.
Но можно с полной уверенностью сказать, что существующий сегодня подход к программированию через какое-то время полностью изменится.
Как вы думаете, правда ли, что будущее компьютеров — это «координационные машины»?
Теги: #ruvds #информатика #Настольные компьютеры
-
Кислота Для Мобильных Браузеров
19 Oct, 24 -
Динамика Тегов
19 Oct, 24