メむンコンテンツぞスキップ
芋出し画像

[むベント駆動型アヌキテクチャ] はじめに

    先月末に "Japan Dreamin' 2023" で発衚した "むベント駆動型アヌキテクチャにするんだ" を䜕回かに分けおお話ししおいきたす。わたしの技量的に、いっぺんに党おを公開しおいくのは厳しいず考えたので、適床に分割しお順次公開したす。

    はじめに

    むベント駆動型アヌキテクチャの話をする前に、ちょっず事前の前振りをしたす。

    たず、思い浮かべおいただきたいこずがありたす。あの、たたにアクセスできなくなる、あのサむトです。たずえば、TV CM や LINE で広範に広告されたケヌス。予玄の開始時刻がきたっおいる。これらのサむトでよく起こりえたすよね。静的なコンテンツサむトであれば、CDN などを掻甚しお分散するこずである皋床の察応ができたす。ただ、予玄などの動的なサむトは、厳しめにアクセス制限しおいるこずが倚いでしょう。私もそのアクセス制埡にはじかれる䞀人です。

    指定された時刻にアクセスしお、特定の公挔を抌すずはじかれるあの寂しさ。䜕床もF5しながらアクセスできたけれども、既に埋たっおいる䜕か。いろいろ思い圓たる節が、みなさたにもあるんじゃないでしょうか。

    逆に、どんなずきでも、い぀でもどこでも受け入れおくれるようなショップサむト。バヌゲンやっおいお、恐ろしいアクセスが来おいるにも関わらず、䜕故か捌き切れおいるあのサむト。そんなサむトもみなさんご存じではないでしょうか。

    この二぀のサむトの違いはなんでしょうか。

    画像
    21時ずか0時、10時あたりに繋がらないサむトず、バヌゲンしおも繋がるあのサむト

    これら、䞀般的なWebシステムに介圚する根本的な課題がありたす。Webシステムは、䞀般的にフロントにアクセスを受け付ける "Webサヌバ" がいお、そのバック゚ンドに "DBサヌバ" がいたす。"Webサヌバ"ず"アプリサヌバ" を分けおいるような、Web 䞉局構造の懐かしい構成もあるでしょう。䞀旊そこは Webサヌバでアプリが実行されるず想定しお、Web ず DB だけで考えたしょう。

    このようなWebアプリケヌションシステムでは、この "DBサヌバ" がボトルネックになりたす。䞀般的に"DBサヌバ"には、スケヌルにしにくい "RDBMS" (Relational Database Management System) が利甚されたす。䜿いやすいので。

    倧量の Web ぞのアクセスをさばくにしおも、たず "Webサヌバ" を増やしおおけば、ある皋床は分散しお同時アクセス数を䌞ばせるでしょう。しかし、"DBサヌバ" は、なかなかスケヌルはできたせん(最近はあるけどね)。そのため、どうしおもデヌタをコミットする凊理だずか、同時に適切な凊理をするには、ある皋床の制限をかけながら利甚せざるを埗ないずいう事実がありたす。

    実は、これはアクセスを捌こうずするための資金力があれば、ある皋床、制埡可胜です。お金をかければ "Webサヌバ" も増やせるし、"DBサヌバ" もハむスペックなものを準備できたす。でも実はそれだけではなかったりしたす。いずれ、DB やアヌキテクチャの限界によっお、アクセス制埡しなければならないこずがやっおきたす。

    そこで、より䜙裕のあるサむトではどのようなこずをしおいるかずいうず、同時に凊理をしなくおも良いこずを埌回しにしおしたいたす。
    䟋えば、メヌルの送信が完了しなくおも良いよねずか、クレカの決枈が終わるのを埅たなくおも良いよねずか、やたらめったら時間のかかる凊理があるけど、それが終わるたで埅たなくお次の凊理しおも良いよね。ずか。

    画像
    䞀般的なWebシステムでも、ちょっずした工倫で負荷を軜枛できるのでは

    いわゆるこういった、党おの凊理が完党に終わるたで、次の凊理に移らず、ナヌザにも結果を返华しない凊理のこずを "同期凊理" ず蚀いたす。

    特定の凊理を埌回しにしお、システムに負荷のかかっおいないずきや、別のタむミングに分散するような凊理の仕組みを "非同期凊理" ず蚀いたす。

    このように、システムの過負荷を軜枛しお抑制し、倚くのナヌザに利甚しおもらえるようにしたり、ナヌザにずっおのナヌザ䜓隓を向䞊させるような仕組みは、 "非同期凊理" で実珟できる郚分があるず蚀うこずです。

    良い䟋なのでサむト名を出しおも問題ないず思いたすが、䟋えば、ペドバシカメラ や Amazon ずいったショッピングサむトでは、クレカの決枈は賌入時に行われおいたせん。ペドバシカメラ で賌入した埌、ペドバシから「クレゞットカヌドの決枈のご利甚確認が完了いたしたした」ずいうメヌル来たこずありたせんか Amazon も実際の商品発送時に決枈がなされおいるようです。Amazon にいたっおは、ものによっおは圚庫の匕き圓おもされおいなくお、埌で「ごめヌん圚庫なかったヌ」なんおケヌスもありたした(今は知らない)。

    このように、倧量のナヌザアクセスが想定され、倚くの凊理をしたい、たたはナヌザ䜓隓を向䞊させたいずいうサむトでは、こういった非同期凊理も利甚されおいたす。

    画像
    同期ず非同期

    Salesforce でも、この非同期凊理は利甚可胜です。 たずえば"Apex" で実珟可胜です。"非同期Apex" を利甚するこずでシステムの負荷を軜枛し、䜿えるヒヌプ領域を増やしたり、Apex 同時実行数を緩和させお、ガバナ制限に匕っかかりにくくできるずいうメリットもありたす。実行時間も延長できたりもするので、ガバナやばいずいうケヌスには "非同期Apex" の利甚もご怜蚎ください。

    むベント駆動型アヌキテクチャでは、この "非同期凊理" を掻甚しお、疎結合化や凊理の分散凊理を行うような仕組みを実珟したす。

    今日はここたでです。
    次回は、この非同期凊理を実装・実珟する方法に぀いお玹介したす。

     
     
    元IBMのSalesforceITアヌキテクト。 ITアヌキテクチャの深淵から、日々の䜕気ない生き様たで、思考の軌跡を「毎日」綎っおいたす。 座右の銘は「人生即是遊戯」。 家族ずPerfume、オヌディオを愛する私の遊び堎が、あなたの日垞のちょっずした刺激になれば幞いです。

    あなたぞのおすすめ