XAP(でたらめアーキテクチャバスト)

昨日、私が初めて地元の微妙さを知らずにHabrに関する記事を書いた。



修正済み! 今では普通の言葉で、ユーモアを持って!



ブラックフライデーは、 コールのアメリカのインターネットデパートにとって真のブラックであることが判明しました。 クリスマスセールの日に、すべてのサーバーは銅の盆地で覆われていました。 その日に稼いだ年収の通常20%は、とんでもない些細なことであることが判明しました。これはすべて、ボリバルがそのような負荷に耐えられなかったためです。



Tomcat + WebLogic + DBの従来のアーキテクチャは完全に台無しにされています! システム管理者は無駄に床を駆け回り、大手プログラマーはパニックで大騒ぎし、建築家は髪の残りを引き裂きました...ボトルの首はすべての潜在的な顧客がそれを絞ることができず、短期間で拡張するには十分ではありませんでした。 ボトルは性交を破った。 そして長い間、彼女の破片が負った傷は出血していました...



3層アーキテクチャの問題


-息子、それは動作します-触れないでください!

-お父さん、それは動作しません、それはブレーキをかけます!!!



皆さんは古いことをよく知っていますが、常に親切な3レベルのアーキテクチャーではありません。

3レベルのアーキテクチャ
最初の層にはデータが含まれます。大部分はリレーショナルデータベースに格納されます。大容量の場合は、明らかに、選択はOracleに委ねられます。 ここで、データが保存、アップグレード、取得され、次の論理層に送信されます。 2番目のレイヤーでは、ビジネスロジック、あらゆる種類のEJB、Spring、Hibernateを見つけます。 このすべてのコードはどこにありますか? もちろん、アプリケーションサーバー(JBoss、WebLogic、WebSphere)には十分なオプションがあります。 次に、3番目の層はWebクライアントです。 ここでは、Tomkatを削除したり、ロードバランサーを固定したりできます。



何を忘れましたか? ああ、メッセージング-アプリケーションコンポーネントとの信頼できる非同期相互作用を提供します。 イベント駆動型アーキテクチャが私たちのすべてです! そしてもちろん、信頼性のために各レイヤーで使用されるクラスター。





画像



このソリューションを分析することにより、いくつかの明らかな問題を簡単に特定できます。



管理の難しさ


すべてのレベルに異なるクラスタリングモデルがあります。 そのようなシステムを管理するには、それらすべての知識と経験が必要です。 これには以下が含まれます。





静的リソースバインディング


ハードドライブやサーバー名など。 そのようなアプリケーションは本質的に非常に動的であるため、クラウドにそのようなアプリケーションをインストールするときに問題が発生します。



性能


ほとんどすべての要求は、システムの3つのレベルすべてを通過し、レベル間およびレベル内の多くのネットワークジャンプを含む可能性があり、これは平均応答時間に影響します。 さらに、遅かれ早かれ、データをディスクにフラッシュする必要があります。 ネットワークおよびディスクI / Oはスケーラビリティを大幅に制限し、再びシステムのブレーキングにつながります。



その結果、3層アーキテクチャは予測どおりにスケーリングできません。 システムの負荷を増加させると、データを処理するためにより多くのリソースが必要になりますが、愚かな鉄を追加してもこの問題は解決しません。 さらに、多くの場合、レベルの1つ(データベースサーバーなど)にリソースを追加すると、役立つだけでなく、クラスターノード間の同期のオーバーヘッドにより、システム全体のレイテンシが増加し、スループットが低下します。



キャッシュとデータグリッドが問題を解決しない理由


遅延とスケーラビリティの問題を解決するために、通常、リレーショナルデータベースの前にインメモリデータグリッドを配置します。 間違いなく、これは正しい方向へのステップであり、システムを部分的にオフロードし、主にキャッシングに適しています。 ほとんどのデータグリッドでは、一意のIDのみを使用してデータを取得する能力が制限されていることに注意してください。 このソリューションは個々のケースに適用できますが、次の理由から依然として理想的ではありません。





実世界の例


オンライン販売のためのコールの実際の多層システムアーキテクチャを検討してください。

画像



このシステムのどの部分もボトルネックの役割を果たすことができることはすぐに明らかです。 明らかに、「狭い」場所以外の場所にリソースを追加しても、システムのブレーキを取り除くのに役立ちません。



KohlのWebLogicの場合、ApacheとOracleデータベースは50台の物理サーバーを使用して素晴らしい仕事をしました。 30,000人の同時接続ユーザーが、すべてのリクエストに対する回答を定期的に受け取りました。 たとえば、企業が毎秒特定の一定数のトランザクションを処理する必要があり、システムの要件に急激な変更がなければ、今後も機能し続けます。



ただし、2009年の同じ「ブラックフライデー」(ブラックフライデー、何百万人ものアメリカ人が店に急行し、小売業者が1日で年間収益の20パーセント、時には30パーセントを稼ぐ)は、システムが500,000の負荷に対応することを要求しました同時にユーザー。 3レベルのアーキテクチャでは、このような打撃に対応できませんでした...



結果は数千万ドルの損失です。 したがって、質問:



古いヒーローを変える時ですか?






そのため、最新のプラットフォームの主要な要件を策定します。





10年前に新しいXAPプラットフォーム(eXtreme Application Platform)の開発を開始したGigaspacesのエンジニアは、これらの要件をほぼガイドしました。



それは彼らがすべて来た方法です


画像





画像

そして、ここにビデオがあります



コールは灰から立ち上がった


2009年の危機の後、コールは古いアーキテクチャ全体をXAPに置き換えました。 その結果、Googleによると、今日のサイトはページ配信速度の面で世界で最初のサイトの1つです。





今日、コールだけがXAPプラットフォームを使用しているわけではありません。 現在の顧客リストには、スイスの大手銀行( UBSなど )、ニューヨーク証券取引所、 アバイア 、その他数百社が含まれています。



エピローグ


誰かが言うだろう:「そして、私はマルチレベルのアーキテクチャを使用し、非常に満足しています!」そして非常によく。 しかし、データの量が指数関数的に増加している世界に住んでいるので、今日、インメモリコンピューティングプラットフォームが必要ない場合でも、少なくともそれらの存在とそれらがもたらす利点について知る必要があることを理解する必要があります。 近い将来、アプリケーションで処理されるデータ量の要件が増加する可能性があります。もちろん、インメモリコンピューティングプラットフォームが役立つ可能性があります。もちろん、使用が単純に必要な膨大なデータでリアルタイムに動作するアプリケーションは言うまでもありません。



追記






31土曜日にJUGにてください。XAPについて、その作品のよりカラフルでライブのショーでお話しします。



そして、ここにビデオがあります:




All Articles