AppSignalのシタデルアーキテクチャ
DHHは、「シタデル」という用語を作り出しました。これは、AppSignalでテクノロジーにアプローチする方法を参照するための優れた方法を最終的に提供します。 「ねえ、これは私たちです!私たちのものには今名前があります」と言いました。
マジェスティックモノリスに加えて、誰かがシタデルのパターンを書く必要があります:単一のマジェスティックMonolithはアプリの大部分をキャプチャし、高度に専門化された多様なニーズに対応するいくつかの補助的な前哨アプリを備えています。
— DHH(@dhh)2020年4月7日
AppSignalがCitadelパターンをどのように使用するかを説明するために、システムがどのように機能するかについて少し説明します。 AppSignalは、ユーザー向けのアプリケーションと、監視エージェントがデータを送信するAPIを備えた監視製品です。次に、このデータは処理され、グラフと洞察に変換されます。
モノリス
お客様が操作するアプリケーションは、フロントエンドの一部がReactで記述されたモノリシックRailsアプリです。バックエンドは完全にRubyで記述されており、いくつかのデータベースと通信します(スケーリングの理由から、さまざまな顧客からのデータを別々のクラスターに分割します)。このRailsアプリは、外部サービスへのアラートの送信など、他の多くのタスクも処理します。
このRailsアプリを起動して、監視エージェントからの受信データも処理したとき、データの取り込みがボトルネックになると予測しました。そのため、データを取り込んだサブドメインで実行されているSinatraアプリを使用し、Railsアプリによって処理されるSidekiqジョブを作成しました。
成長痛
このアーキテクチャは何年もの間うまく機能しました。私たちのビジネスが成長するにつれて、エージェントからの受信データを処理する特定のタスクには特別な処理が必要になることが明らかになりました。何十億ものリクエストを監視していると、厳しい制限にぶつかります。主な制限要因は、Rubyが遅いということではありませんでしたが(😉ではないことは誰もが知っています)、私たちが物事を設計した方法によって、データベースがロックされすぎました。
前哨基地
私たちはいくつかの可能性を検討し、Kafkaが私たちの状況に最も適していると判断しました。 Rustの使用経験があり、その速度と信頼性はこのシステムに非常に適していると思いました。キューとストレージシステムの組み合わせとしてKafkaを使用して、Rustのデータ取り込みおよび処理システムを書き直しました。
Railsアプリの受信データ処理部分のみをこの前哨サービスに移動しました。残りのシステムは、モノリシックアプリの形でうまく機能します。私たちはそれを深く理解しており、物事をシンプルに保つのが好きです。モノリスは依然としてほとんどのロジックを処理し、Kafkaと頻繁に相互作用します。モノリスを維持したいという思いから、メインアプリが前哨基地と簡単に通信できるように、カフカの宝石を書くことになりました。
AppSignalでKafkaがどのように機能するかについて詳しく知りたい場合は、私がこれについて行ったRailsconfの講演をチェックしてください。
城塞での生活
これは、私たちが城塞で非常に満足している現在の状況に私たちをもたらします。 DHHが言ったように:
単一のMajesticMonolithは、高度に専門化された多様なニーズに対応するいくつかの補助的な前哨基地アプリを使用して、アプリの大部分をキャプチャします。
私たちの場合、高度に専門化されたニーズに対応する単一の前哨基地サービスがあります。今年RailsConfがあったとしたら、名前を付けたことへの感謝の気持ちとして、DHHに追加のストロープワッフルを付けたでしょう。 🍪
-
環境変数へのRubyistsガイド
開発中および本番環境でWebアプリを効果的に管理できるようにするには、環境変数を理解する必要があります。 これは必ずしもそうではありませんでした。ほんの数年前、環境変数を使用してRailsアプリを構成している人はほとんどいませんでした。しかし、その後、Herokuが発生しました。 Herokuは、開発者に12要素のアプリアプローチを紹介しました。 12要素のアプリマニフェストでは、導入が簡単なアプリを作成するための多くのベストプラクティスを示しています。環境変数に関するセクションは特に影響力があります。 12ファクターのアプリは、構成を環境変数に格納します(多くの場合、env varsま
-
シークレット モード:神話
“Even何も悪いことをしていなければ、監視され、記録されていることになります」 – エドワード・スノーデン 「ううん。最新のテイラー・スウィフトのビデオはチェックしましたか?」ある晴れた朝、同僚に尋ねました。私は嘲笑して反応しました。私はクラシック・ロックのファンです。」しかし、それは嘘でした。 「シェイク・イット・オフ」のおかげで、月曜日の朝を乗り切ることができました。 私の会社のネットワークエンジニアが私のテイラー・スウィフト中毒についてランダムにコメントしたのはその週の後半でした。私はびっくりしました!彼はどうやって知ったのですか?ポップ ミュージックの中毒には、常に Chrome