#281 ハイパフォーマンス回転寿司「ひま寿司」

2024/9/8 ·

  • この番組は駆け出しエンジニアの順平が先輩エンジニアの海地篠里とともにレベルアップしていくラジオでございますなんかめちゃくちゃギュッてなりましたねすっきりしましたすっきりしましたね今日はですねちょっと初心に変えろうかなと思っておりましておー



  • というと?最近テーマが凝ってきすぎだなって少し思ってるんですよ確かに同じの出せないから変化球をみたいなところであえてやっぱり今回は初級の心に戻って駆け出しエンジニアが中級エンジニアにレベルアップしていくためのテーマを持ってきましたありがとうございますなんかいいですねそういう昔の気持ちになれるうん



  • いやまあまだまだ駆け出しですからねはいそうですよちなみに今日あれですよねカイチさん不在なんですよねそうなんです今日カイチ君不在なので珍しく2人ではい盛り上げていきましょういきましょうはいで今回はですねはいちょっとサーバー寄りの話なんですけどサーバー寄りはいはいはいはい



  • ウェブサーバーってたくさんのお客さんを捌けた方がいいじゃないですかそうですねいっぱいアクセス来たら来ちゃいますからねなので今回はそういうことができるサーバーを作るためのステップバイステップレッスンをしていこうかなと思っております考えたことないかもしれないまだ



  • 嘘?いやあるのかないやない気がするちょっとどっちかっていうとインフラ寄りの話ではあるかもしれないけど構成的にはウェブサーバーウェブエンジニアが考えることも結構ある



  • AWSとかそういうクラウド側の対等してきて誰でもインフラを触れるようになってきたのでなるほどちょっと考えたことあるかもしれないなオートスケールとかそういう話とかですかまさしくそれですねなるほどなので今日はですねあるものに例えていきたいなと思うんですけどきた僕はですねビュッフェに



  • なることも一度は検討したお寿司屋さんでいこうかなと思っておりますいいですね卒業というかたまに間違うのもいいですからねそうなんですなので今回はですねハイパフォーマンスお寿司屋さんっていうストーリーのことをやっていこうかなとローパフォーだと良くないですねやっぱそうなんですよってことで皆さん



  • ひま寿司へようこそひま寿司ひまプロの人がやってる寿司屋さんですねそうですねはいひまそうはい浜寿司さんとよく間違えられるんで気をつけてくださいはいわかりました確かに



  • であの暇寿司の企業理念はですねはいたくさんのお客様に寿司を食べていただいてたくさん儲けて資本主義の勝利者になることなのでそうだったんだとにかくたくさんのお客さんを裁くっていうことを重視してますはいはいはいでえーなので



  • 本当にこの寿司屋さん自体がサーバーだと思ってちょっと聞いていただけたらなと思ってますなるほど確かに単純にお店にいっぱいお客さんが来るアクセスがいっぱいあるっていうことですねそうですそうですはいはいはい了解ですよりたくさんの寿司を提供するというストーリーになっております了解ですこの方式利用したら多分本当に寿司屋さんも大量に捌けるんじゃないかなって思いましたでももちろん無駄はありますよ完全に同じではないので



  • ということで第一章第一章お寿司屋ひま寿司開業というところでですねはい開業からはいはい今回はまずカウンターに大将が一人だけいるこじんまりとしたお寿司屋さんでございますはいはいはいで来たお客さんが注文すると大将がお寿司を握って出してくれるとうんマグロがいいですマグロいちゅん



  • ということでここは特に何の波乱もないです大将が握って寿司が最高だぜってなるあまりに大将の寿司が良かったからお客さんが増えてきました大将が一人で回らなくなってきましたさあじゅんぺいくんならどうしますか新しい従業員を雇ういいですねはい



  • 惜しい第2章大将結婚するってことですね大将結婚するそっち今回から大将とおかみさんの二人体制で行くことになりました夫婦経営ですねお客さんからの注文とか配膳はおかみさんが全部受けますよとSCを作るのは大将ですよとなるほどこうやって分業することによってですねあのー



  • これまで一人で全部やってたのが半々の負担になるので確かにもっとたくさんのお客さんを捌けるようになりましたとはいはいはい素敵な接客と最高のお寿司で暇寿司のお客さんが増える一方なんですよいいですね商売繁盛そう商売繁盛次第にその二人体制でも回らなくなってきましたとはいさあこの場合どうしたらいいですか



  • この場合はさらにありがたいことに子供を授かって三人体制になるなるほどねその一つの寿司を強くするという方法ですねいいですねちなみにその方法はプログラム業界では



  • スケールアップと呼ばれてましてこういうたくさんのお客さんを捌くときってサーバーの場合だとスケールアップとスケールアウトという戦略があるんですねその中でも今回の場合は1個の暇寿司っていう店舗をよりたくさんのお客さんを捌けるように強くするっていうイメージなのでその場合はスケールアップっていうようなイメージですかね



  • 寿司屋に例えるとスケールアップのパターンいくつかあってその1個の店舗の中の従業員増やして捌ける量を増やすっていうのもそうですしあとは店舗を広くするっていうのもスケールアップになるし大将とかおかみさんの作業速度が単純にアップするっていうのも



  • そうですしお客さんがみんな早食いになるっていうのもある種スケールアップかなって感じですね一方スケールアウトという戦略もあって暇ずし2号店3号店っていう風にお店を増やしていくパターンですねなるほどスケールアップの方は実は現実的ではないですあんまり



  • ウェブの世界だとサーバーの機械の上限というか限界があるのでどんなに強いマシンを使ってもなので基本的にはスケールアウトっていう方のサーバーの台数を増やすってことで結構対応していくことが多いですねなるほどなので今回はスケールアップはもうやりきりましたと



  • なのでちょっとスケールアウトの方法でやっていこうかなということで第3章お寿司界に衝撃ひま寿司脅威の超ドミナント戦略&セントラルキッチン回転寿司ということでですね



  • 大幅に業態を変えていこうかなと戦略練ってきてるんですね今までカウンター寿司だったのが今度から回転寿司方式に変わりましただいぶ繁盛して機械も導入できたんでひま寿司は地元に愛される企業としてっていう誇りを持ってるので店舗増やすってなった時に普通の寿司屋さんみたいにいろんなところに出すんじゃなくて



  • あのドミナント戦略って近くに店舗を出すとはいいうコンビニとかと同じ伝えですね なんかファミマとかさあれあそこにもファミマあるじゃんみたいなのないさあめっちゃありますよ 道路渡ったらファミマじゃんみたいななんかああいう近くにあのめっちゃ置いたりとかあと有名なのだと静岡の爽やかですね あーはいはいはい



  • あれとかも静岡県内だけで場所を絞って出展し続けてるっていうそういう作戦をドミナント戦略って言うんですけどドミナントって言うんですねはいはいはいひまずしはねこれを撮ってますなるほど地域密着型というかそう地域密着型でしかもそこのエリアの人たちを喜ばせることだけを考えてるんでとにかく待たせたくないときといいですねいいですね



  • 回転として結構待つじゃないですか行ったら混んでる時ありますよねなのでお店隣り合わせに設置してます隣り合わせ確かに店舗拡張するよりは新しく作った方が早いんですよねきっとやりやすい



  • 景観的にはちょっとなんかオープンハウスのお家みたいになってますねオープンハウスって多分似たような家が何軒も並ぶと思うんですけどああいうスタイルでお店作ってますヒマプロの旗が立ってて狐とカエルとウサギが写ってるんですよねそうそうそう狐店とカエル店とウサギ店で出店してますとはい



  • お店の中入ると中は回転寿司なんですけど実はここの寿司を作るところは店舗にはないです提供するだけってことですかここは本当に寿司が流れてきて建物の外からお寿司が流れてきます衛生的にあれ大丈夫ですそこはうまいことパイプで区切られてるんでなんとそのお店の裏には寿司握り専門の店があります



  • 寿司握り場実際のセントラルキッチンとはちょっとイメージ違うと思うんですけどはい



  • キッチンを1個にしてそこで寿司を作って各店舗に提供しているというスタンスですねなるほど1号店と2号店が隣り合わせにあってそこの間なのか後ろ側なのかに寿司握り所があって1号店にも2号店にもその握り所がお寿司を提供しているとそうです効率的そうですねただですねやっぱり空いてる店舗行きたいじゃないですかはい



  • でも外から見た時どの店舗が空いてるかってあんまりわかんないじゃないですか確かになのでより効率的に捌けるようにですね外には案内マシーンみたいなのがあってそこで受付をすると空いてる店舗に割り振られるというそういう仕組みになってますなるほどちなみにその案内所的なのがロードバランサー的なやつですかお



  • その通りでございますやった今ドヤ顔してますよ僕今ドヤ顔してますこれがロードバランサーってやつですねちなみにその寿司握り所的なやつは今回特別なやつですか何かに当たったりします当たりますこの寿司握り所はデータベースですねそうか一個ずつマッピングしていった方がいいか



  • そうですねとりあえず寿司が完成してしまうそっちの方が見やすいのかな分かんないですけどどうなんだろうそうだなこれ結構長いんでちょっとここまでのおさらいしますかはいはいお願いしますまず街のお寿司屋さん時代はこれウェブサーバー一大時代ですねもう一個のマシンがあってその中にウェブサーバーもデータベースも全部入ってるみたいななるほど大将がお上と結婚して二人体制になった時これはウェブサーバーとDBサーバーを分けた状態の時ですね



  • そういうことだったんですねなるほど今回のこのドミナント戦略&セントラルキッチン戦略で行くことによってウェブサーバーが複数台作られて案内所っていうロードバランサーができてそれを自動で割り振ってくれるようになったとなるほど一方寿司握り所がデータベースそのままなっていてそこから取ってきた寿司を提供するというスタンスになってますすごい分かりやすい



  • でひま寿司の寿司は最高だぜと最高ですねただ一個だけ問題があってですねちょっとまだ提供に時間がかかってるんですよそうなんですねはい第5章



  • 店舗冷蔵庫の導入をしますはいはいはいひま寿司すごい美味しくて繁盛してるんですけどやっぱりお店が店舗と寿司握り所で分かれてることによってですね店舗に運ばれてくるまでやっぱ時間がかかるんですねかかりますね確かにトレーニング流れてくるので店舗である工夫をすることにしました店舗にも冷蔵庫を置きましょうといいですねいいですね



  • そこでよく注文されるお寿司をストックしておきましょうとなるほどということでマグロとイカをストックしておくことよく注文されるんですねマグロとイカ確かにサーモンも欲しいかもしれないサーモンも欲しいねマグロとサーモンとイカをですね冷蔵庫に置いておいてその注文が入った時だけ



  • レーンの途中から流せるようにしました店舗のメンバーが直接運んでもいいんだけどそうすることによって寿司作る時間とか寿司の握りどころから運ばれてくる時間とかを全部ショートカットしてお客さんに素早く提供できるようになりましたよとなるほど



  • これがウェブの世界で言うとキャッシュと呼ばれてるやつですねなるほど確かに早いキャッシュってもちろん早くなるんですけどどうしてもメモリの容量的にはデータベースほど大容量ではないので本当に必要なものだけを入れておくっていうようなスタンスになってます



  • 本来だったらキャッシュになかったらデータベースに問い合わせるみたいな感じなので店舗の冷蔵庫になかったら握ってもらうみたいなそんなスタンスになりますねあとは結構キャッシュって期限とかが大事で



  • あんまり素子屋さんで営業中にメニュー変わることないんであれですけど例えば3時から新メニュー3時で新メニュー終わっちゃいますよって時ですねでもその新メニューがキャッシュのところにあったら提供できてしまうじゃないですかだからちゃんとその冷蔵庫にもこの商品を提供して期限みたいなのつけておくんですねなるほど賞味期限消費期限的な



  • なので古いキャッシュがあったときはそれを破棄してちゃんと握ってもらうっていうようなこととかも実際のキャッシュはやってたりしますねなるほど



  • その辺は結構キャッシュ戦略とかで調べてみるとどんなキャッシュ戦略があるのかがよく分かるはずなるほどということで提供スピードが速くなってますます繁盛の暇寿しいやーいいですね第5章これですね結構いい感じじゃないですか僕は結構満足しちゃうかもしれない



  • いやいやいやまだ早いですよまだですか なんと飲みに使うお客さんも増えてきました飲みなお酒を飲みに来る人たちがそうなんですよやっぱ寿司とビールはね私たまらんすからねあんまなんですね ってことでビールはやっぱり頼んだらすぐに来てほしいですとってことで第6章ビールはすぐに飲みてー



  • 直球ですねいいですね実はひま寿司はですねビールサーバーもキッチンにあってビールサーバービールサーバーってサーバーってITのサーバーの意味じゃないですかねガチのキリンとかねそこでキッチンでビールを作ってそれで運んでるんですねでもビールって頼んだらすぐ来てほしいじゃないですかはい



  • ということでお店側にビールサーバーを置くことにしましたホールのスタッフがそこでビールついて持ってくるとこれウェブサーバー上でどういうものかというとこれがCDNと呼ばれてるやつですねCDNコンテンツデリバリーネットワークですねそうなんですねたまに聞くけどいつもなんだろうなと思ってましたこれもキャッシュの一種かなでも



  • キャッシュみたいなもんへーなんですけどちょっとキャッシュの置いてる場所が違うんですよね今回だったら店舗の中に入っちゃってるんでそこだけちょっと実際のウェブサーバーと違ってて分かりにくいんですけどウェブページ表示するじゃないですか最初HTMLが読み込まれますよねブラウザにそのHTMLの中に例えば画像とかCSSとかJSってリンクで貼られてると思うんですよはいはいはいURLでうん



  • 実はブラウザってそこのURL読み取って全部リクエストし直してるんですよそうですねはいその時に画像とかファイルとして画像に限らないかウェブサーバーってやっぱ近い方が早いんですねうんうんお寿司も近い方が早く来るじゃないですかはいはいはいってなった時にCDNっていうのはですね世の中にあるエッジサーバーと呼ばれてるちっちゃいサーバーみたいなのがいっぱいあるんですけどうん



  • そこに画像とかあんまり変更かかんないデータとかをキャッシュしておくんですねそのキャッシュがあるうちはそこからデータを取ってくるみたいなことをすることによってまず負荷が軽くなるエッジサーバーっていっぱいあって地理的に近い場所が選択されるんで非常に負荷が軽くなってかつ近いから早いっていうそれが



  • CDNAコンテンツデリバリーネットワークうんちょっとビールこれ店舗の中にあるように見えるんですけど実際は違いますとうんうんエッジサーバーエッジサーバーのところに今の話で言うとビールサーバーが本来はあるうんそう



  • ちょっと変えるとより近いイメージにするとお寿司屋さんの中にビールの売り子がうろうろしてるみたいな感じかもしれないね



  • だから一番近いビールの売り子さんにビール頼むみたいななるほど球場みたいになってますね売り子さんなるほどイメージ近いのはそっちの方イメージそっちの方が近いと思うはいはい売り子さんですねネットワークなんですねそう売り子さんたちは一つの組織というか株式会社



  • 売り子ビールガールズの所属なんでなるほどちなみに言うともっと近づけるとその売り子さんたちは本来は店舗の外にいるんですよね本来は店舗の外にいるさすがに一旦今回の話で言うと店舗内に置いてますけど置いてるけど本当は外にいるでも法律的には外にいるようなもんかもしれない所属的には契約状況的には外にいるようなもんなるほど確かに



  • 確かに確かにそういうことですね別会社ですもんねはいあー理解ですOKですということで冷たいビールがねお寿司に合うということでますます繁盛のひま寿司でございますいいですねあと3章ありますよあと3章ありますはいはいはいということで第7章



  • 全ての店舗でいつものやつでの注文をということではいはい味を変わらずにとかっていう話なんだなというよりは過去の接客情報ですねあーはいすごい会員情報の台帳実はこれまで店舗ごとに管理してたんですよはいはいはい会員制だったりするんですねそう会員制お寿司だったんだすごい会員制お寿司いいですねはいはいはい



  • 今までそういうふうに会員の情報をですね会員制と言ってもあれですけどねポイントカードぐらいの気持ちで思ったり美容室ぐらいの感じじゃない毎回同じ人に来てもらうじゃないですかだいたい美容室ってそれと同じ感じ会員情報は実は店舗ごとに管理をしてましたなので次にお店に来たときはい



  • 別の店舗に割り振られないように実はロードバランサーが気合い入れてたんですよなるほどこの会員番号この前Aにうさぎの方に割り振ったなって言ったらうさぎの方に割り振るみたいな案内状マシーン君が割り振ってくれてたんですねそうなんですこれをねスティッキ客配置って言うんですけどスティッキ客配置はい



  • スティッキー案内にしようかなスティッキー案内スティッキー案内って言うんですけどでもこれってすごい



  • あんまり良くないというかなんか大変そうですねロードバランサーがロードバランサーも大変ですしお客さん偏る可能性とかもあるじゃないですか確かになので会員情報を店舗ごとに持たせたくないんですよということで今回からですねステートレス店舗をスタイルにすることにしました情報を店舗で持たないはいはいはい



  • お客さんを管理するためのシステムを導入しましたシステムの話している中でシステムが出てきたら新しい施設を作りましたお客さん情報コールセンターいいですねお客さんが来ますと会員カードを提示しますとするとその会員カードの番号を元にコールセンターを



  • 過去の情報を教えてくれるみたいななるほどこのコールセンターがあることによってどの店舗に行っても過去の情報が引き出せるようになりましたよとなるほどこれがいわゆるステートレスっていう状態ですね状態を持ってないこれをやることによって店舗はですね拡大を無限にやりやすくなったわけですね



  • なるほどな案内所君のところにお客さんが来てその案内所君がコールセンターに問い合わせするんですかねいや案内所は適当に割り振るどの店舗にも情報を持ってないからどこに割り振ってもよくなった店舗はお客さんが来たら問い合わせると店舗が問い合わせるのかなるほどじゃああっちの



  • キツネさん店舗では15ポイント持ってました今日はウサギさん店に来ましたなんでウサギさん店でも15ポイント食べ終わったらそこの15ポイントにポイントを加算していくみたいな



  • 感じの処理ですかねしかもどこの店舗でも過去の注文履歴持ってるんでいつものやつって言ったら最初に唐揚げとビールが来るみたいな寿司屋なのになるほど唐揚げ行っちゃうんだってことができるようになるといいですねなるほどじゃあちょっとここもウェブの話に置き換えていきますよまず最初ロードバランサーが過去に行った店舗に割り振るって言ってたじゃないですか



  • これはウェブサーバーで言うとセッション情報とかをサーバーで持ってる時の状態なんですよ例えばログインするじゃないですかログインした状態でセッションで管理するとするじゃないですかでもそれをやってしまうと次割り振る時に別のサーバー別のサーバーに割り振られたらログインしてるよって情報がなくなっちゃうんですよ確かにはい



  • なんでそうされないようにスティッキーセッションっていうのをよく使うんですねスティッキーセッションロードバランサーでそれを使うと同じテンポに割り振り続けるってことができるんですよなるほどさっきのお寿司屋さんでいうスティッキー案内ですねただそれだとやっぱ状態を持ってて大変なのでセッションなくして今回は案内所案内所じゃねえなコールセンター作りましたとそのコールセンターが



  • 要は情報を管理する用のデータベースみたいなイメージですねセッション情報をウェブサーバーじゃなくてそっちのデータベースで管理するようにすると一般的にはそこはノーSQLが使われることが多いですね早いんでリレーションとかもあんまりいらないぐらいシンプルなデータなのでキーバリューになるから基本レディースとかが使われることが多いのかな



  • そうやって別の情報で管理するような別のデータベースで管理できるようにすることによってどのウェブサーバーに割り振られても毎回毎回レディスとかのノーSQLに対して今回来たユーザーの情報みたいな状態か状態を問い合わせることになるんでウェブサーバーがスケールしやすくなるというわけですねなるほどですねOKです理解ですこれでどの店舗に行ってもいつものやつで注文ができるようになりました確かに



  • さあもう結構寿司屋として完成してるんですけど実は裏側で完成してないところがありましたえーどこだろうそうですかそうなんですねこれは言ってないんで分かんないと思いますなんとですね第8章タッチパネル導入ということでタッチパネル導入なるほど



  • 実は今までの注文リストっていうのはですねキッチンの対象の異常すぎる脳内記憶によって賄われてたんですね全部の注文を対象がコントロールしてたとすごい



  • しかし大繁盛の暇寿司はですねもうそんなんじゃ捌けないぐらいお客さんが来るようになってしまいましたとさすがの大将もきついですねさすがの大将もきつい大将はパンク寸前とかもしてたとたまになんかレスポンスが返ってこないなっていう時がありましたこれは良くないぞってことでタッチパネル式の注文パネルを導入しましたいいですねそれが大事ですねこれ注文通ってるのかって不安になる時ありますもんねそうですね



  • そうなんですよしかも対処を返さずにそれを作る職人の飲食店でアルバイトしたキッチンでアルバイトしたことある人しか分かんないと思うんですけど作業場所の近くにちっちゃい四角い箱が置いてあってそこから注文内容のレシートみたいなのが出てくるんですねさばいたやつはそのレシートの対応してるメニューを切り取って



  • 注文提供するときに出したりするんでたまに居酒屋とか行ったら



  • お盆になんかちっちゃいレシートみたいなやつ載ってるなみたいな時ないですかあーあるかもしれないなんかマックとかでも結構レシートその注文レシートみたいながなんか貼り付けてるというかそうそうそうそうあれ系のやつ並べて管理してるイメージありますね居酒屋とかだと金曜土曜の忙しい時になるとあれがねすっごい垂れ長垂れてる垂れてる長くなりすぎて



  • なるほどっていうようなスタンスにしましたとこれを使うことによって注文の履歴っていうのは全部垂れ流されてるレシートに残るレシートみたいなやつに残るので注文評価に残ってるので人間が記憶しなくてもできるときに捌けるようになりましたと確かにこれがアーキテクチャでいうところのメッセージ級ってやつですね



  • なるほどウェブサーバーも実は同じで処理しきれない量が来たときに止まるんじゃなくてメッセージ給っていう仕組みを間に挟んどくんですねそうするとメッセージ給自体は結構軽量なものなので大量にストックできるんですよ



  • そのQに溜まっている情報をもとにできるときに作業をしていくっていうのがメッセージQのイメージですねなるほどそういうことかQって今となっては分かりますけどQって結構なんか分かりづらかった概念かなって僕は思いますね当初は



  • なんすかねあれDBではないですもんねでもなんかそういう情報を貯めておけるじゃないですか結局データの保存はしてるね一時的にではありますけどそうですね当初ちょっと分かりづらい概念だったなと思いますQってQはねロケット鉛筆みたいなもんですよね



  • ロケット鉛筆?後ろから鉛筆ぶっ刺したら先っぽの鉛筆でくるじゃないですかあれが要は旧のイメージなんですけどその鉛筆受け取ったら作業するみたいな確かにそういうパイプっぽいイメージはあるかもしれない今回だったらレシートの長い電表ですよねというものか先に入ってるやつから順番に処理していくと



  • これがあれば後でどっかで止まっちゃうこともないし自分ができる最大限のキャパで動き続けられるというわけですねそして第9章これでラストです最終章お寿司握り所のスケール



  • 握り上のスケールDBのところですね店舗は無限に水平スケールできるようになってたんですけど実は握るところはねスケールまだしてなかったんですよね確かにってことで2つのことをしますまずは握り専門チームとメニュー開発チームに分けますデータベースの中でこれが寿司のマスタースレーブ構成ですねマスタースレーブ構成はい



  • 役割としては握り専門チームはひたすら注文された寿司を握るとメニュー開発チームはそこに新しいメニューを追加したり既存のメニューを変更したりあとはもうこれはいらんだろうっていうメニューを削除したりとかっていうことをやりますなるほど



  • メニュー開発チームがその処理終わったら他の握りチームの方にその情報を伝達して最新の状態にするっていうようなことになってますなるほどDB



  • A Bの中で2つに分けるつまりそれは何握り所がもともとの握り専門チームがもともとの握り所みたいなイメージですねもともとそこでメニュー開発とかもやってたしメニューの更新もやってたんですけど握り所が今度3つになりましたとってなった時にちょっとこれはA B CでいくんですけどAが新メニュー作りましたと



  • ってなった時にBとCには新メニューまだない状態になっちゃうじゃないですか確かにってなるとお客さん的には不公平ですよねAの方のたまたま握りしとったらこのメニュー頼めるけどみたいなっていうのが起きるんでそれを解消したかったんですよなるほど



  • なのでメニュー開発とかそういうデータの更新っていうのはメニュー開発チームって別のチームに持たせたんですね握り専門チームは今握れるものをひたすら握るとってことにするとまずメニュー開発チームが新しいメニューを作ったり更新したり削除したりしましたとその情報を他の



  • 握りチームに対して全部伝達しますよとそうするとほぼ同時に更新できるのでたまに誤差はあったりするんですけど誤差は絶対あるんですけどそれによって握り専門チームの情報というかメニューが新しく更新されてだいたいほぼ同じタイミングでその更新されたメニューを出せるようになるなるほどテーブルを分けたみたいなイメージですか



  • テーブルを分けたわけではないかな握り書を複製した感じ今まで複数の店舗に対して1個の握り書があったじゃないですかはいはいはい今複数の店舗に対して例えば2カ所3カ所って握り書があるみたいなその後ろにメニュー開発所があるみたいな研究所ひまずし研究所がありますひまずし研究所そこでは日々新たなメニューの追加と削除と更新が行われていますそこは1つしかない



  • そこは1個しかない今のところそこで新しく更新されたメニューが握り書に対して一斉に配信されるみたいなイメージですねそれが何に当たるんだろうなっていうのがこれはですねデータベースのマスタースレーブ構成に当たりますそれがそうだなそれが俺は知らないのかマスタースレーブ構成



  • っていうものになるんですねそうデータベースって複製するとき結構大変なんですよそうなんですね簡単じゃないんだウェブサーバーより全然大変で例えばデータベース複数作るよってのあるじゃないですかじゃあAとBって2つのデータベースがあってAでデータベース更新されましたと



  • でもBにはそれがまだ反映されてないんでコピーしなきゃいけないじゃないですか一方Bも別の変更されてたらBの内容をAにコピーしなきゃいけないじゃないですかっていうのでめっちゃ大変なんですよなのでこのAとBは完全に読み取り専用にしちゃうんですねもう一個Cっていうこれがマスターデータベースってやつなんですけどどっちを書き込み専用にしちゃうんですね



  • そうすることによって変な競合を防げるしAだけ更新されてるとかBだけ更新されてるみたいな状況を防ぎたいと



  • モチベーションがありますとそれが今回の寿司握り所のメニュー開発チームと握り専門チームに分けた理由ですね理解しましたそういうことかマスターっていう今の話でCがあってそいつは書き込み専用アップデートとかされるところでそいつだけしか更新されなくてそのマスターをAとBは常に読み取っているだから常にマスターと同じ状況になるんですよね他のA、Bは



  • 読み取ってるとレプリケーションとかって言ったりするんですけどコピーしてるみたいなイメージかななるほどそういうことかそれがマスタースレーブ構成ですねはいはいはいはい理解ですこれでデータベースも実はスケールしやすくなりました実際のウェブサーバーも同じSUSHIYAもウェブサーバーも同じなんですけど読み取り返すのが圧倒的に多いんですようん確かに



  • お寿司も提供する回数が多いんですよメニュー開発するタイミングよりなので読み取りのやつを大量に作って書き込みは1個だけで賄うみたいなそんな感じのイメージですかねなるほど理解ですありがとうございますあと寿司握りしを増設した上でなかなかどうじゃ割り振っていこうってなると思うんですけど割り振っていこうというと



  • どこの店舗にどこのそう間にロードバランサー挟むっていう手もあるけどちょっと今回はですねシャーディングというものを知ってほしいのでシャーディングSHARDですね違った?スペルが分かんないけど多分合ってると思うシャード聞いたことあるかもしれないこれは会員番号今回今寿司握り書の読み取りのやつが3つあるんでうん



  • 3で割った余り0か1か2かによってどの寿司握り所に割り振るかを決めますなるほどこれはね現実世界だと当て込みづらいんですけど一旦そういう風に割り振ってると思ってくださいはいはいはいで



  • そうやってやることによって均等に分散するようになるじゃないですかライン番号が普通に連番で振られてるんだったら3で割った余りで均等に割り振れるじゃないですか理論上はこれが俗に言うシャーディングってやつですねどこの部分だろう割った数に対して均等に割り振っていくっていうのがシャーディング



  • そうです0だったらAの握り書に割り振るし1だったらBに割り振るし2だったらCに割り振るみたいな感じですねなるほどただこれをやるとね1個だけ問題があるんですよギャルソネ問題っていう問題がありましたギャルソネ問題これは実際だとセレブ問題って言われてるんですけどあの



  • じゃあ会員もみんな同じ量食うわけじゃないじゃないですかうん確かに



  • 例えばAの握り所にギャルソネとジャイアントシロタとみたいな感じで大食いファイターがめっちゃ割り当てられた場合人数均等になってもお寿司捌く量が均等にならない可能性があるんですね確かにそれはやばいこういう場合とかはまずは偏っているよという情報を検知してあげてちゃんと割り振りルールを調整して均等になるようにするっていうようなことをしなきゃいけないわけですねなるほど



  • この調整はねいろいろ方法があって寿司で説明するの無理なので細かく知りたい人はシャーディングで調べてもらえばいいかなと思うんですけどなるほど今の話で言うと簡単に言うとギャルソネもジャイアントシロタも余りがゼロだから同じテンポにいっちゃってますけどジャイアントシロタを余り1に修正するみたいな感じでこんな感じのイメージですねうんうんうん



  • なるほどな確かにウェブサーバーウェブサイトも入ってめっちゃこうめっちゃ使う人とすぐ1ページ2ページぐらい見て入っちゃう人とかいますもんねそうそうそうあとSNSとかが分かりやすいですけど確かに例えばじゅんぺいと渡辺直美って



  • 明らかに負荷が変わりそうじゃないですか渡辺直美すごいですよね何フォロワーいる何百万何千万何千万いるのかないそうですよねいそうですよね角井潤平も実はフォロワー多い方なんですけど真面目に



  • とはいえ渡辺直美にはかなわないじゃないですかっていう問題が起きるこれを通称セレブ問題とかで言ったりしますねそれ結構マジな用語ですかマジな用語ですギャル曽根問題はマジじゃないです今回用ですねセレブ問題ってやつねはいっていう問題が起きたりするんでこういうシャーディングの時はちょっと注意が必要って感じですねうん



  • へーすごいこういう風な仕組みをかますことによってお寿司握り所のスケール水平スケールができるようになりましたいやーすごいなそうか確かにこれを現実世界に適用すればお寿司の店舗拡大いけますね



  • そういけるんですよもちろん無駄はあるんですけど現実世界だとねお寿司握りショーとかやってたらね衛生上良くないから店舗が常に隣り合わせてないと無理ですよねそうなんですよすごい長いレーン作ればいけるかも高速道路高速道路みたいなイメージになりますよねなるほど分かりやすいですねめっちゃ分かりやすかったな



  • 別のエリアに同じような形で出展するのはありかもね確かにオープンハウスって言ってましたけどこのエリアはひまぷろ寿司エリアみたいなのを作っていくんですよね例えば今新宿にだけありますって時に渋谷にも出したいってなるじゃないですかそれは要はデータセンターの分散ですよねマルチデータセンターってやつうんうんうん



  • そうすることによって新宿に隕石が来て破壊されたとしても最悪渋谷店動いてるよみたいな状況も作れるとなるほど確かに何て言うんですかね可用性を上げてるみたいな話だったそうそうそうそういうことですねなるほど渋谷店可能性ありますからねだいぶ長い道のりだったんですけどこれによってたくさんのお客さんを捌けるお寿司屋さんができましたいやーすごい



  • いけるなということでおさらいしていくとですねまず第一章街のお寿司屋さん時代ですねこの時は大将が一人で切り盛りしてましたよとまだちっちゃかったですねちっちゃかったこの時はウェブサーバーが全部やってる状態ですね一台が大将結婚見事しましたはい二章でおかみさんと大将の二人スタイル要はホールキッチンスタイルですねこれウェブサーバーで言うとウェブサーバーとデータベースサーバーを分離した状態はい



  • ここでスケールアップはもうやりきったのでスケールアウトしていこうということでひま寿司2号店3号店を作ってなんとそれを隣に建てちゃいましたすごいまた寿司握るのは一箇所でやりたいんでまたもう一個それとは別で店舗を作って握り専門の店舗寿司握り場を作りましたはいはい



  • これがあとはどの店舗に割り振るかも決めたいので外にロードバランサー設置しました案内所設定しましたとこれによってお客さんがどれに割り振られるか決まりますとより提供速度を上げるために店舗内に冷蔵庫を設置してよく頼まれるメニューを置いておきましたこれはお寿司キャッシュですねお寿司キャッシュはいでビールすぐに飲みたいぞとはい



  • これは売子さんをうろうろさせたとこれが売子CDNいつものやつっていう注文を全部でできるようにしたいとなりましたとこれでコールセンターを作ったお客さんの情報を紹介できるようにしてこれでステートレス店舗ができましたこれで無限にスケールできるようになったよただまだ



  • タッチパネルが導入されてなかったのでしましたこれによって対象の記憶力頼みではなくちゃんと注文した表がバーって急に並ぶようになったのでこれによってお寿司級が作られました最後お寿司握り所もスケールアップしていかないとやっぱり足りなくなるよねということでまずは握り専門のチームとメニュー開発専門のチームに分けて



  • お寿司提供するのは握り専門のチームに任せてそっちをたくさん作ることにしましたそれぞれの割り振りは会員番号の割る3の余りの数字で割り振るようにしましたしかしギャルソネ的な人たちが来たチームがあったので割り振りし直しましたこれによってたくさんのお客さんを捌けるお寿司屋さんができましたよ暇寿司



  • シャーディングですね最後お寿司シャーディングが完成しました握り専門チームメニュー開発専門チームはマスタースレーブ構成ってやつですねクラウドの文脈だとリードインスタンスとかライターインスタンスとかリーダーインスタンスとかちょっと分かりやすいですねたとえ技術上がってきてません?だいぶ



  • だいぶ超大作になってびっくりした本書けるんじゃないかなと思いましたね9章ぐらいまで行ってましたから確かにお寿司屋さんの本書こうかなそっち?こうすればたくさんのお客さんさばける無理あるとこありますけどね無理行とかうろうろさせないからね無理行やばいですねでも面白いですよねなんかこう



  • 可愛いお姉ちゃんをうろうろさせたちょっとなんかキャバクラじゃないですけど目的違うからそっちよりお寿司みたいなフーターズに近いかもしれないな新しいですね面白かったすごいめっちゃわかりやすいですこれがウェブサーバーの最初のちっちゃい状態からよりたくさんのお客さんをさばけるようにするための構成を作る流れでございました



  • すごいななるほどアーキテクチャの基礎的な話にもなったりするんですかねそうですね大体でもこうやって作るんじゃないかなっていう気はしてるもしかしたらもっとメッセージキー多かったりとかいろんなレイヤーでキャッシュあったりするかもしれないけど細かく見るとそうですよね大枠こんな感じですよね多分すごい復習になりました



  • 勉強になったはいこれからなんか可用性の高いアプリケーション作るとき個人的にはこれウェブアプリケーションでウェブアプリケーションエンジニアが知りたいやつだと多分ステートレステンポのところとか結構大事な気がしますね一個一個のサーバーに状態を持たせてしまうとスケールしにくいよっていうのは確かに確かに結構あるかなと思いますね



  • 確かにだいたい普通に作るとそうやっちゃうんでそうなんですねこんな気がするやっちゃうかな普通のフレームワークとかで作るじゃないですか多分はいフレームワークの初期設定だと多分セッションはサーバーで持つようになってるんじゃないかなあー



  • そういうことかなろうどん一方普通のなんか開発チームが入ってすでにスケールとか できるようにしている場合だったら1つともレディスとかにそういうセッション情報が入ってるなってんじゃないかなって気はするけどねうんうんうんうん 頭 cdn とかかな cdn とかもやっぱキャッシュなので 期限とかあるんですよねうん



  • あんま古い情報を置いておくと良くないというか売り子さんもね古いビール持ってたら嫌じゃないですかもう合わないですからね合わないぬるいし合わないしぬるいんだそうなんだぬるくなるかそうですねなるほどありがとうございました勉強になりましたというのでハイパフォーマンスお寿司屋さんひま寿司完成しました食べに行きます今度



  • ぜひ来てくださいはいじゃあパクッと終わりますかはいひまじんプログラマーではハッシュタグひまじんプログラマーでSNSのXでのポストを募集しておりますぜひね今回のお寿司屋さんでこういう要素も欲しかったとかあったらあのポストしていただけたらそれを読んで反映していきたいと思いますのではい



  • 一緒にいいお寿司屋さんを作っていきましょうお願いしますはいということで今回はいいお寿司屋さんの思い出とかも一緒にポストしていただけると助かります今日寿司食べに行こうかないいね食べたくなっちゃいました僕は昨日食べましたあー食べてますねスーパーのやつだけどねなるほどそれ食べながら考えてたんですねこのエピソードいやこれは食べ終わってから考えたなそうそう



  • あとはポッドキャストの概要欄にお便りのフォームメールアドレスが記載されてますのでこんな質問したいよとか



  • 感想とかあればそちらから送っていただければ読んだりとか取り上げたりとかもしたいと思っているのでよろしくお願いしますお願いします感想だけでも全然いいので聞きましたとかね嬉しいですあとは各種ポッドキャストで配信中ですのでそれぞれのプラットフォームでいいねとかコメントをしていただけると僕らも喜んでいいエピソードを作るモチベーションになっていきますのでご協力よろしくお願いしますお願いします



  • はいということで今日はお寿司屋さんの話でしたありがとうございましたバイバイさあ皆さん次の商品は目玉商品ですこちらめちゃくちゃでかいエンターキーわー大きいこれがあるとストレス発散生産性アップ快適な睡眠もえ枕にしちゃうんですかこちらの商品はお値段など1024円わー2の10乗



  • そして今番組終了1時間以内にGoogleフォームよりお便りを送った方はちっちゃいスペースキーも付いてきますポケットに入れて持ち運べますね番組の高評価フォローもすると会員割引なんと90%オフほぼただ今すぐご応募

0:00 51:22

#281 ハイパフォーマンス回転寿司「ひま寿司」