В последнее время я проводил эксперименты с компоновкой докеров, чтобы развернуть несколько взаимодействующих микросервисов. Я вижу много преимуществ, предоставляемых микросервисами, и теперь, когда есть хороший набор инструментов для управления ими, я считаю, что не очень сложно прыгать в универсал микросервисов.
Но я тоже экспериментировал с Elixir, и я очень увлекаюсь преимуществами, которые дает сам. Учитывая, что он поощряет упаковку вашего кода во множество развязанных приложений и поддерживает обновление горячего кода, как бы вы смешивали докер с elixir (или erlang, если на то пошло)?
Например, если я хочу использовать докеры, потому что он обеспечивает dev-prod-четность, как это делает эликсир? Учитывая, что контейнеры-докеры неизменяемы, я теряю возможность делать обновления с помощью "горячего" кода, не так ли? Что можно сказать о синих/зеленых вариантах развертывания или канарейках?
Я имею в виду, я мог просто написать микросервисы с Elixir и использовать их так, как если бы они были написаны на любом другом языке, полиглотизм является одним из преимуществ микросервисов в любом случае, но тогда я не получаю все преимущества использования OTP платформе, я думаю, что чистые совлокальные приложения erlang более оптимальны, используя промежуточные очереди для связи между микросервисами, написанными на разных (или не) языках.