SlideShare a Scribd company logo
yo-ho-ho
Hello I’m
Alexey
Алексей Осипенко
cimon.io
«Эликсир счастья»
Эликсир на сервере
или
/README.md
Нет смысла пересказывать
cimon.io
cimon.io
с докеромЭликсир
cimon.io
с докеромЭликсир
это
cimon.io
с докеромЭликсир
как без
докера
это
cimon.io
с докеромЭликсир
с докером
только с
как без
докера
это
cimon.io
Козу вверх
кто любит
эликсир
cimon.io
Козу вверх
кто любит эликсир
cimon.io
Козу вверх
кто любит эликсир
cimon.io
Эликсир не панацея
cimon.io
не элексирЭликсир
Но ведь, можно же!
Не стоит деплоить с горячей заменой кода
Но ведь, можно же!
Не стоит деплоить с горячей заменой кода
Можно, но не стоит
cimon.io
Используется на боевом сервере
Сейчас эликсир-приложение
cimon.io
Справляется отлично
И, знаете, сервер
со всеми задачами!
cimon.io
Развертывание на сервере
Но вот
не такое радужное
cimon.io
Конечно же,
заслуга эликсира –
это эрланг
cimon.io
BEAM
А заслуга эрланга – это его
cimon.io
все является процессами,
а «процесс» – это актор
В эрланге
cimon.io
Снаружи
И процесс
выглядит как
черный ящик
Снаружи
мы ничего не знаем про
текущее состояние
cimon.io
Внутри
черный ящик превращается в
замкнутое пространство
Внутри
приходит
извне
параметрами
состояние
cimon.io
хранение данных управляется
виртуальной машиной,
а не акторами
В итоге,
cimon.io
Чистые функции
А внутри акторов у нас
cimon.io
Чистые вызовы функций
А у программиста снаружи используются
умирать весело
как концепт, говорят нам,
Акторы,
что
001 002 003004 005006
Совершенно неважно есть ли актор прямо сейчас
или не нужно заботиться о том, чтобы актор жил
cimon.io
можно поднять новый актор, а старый убить
Данные хранятся в BEAM, поэтому
006 007
Данные
006 007
Данные
cimon.io
проблема?
Может быть есть какая-нибудь
cimon.io
Миграция состояния
данных актора — серьезная
проблема
006 007
данные
Мы хотим, чтобы
подходили одинаково хорошо
для всех версий акторов
данные
А в итоге
нужны разные.
Наш актор а после обновления
был рокер,
стал хиппи
Миграция данных
не автоматизируется
И в общем случае
пишется вручную
для всех релизов
cimon.io
Не стоит деплоить с горячей заменой кода
Вывод, который был сделан:
cimon.io
по делу
Теперь давайте
обсудим
существующие решения
Процесс релиза
прост, как столб
/README.md
И описан
чтение ENV переменных
происходит
на этапе компиляции
CONFIG.EXS
cimon.io
Ubuntu
Проблема межплатформенной компиляции.
MacOS,
То, что компилировалось под
не запустится под
cimon.io
Проблема
миграций
базы данных
cimon.io
Проблема
миграций
базы данных
cimon.io
> _build/production/rel/vault8/bin/vault8 command
'Elixir.Vault8.Release.Tasks' migrate
The Twelve Factors
Config in the environment
Stateless processes
Dev/prod as similar as possible
Admin processes
несоблюдение
Тотальное
cimon.io
Платформа билда и запуска должны совпадать
Процесс релиза затрагивает все акторы
Процесс релиза уникален для системы
Четыре бочки дегтяв итоге имеем
Сервисы снаружи никак не управляемы
cimon.io
Все будет хорошо.
Но не стоит расстраиваться.
Эликсир молод, горяч
активно развивается
и
и
alexey@cimon.io
Спасибо
за
внимание
telegram@aratak
alexey.osipenko@fb.me
https://t.me/itextrapolation

More Related Content

More from Elixir Club (20)

PDF
Promo Phx4RailsDevs - Volodya Sveredyuk
Elixir Club
 
PDF
Web of today — Alexander Khokhlov
Elixir Club
 
PDF
ElixirConf Eu 2018, what was it like? – Eugene Pirogov
Elixir Club
 
PDF
Implementing GraphQL API in Elixir – Victor Deryagin
Elixir Club
 
PDF
WebPerformance: Why and How? – Stefan Wintermeyer
Elixir Club
 
PDF
GenServer in Action – Yurii Bodarev
Elixir Club
 
PDF
Russian Doll Paradox: Elixir Web without Phoenix - Alex Rozumii
Elixir Club
 
PDF
Practical Fault Tolerance in Elixir - Alexei Sholik
Elixir Club
 
PDF
Phoenix and beyond: Things we do with Elixir - Alexander Khokhlov
Elixir Club
 
PDF
Monads are just monoids in the category of endofunctors - Ike Kurghinyan
Elixir Club
 
PDF
Craft effective API with GraphQL and Absinthe - Ihor Katkov
Elixir Club
 
PDF
Elixir in a service of government - Alex Troush
Elixir Club
 
PDF
Pattern matching in Elixir by example - Alexander Khokhlov
Elixir Club
 
PDF
Ecto and Phoenix: Doing web with Elixir - Yurii Bodarev
Elixir Club
 
PDF
Handling external APIs with Elixir - Alex Rozumii
Elixir Club
 
PDF
Public Elixir in a service of government - Alex Troush
Elixir Club
 
PDF
How I did create Telegram bot - Roman Senin
Elixir Club
 
PDF
Designing scalable application: from umbrella project to distributed system -...
Elixir Club
 
PDF
Deploying Elixir/Phoenix with Distillery - Yaroslav Martsynuyk
Elixir Club
 
PPTX
Erlang Common tests - Sergey Bondarchuk
Elixir Club
 
Promo Phx4RailsDevs - Volodya Sveredyuk
Elixir Club
 
Web of today — Alexander Khokhlov
Elixir Club
 
ElixirConf Eu 2018, what was it like? – Eugene Pirogov
Elixir Club
 
Implementing GraphQL API in Elixir – Victor Deryagin
Elixir Club
 
WebPerformance: Why and How? – Stefan Wintermeyer
Elixir Club
 
GenServer in Action – Yurii Bodarev
Elixir Club
 
Russian Doll Paradox: Elixir Web without Phoenix - Alex Rozumii
Elixir Club
 
Practical Fault Tolerance in Elixir - Alexei Sholik
Elixir Club
 
Phoenix and beyond: Things we do with Elixir - Alexander Khokhlov
Elixir Club
 
Monads are just monoids in the category of endofunctors - Ike Kurghinyan
Elixir Club
 
Craft effective API with GraphQL and Absinthe - Ihor Katkov
Elixir Club
 
Elixir in a service of government - Alex Troush
Elixir Club
 
Pattern matching in Elixir by example - Alexander Khokhlov
Elixir Club
 
Ecto and Phoenix: Doing web with Elixir - Yurii Bodarev
Elixir Club
 
Handling external APIs with Elixir - Alex Rozumii
Elixir Club
 
Public Elixir in a service of government - Alex Troush
Elixir Club
 
How I did create Telegram bot - Roman Senin
Elixir Club
 
Designing scalable application: from umbrella project to distributed system -...
Elixir Club
 
Deploying Elixir/Phoenix with Distillery - Yaroslav Martsynuyk
Elixir Club
 
Erlang Common tests - Sergey Bondarchuk
Elixir Club
 

Deploying Elixir application - Alexey Osipenko