«Не делать как в CVS»

В свой знаменитой лекции Линус Торвальдс рассказывал, что когда разрабатывал git — одним из принципов у него был «посмотреть как устроен CVS и никогда так не делать». Потому что «CVS невозможно сделать правильно»
У нас при разработке МегаполОСа возник аналогичный принцип — посмотреть на существующий DevOps и никогда так не делать. Потому что многие вещи в нем тоже невозможно сделать правильно.
Это началось еще со стека технологий. Мы думали сначала писать МегаполОС на python, потому что многие devops инструменты, такие как ansible, написаны на python, а то и вовсе на bash. Однако мы быстро поняли, что пишем не скрипт, который отработал и закончился. Мы пишем систему, которая постоянно мониторит множество событий и реагирует на них. Для этой задачи хорошо подходят два языка — Typescript и Go. Решили писать на Typescript, потому что это быстрее.
При выборе СУБД для хранения данных в МегаполОСе мы сначала смотрели в сторону etcd, на котором написан kubernetes. Но потом решили узнать, что именно хранит в нем kubernetes. Посмотрели и ужаснулись — он по сути хранит там yaml файлы, которые в него были загружены. Мы решили использовать postgres.
И так со всем. В DevOps используют «инфраструктуру как код» — мы используем подход «инфраструктура как данные» и храним данные в базе данных. А код — это то, как работает МегаполОС. И он не меняется каждый раз, когда надо что-то изменить в кластере.
В DevOps можно написать скрипт, который делает все что угодно — у нас принципиально нельзя так сделать. У нас все данные типизированы. У нас даже API типизированный — мы для него используем язык GraphQL.
В DevOps используют много мелких инструментов — мы делаем одну систему, которая знает про IT-инфраструктуру все.
В DevOps изменения происходят ко коммиту в репозиторий — у нас изменения происходят тогда, когда дается команда внести изменения.
В DevOps все делают в консоли — у нас все делается через графический интерфейс.
Потому что МегаполОС мы писали не для DevOps-инженеров. Мы его писали для пользователей. Пользователей, который хотят просто устанавливать, использовать и разрабатывать серверные приложения.
Мы делаем то, что DevOps обещал сделать, но не смог — чтобы программы попадали к пользователю за 5 минут, а пользователь не думал, как это происходит.
Поддержите пользовательский подход к управлению IT-инфраструктурой — внесите деньги на наш краудфандинг: sponsr.ru/megapolos
#digitalprotopia #megapolos