Elixirのumbrellaは知っていましたが、実際これ分散させて動かすときどうなんのさ、というイメージがぱっとしていなかったのですが、こちらを読んだら腹落ち感が生まれたのでメモ。特にInterface Moduleを切った上でRPCする、というところ。 medium.com 例えばappとdatabaseという2つのOTPアプリケーションがあったとします。databaseにクエリ投げたりする関数をDatabaseモジュールにつくり、それをappの中で使おうとすると、appはdatabaseに依存している、つまりdepsに{:database, in_umbrella: true}を持つ、ということになります。そうなると、appを立ち上げたいだけなのにdatabaseも立ち上がり、何がマイクロサービスだこんちくしょう、デプロイセパレートリーくそくらえ、というわけです。 上の記事で説明され