ジョブカン事業部のアドベントカレンダー11日目です。
ジョブカン経費精算/ジョブカンワークフローの開発を担当している@imadon2024 です。
アドベントカレンダー投稿は初になりますので、暖かい目で見て頂ければ幸いです。
はじめに
時間を無限に奪っていくNetflixの有料会員数は、2024年第2四半期時点で約2億7765万人だそうです。
こんな膨大なユーザを楽しませるプラットフォームはどんな構成で動いているのか気になりまして、ちょっとだけ眺めてみました。
System Design
System Designから眺めてみました。
元記事
https://medium.com/javarevisited/10-system-design-lessons-from-netflixs-architecture-19ece2191a03
システムを眺めている中で、個人的に見たことのないソフトウェアを利用してましたので、少し調査。
Amazonクラウド上のインスタンスをランダムに落としまくることで、サービスに対して仮想的な障害を引き起こしてくれます。
すごいなこれ。初めから障害に強いシステムを構築できそう。SLOとかの指標調査にも使える。
Titusはサービスとバッチのいずれの処理にも対応します。サービス処理では、異常終了したインスタンスに対してフェイルオーバー処理が行われ、また負荷に応じてオートスケールが働きます。バッチ処理ではポリシーに応じて処理の失敗に対してリスタートが行われ、処理完了まで管理されます。
1週間で300万(2018年実績)もコンテナ起動してたら、どうにか自動化したくなりますよねぇ。
例えば外部サービスに障害があり呼び出しがエラーになる場合や、処理に時間がかかった場合にフォールバック値を返すことで呼び出し元の処理を継続できたり、外部サービスの呼び出しでエラーが多発する場合は一時的に呼び出しをショートカットして呼び出し先の回復を待ったりといった制御を行うことができます。
一時縮退させてサービスを継続させる感じですかね。となると、レジリエンスの向上に使っているんでしょうか。
何れもNetflixのソフトウェアで、オープンソースのようです。
Tech Stack
これ本物かな、と思うほど詳らかに技術スタックが公開されていたのでついでに。
この方、ByteByteGoの共同創業者だそうで。
元記事(X投稿)
https://x.com/alexxubyte/status/1824472446654878007
BackendでJava(spring boot)を利用しているのが興味深いですね。
皆さんご存知の通り実績のある言語ですが、固いサービス(金融とか)での利用が多いイメージで、Netflixで利用しているのは意外、という所感でした。
動画配信サービスではありませんがZOZOもJava採用してるし、Javaは根強いですね。
とはいえ、NETFLIX ZUULとか、NETFLIX EUREKAとか、より良い形での最適化を行なっている姿勢が見受けられます。
これに加えて、安定稼働にはキャパシティ管理だったりセキュリティ対策だったりが肝になってきますが、どこかに情報がないかなぁ。
最後に
Netflixだけではなく、気になるシステムがあれば眺めてみて、気になるところがあれば色々調べてみることで後々のキャリアに活かせると思いますので、皆さんもお時間があれば眺めてみるのも一興です。
余談
Netflixがレンタルビデオ屋から世界有数の動画配信プラットフォームにDX化したストーリーはDX経営図鑑に載ってたりしますので、気になる方はご覧になってみてくださいまし。
お知らせ
DONUTSでは、新卒中途を問わず積極的に採用活動を行っています。
我々ジョブカン事業部も、一緒に働くエンジニアを募集しています。気になる方はお気軽に応募してみてください。