2023年末のElixirが出来ること⑨マイクロサービスライブラリ編（最新Elixirのキャッチアップと、アドカレのネタ探しに読んでください）

この記事は、[Elixir Advent Calendar 2023 シリーズ14](https://qiita.com/advent-calendar/2023/elixir) の22日目です

昨日は、 私で [「2023年末のElixirが出来ること⑧クラウドライブラリ編」](https://qiita.com/piacerex/items/0ce1f05990a502a26ed7) でした

---

[piacere](https://twitter.com/piacere_ex) です、ご覧いただいてありがとございます :bow:

2023年末の時点で、Elixirにいったい何が出来るのかを紐解いていくシリーズで、[前回は「⑧ クラウドライブラリ編」](https://qiita.com/piacerex/items/0ce1f05990a502a26ed7)でしたが、今回は「⑨ マイクロサービスライブラリ編」です

今回ご紹介するライブラリも、様々なElixirマイクロサービス開発で使われますが、先日αリリースした過去／現在／未来のスキルからあなたのBright（輝き）とRight（正しさ）を引き出すプロダクト「Bright」でも一部は活用されています

https://bright-fun.org
[![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/155423/7efe6224-ee56-f139-b575-b34d1e70a89d.png)](https://bright-fun.org)

https://bright-fun.org

:::note warn
[①2023年の新たなライブラリ／FW編](https://qiita.com/piacerex/items/774dd91c67184bec6df1)
[②2023年に更新されたライブラリ／FW編](https://qiita.com/piacerex/items/0c6ffb235e1146c38302)
[③Elixir本体／Phoenix／LiveView編](https://qiita.com/piacerex/items/8cd483159c93d0f05bd7)
[④Web／スマホ開発ライブラリ編](https://qiita.com/piacerex/items/40ec656513be75a996c0)
[⑤AI・LLM前編【Nx／Bumblebee】](https://qiita.com/piacerex/items/f6a73a8252a3f6093b1a)
[⑥AI・LLM後編【Scholar／Explorer／Evison／EXGBoost】](https://qiita.com/piacerex/items/fd19820bc0befe52b156)
[⑦Livebook＋プラグイン編](https://qiita.com/piacerex/items/bcdcb7bc6c998335a406)
[⑧クラウドライブラリ編](https://qiita.com/piacerex/items/0ce1f05990a502a26ed7)
[⑨マイクロサービスライブラリ編](https://qiita.com/piacerex/items/7e4b15e4dd9a94e58b3b)
[⑩データ操作ライブラリ編](https://qiita.com/piacerex/items/2e19fd1df6ef2d7cf150)
[⑪2023年末までのElixirができることを振り返る](https://qiita.com/piacerex/items/4ef28623d898450c0dcf)
:::

あと、このコラムが、面白かったり、役に立ったら、![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/155423/907a8695-4d83-1b5c-8052-d0ce52de5f66.png) をお願いします :bow:

## Libcluster

IPアドレス／DNSベースのクラスタ化（オートスケール対応）

https://github.com/bitwalker/libcluster/

## DnsCluster

DNSベースのクラスタ化（オートスケール対応）

https://github.com/phoenixframework/dns_cluster

## Gproc

Erlang分散クラスタのプロセス辞書

https://github.com/uwiger/gproc/

## Protobuf

ピュアElixirプロトコルバッファ実装

https://github.com/elixir-protobuf/protobuf

## Nebulex

透過的キャッシュ

https://github.com/cabol/nebulex

## Redix

Redis（インメモリDB）クライアント

https://github.com/whatyouhide/redix

## ErlPort

Python／Rubyへのオフロード

https://github.com/erlport/erlport

## Rustler

Rustへのオフロード

https://github.com/rusterlium/rustler

## ReverseProxyPlug

リバースプロキシによるオフロード／分散

https://github.com/tallarium/reverse_proxy_plug

## FastGlobal

データサイズに関係無く高速リードできるワーキングメモリ

https://github.com/discord/fastglobal

## Manifold

Discordで通信削減に使われるErlangノード間メッセージパッシング圧縮

https://github.com/discord/manifold

## Dataloader

Facebook Dataloaderインスパイアな高速データローダバッチ

https://github.com/absinthe-graphql/dataloader

## Exq

Resque／Sidekiq互換の並行性／リトライに優れたジョブマネージャ（ストアはRedis）

https://github.com/akira/exq

## Oban

ロバストで高信頼、高オブザーバビリティなジョブマネージャ（ストアはPostgreSQL／SQLite3）

https://github.com/sorentwo/oban

## NimblePool

Elixir軽量プロセス（サーバ）すら立ち上げなくて済ませる軽量ソケット／ポート／NIF操作

https://github.com/dashbitco/nimble_pool

## Erlexec

ElixirからOSプロセスをモニター

https://github.com/saleyn/erlexec

## ZenMonitor

プロセス監視／ダウン時輻輳をGenStageを使って過負荷にさせないバックプレッシャー処理

https://github.com/discord/zen_monitor

## Telemetry

イベントを動的にディスパッチ（送出）でき、他ツールと連携させるためのライブラリ

https://github.com/beam-telemetry/telemetry

## Prometheus関連

Prometheus（モニタリングツール）クライアント

https://github.com/deadtrickster/prometheus.ex

https://github.com/deadtrickster/prometheus.erl

https://github.com/akoutmos/prom_ex

## Appsignal

AppSignalクライアント

https://github.com/appsignal/appsignal-elixir

## OpenTelemetry関連

OpenTelemetry（オブザーバビリティツール）

https://github.com/open-telemetry/opentelemetry-erlang

https://github.com/open-telemetry/opentelemetry-erlang-contrib/tree/main/instrumentation/opentelemetry_phoenix

https://github.com/open-telemetry/opentelemetry-erlang-contrib/tree/main/instrumentation/opentelemetry_ecto

https://github.com/open-telemetry/opentelemetry-erlang-contrib/tree/main/propagators/opentelemetry_process_propagator

### OpenTelemetryXRay

https://github.com/cogini/opentelemetry_xray



https://hex.pm/packages?search=uuid&sort=recent_downloads

https://hex.pm/packages?search=microservice&sort=recent_downloads

https://github.com/beam-telemetry/telemetry_metrics_statsd

### EventStore

https://github.com/commanded/eventstore

### Commanded

https://github.com/commanded/commanded

<font color="red">【以下、2024/02/03追記】</font>

### Pow

マルチテナントやロール設定、API認証を備える認証ライブラリ

https://github.com/pow-auth/pow

# 終わりに

Elixirのマイクロサービスのサポート状況の充実が見て取れます

Brightのようなプロダクション開発におけるマイクロサービス構築の際には、とても助かります

https://bright-fun.org

次回は、[「⑩ データ操作ライブラリ編」](https://qiita.com/piacerex/items/2e19fd1df6ef2d7cf150)をお送りします

---

明日は、 私で [「【TIPS】Elixirでループのbreak」](https://qiita.com/piacerex/items/1472eacf2f1df50138ee) です

# p.s.このコラムが、面白かったり、役に立ったら…

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/155423/907a8695-4d83-1b5c-8052-d0ce52de5f66.png) にて、どうぞ応援よろしくお願いします :bow: