Опубликовано: 2016–02–19Первоначально опубликовано на rudenoise.uk.

Продолжая работать с Real World Ocaml, я изучил связанные проекты, и это меня заинтересовало: MirageOS (unikernel/library-OS для создания небольших, быстрых и безопасных веб-серверов). .

Моя история с серверами 2003–2016 гг.

  • 2003 Начало моей «карьеры» разработчика. Веб-сайт, над которым я работал, представлял собой стек LAMP, размещенный на одном «мощном» сервере, хранящемся в стойке (что я помню, но не могу найти подтверждающих доказательств) в убежище от радиоактивных осадков под Чайна-тауном Манчестера. Мы администрировали его через ssh и ftp. Если у него возникали проблемы, кто-то должен был бежать туда и физически менять его на запасной. Судя по всему, это произошло однажды, когда (непорнографические) изображения были размещены по горячей ссылке с итальянского порносайта. Стало слишком жарко. Резервное копирование данных выполнялось в виде дампов БД, а избыточность — диски с поддержкой RAID! Я наслаждался теми годами.
  • 2006–2011 Серверы были менее привлекательными, поскольку проекты, над которыми я работал, жили в коробках RackSpace (с соглашениями об уровне обслуживания и пакетами управления). В крупных компаниях были администраторы БД, серверов и сетей. Мы даже использовали контроль версий. В блогах, таких как High Scalability, были рассказы о фермах серверов в транспортных контейнерах и других экзотических и захватывающих установках.
  • 2011 – 2014  По мере того, как облачные сервисы становились все более популярными, дела снова пошли на лад. Инструменты DevOps просачивались вниз (и мой работодатель имел дело с глобальными проблемами масштаба и местоположения). Создание, перемещение и управление серверами становились еще одним повседневным инструментом (благодаря Vagrant, Chef, Puppet, AWS CLI и им подобным).
  • 2015 Теперь Docker прочно закрепился как способ создания и управления согласованными средами (от машин разработки до работающих серверов). Серверы стали еще одним инструментом программирования.
  • 2016 Unikernels?!

Почему Юникернелс?

В стеке NodeJS, например, есть много движущихся частей: операционная система, системные инструменты, NodeJS, пакеты NPM, которые также втягивают в себя дополнительные пакеты, и сидят сверху: приложение).

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

Кроме того, каждый элемент в стеке может привести к уязвимости системы безопасности.

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

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

Для хорошей истории и обзора всего этого я рекомендую Unikernels: Rise of the Virtual Library Operating System.

Итак, что я делаю по этому поводу?

Мне понравилось изучать OCaml, но мне нужен был реальный проект, чтобы его использовать. Я также хотел внести свой вклад в проект с открытым исходным кодом, в идеале тот, который мог бы сыграть роль в будущем инфраструктуры Интернета. Знакомство с Unikernels привело меня к тому, что я подписался на хакатон Mirage OS (он проходит в Марракеше).

Я в полном составе.

Если вы хотите быть в курсе, когда будет написано больше этого материала, вы можете подписаться или почему бы не посмотреть домашнюю страницу Руденуаза?

Первоначально опубликовано на rudenoise.uk.