Опубликовано: 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.