00:08
スピーカー 2
はい、よろしくお願いします。
今日は、DDIA第8章の臨時課会後の収録をしていきます。
今日はですね、自分が時間を、スケジュールを間違えたせいで、Kenさんが参加できなくて、ホストは僕一人で、ゲストに、てっぺいさんと、しゅうへいさんをお呼びしています。よろしくお願いします。
スピーカー 3
よろしくお願いします。
スピーカー 1
よろしくお願いします。
スピーカー 2
てっぺいさんとしゅうへいさんは、これまで出たことが、ポッドキャストに出たことがあるんですけれども、一応まだ知らない方もいると思うので、簡単に自己紹介をお願いしようかな。
じゃあ、しゅうへいさんお願いします。
スピーカー 1
はい、こんにちは。枝しゅうへいと申します。前回も出たことがあるので、今回2回目です。
自分は今、ショッピファイに勤めていて、
で、ちょっと前、初旅をしたときは、ショッピファイのジャパンにいたんですけど、このたび、しれっとアメリカに移動しまして、今シアトルに住んでいます。よろしくお願いします。
スピーカー 2
よろしくお願いします。
たぶん、前回は日本にいたときだったと思うんで、その後のこと、全然僕は知らないんですけれども、どうやったか、引っ越してから、引っ越されてからというか、家とか簡単に使ったんですか?
スピーカー 1
はい。
家は…。
はい。
そうですね。最初、引っ越し、アメリカに来た直後は、その会社がサポートしてくれているので、そのテンポラリーの、一時的に住む家を用意してくれていました。
はい。
なので、その間に、本当に自分たちが住む家を探さなくてはいけなかったんですけど、そこは結構、いろいろ見て回って、2ヶ月ぐらいかけて、高校みたいな。
結局、アパートになったんですけど、見つけましたね。
スピーカー 2
やっぱり、そのくらいかかるんですね。僕も実は、今週末にスイスに渡航するんですけど、
なるほど。
そうなんですよ。出してもらっているテンポラリーアパートみたいな費用が、2週間分なので、その間に見つけられなかったら、自分で出すんですけど、ちょっと…。
おお、2週間。
やっぱり、1ヶ月くらいかかる人もいるって言ってたんで、はい。そのくらい、みんな気に入っています。
はい。
そのくらい、見なきゃダメかなと思ってますね。
スピーカー 1
なるほど。いや、たぶん、すごい勢いで、いろいろ内見してみてもらわないと、たぶん、なかなか1週間に決まらない気はするので、頑張ってください。
スピーカー 2
気が引いてしまいました。
スピーカー 3
もう、地域どのあたりとかは決めてるんですか?
スピーカー 1
もう1回。
スピーカー 3
洋介さん。
スピーカー 2
地域は、一応だいたい目星ですけど、会社から電車とかトラムとかですぐに行けるようなところに。
03:00
スピーカー 2
はい。
住みたいなと思ってて、まあ、30分以内みたいな感じで考えてて、一応、スーパーとかの場所もちょっとずつ見ているけど、まあ、全然まだわかんないですね。
ああ。
スピーカー 3
結構、事前に目星つけとかないと、2週間じゃ全然足りないってなりそうですよね。このあたりの、このあたりみたいな。
スピーカー 2
いや、本当に、なんかでも、住宅事情の変化が早すぎて、全然今から目星つけるとかできないらしくて。
へえ。
だから、ついてから見ないと。
まあ、本当に、取れないみたいな感じらしいんで、まあ、まだ何もわかんないですね。
スピーカー 3
うん。
その、価格がちゃんとわかんなかったりとか、開いてる、開いてないが、結構、部屋が激しかったりとか。
スピーカー 2
部屋が出されても、そうですね、あの、すぐに売れちゃうみたいな感じらしいんで、結構、そもそも出るのが少ないみたいな感じで、価格もよくわかんないです。
まあ、一応、目星はつけられるんですけど。
はい。
っていう感じかな。
スピーカー 3
結構、大変な2週間になりそうですね。
スピーカー 2
頑張ります。
スピーカー 3
働きつつ、部屋を探しつつって感じになるんですかね。
スピーカー 2
うん。最初の1週間は、まあ、何もないから、まだ。まあ、そのときは、仕事、部屋探しに集中して、まあ、2週間目から仕事が始まるんで、まあ、働きつつ、部屋を探すみたいな感じになりそうです。
スピーカー 3
1週間目、勝負ですね。
スピーカー 2
はい。
スピーカー 1
現地って、車社会なんですか?
スピーカー 2
いや、結構、交通機関は便利なので、あの、車買わなくても行けそうなんですよね。
ああ、そうですか。
はい。あの、まあ、街にトラムとかバスが結構走ってて、電車もあってみたいな感じなんで、まあ、今のところ買う予定はないですね。
スピーカー 1
なるほど。
スピーカー 2
ヨーロッパはそういうところが、都市は特に多いんじゃないかなと思うんですけど、まあ、ジュネーブ、僕はジュネーブ、ジュネーブもそんな感じです。
なるほど。
スピーカー 1
こっちはもう完全に車社会なんで、そうですね、まあ、車もようやく最近ゲットしたんですけど、まあ、それまで、なんか、もう、ずっと、なんていうか、自分の住んでるエリアに、なんか、から出れないみたいな。
まあ、出てもそんなに行けるとこ知れてるみたいなのが、ずっと続いてたんで、まあ、そういう、まあ、多分、アメリカは本当に一部の都市、まあ、ニューヨークとかサンフランシスコとか、そういうところ以外はもう、なんか、車ないとつらいみたいな感じなので。
まあ、シアトルで結構。
スピーカー 2
いいなって聞いててもらいました。
都会のイメージでしたけど、あれ、結構、車に行かないとダメなんですね。厳しいところ。
スピーカー 1
ああ、そうですね。まあ、僕、ちょっと、まあ、シアトルの近く、厳密にはシアトルの近くなので、レドモンドっていうエリアで、まあ、シアトルは確かに、まあ、ダウンタウンで、その、本当にまあ、車なくても、まあ、ある程度、こう、いろいろ、なんか、買い物が便利だったりとか、まあ、その、見て回る場所も充実してたりとかするんですけど。
はい。
まあ、その、自分の外住んでるところは、まあ、郊外の。
はい。
エリアなので、もう、本当に、車がないと、どこも行けないみたいな感じです。
06:03
スピーカー 3
いやー。
スピーカー 2
じゃあ、家決めてから、車買った感じですか?
スピーカー 1
そうですね。家買っ、そうですね。あの、そんな感じですね。
だから、まあ、実際、ほぼ同時ぐらい。たまたま、その、これ、なんか、その、いろいろ、こう、Facebookマーケットプレイスとか見てたら、これから日本に帰るっていう人が、車を売りたいみたいなところに、たまたま出会って、まあ、ほぼ、家を買うのと、車をゲットするのと。
はい。
まあ、たまたま同時になったっていうのはありましたけど。
スピーカー 2
はい。
スピーカー 3
まあ、その、マーケットプレイスで、あの、やり取りして、帰ったんですか?
スピーカー 1
まあ、そうですね。
へー。
スピーカー 3
結構、その、直接だから、安く、安めにって感じですか?
スピーカー 1
そうですね。あの、結構、なんでしょうね、しかも、向こうは焦ってたんで、こっちが言うような。
スピーカー 3
へー。
いいですね。
スピーカー 1
なんとしても、そう、現地で早く売って帰りたいみたいな。
あー。
まあ、割と、なんか、値下げしてくれてっていうので、ありがたい感じです。
スピーカー 3
めっちゃラッキーですね。
スピーカー 1
そうですね。まあ、本当、たまたまだと思いますけど。
うん。
結構、他にもFacebookマーケットプレイス、なんか、他にも欲しそうな人が、なんか、いい値付けてたりとかしてたんで、まあ、家族も。
スピーカー 3
タイミングが。
タイミングが。
スピーカー 1
そうですね。
スピーカー 2
素晴らしい決断力。
スピーカー 1
はい。
スピーカー 3
右ハンドル、左ハンドルは、もう慣れましたか?
スピーカー 1
あー。ようやく慣れてきましたけどさ、本当にそれは、もう、最近までなんですけど。
スピーカー 3
何でしょう、なんか、脳、常に脳トレをやってるみたいな。
スピーカー 1
間違った。
そうですよね。
ちょっと集中しなかったら、すぐに反対車線に入りそうになるのが、本当に怖いですね。
スピーカー 3
いや、怖いですね。
スピーカー 2
怖いですね。
スピーカー 1
気をつけないと。
スピーカー 2
うん。
ぼーっとしても運転できますけど、逆だと厳しそうですね。
スピーカー 3
いや、こうですね。
スピーカー 2
本当に集中してないと。
スピーカー 1
まあ、そこ、まあ、ようやくはちょっとずつ、こう、まあ、なんていうんですかね、そう、意識しなくても出てるようになってきましたけど。
うん。
スピーカー 2
1、2ヶ月なので、結構、何でしょうね、ぼーっとしてたらすぐに、お、こっちじゃないみたいな時がちょっとあるので。
危ない。
スピーカー 3
なんか、左折、日本で言う左折とかって、まあ、ちょっと、あの、歩行者いなかったら、バッて、なんか、あんまり気にせずに曲がるんですけど、右折とかだと、こう、反対車線から車来てるのをちゃんと見ないといけないじゃないですか。
スピーカー 1
はいはい。
スピーカー 3
で、多分それが逆になるから、左折の時にちゃんと対向車来てない、顔見ないといけない。
スピーカー 1
でも、なんか、同じ感覚で、まあ、左折やから、ちょっと気ぃ抜いていっちゃいそうやなっていう、対向車来て手ぶつかりそうになるみたいな、めっちゃ怒りそうな気ぃ手で想像しましたね、自分だったら。
おお、ですね。なので、どっちをより注意しなくてはいけないかとかも、まあ、ちょっと、なんていうんですかね、まあ、慣れるまでに時間がかかるし。
スピーカー 2
うん、そうですね。
スピーカー 1
あと、あとは、その、まあ、ご存じか分かんないですけど、アメリカって、赤信号でも右折だったら行っていいんですよ。
スピーカー 3
ああ、そうなんですね。あ、右折だったら。日本で言うと左折ってことですよね。
はい。
09:00
スピーカー 3
うんうんうん。
スピーカー 1
日本でも、なんか、そういう、その、新、この話続けてていいのか分からないですけど。
スピーカー 3
そうですね。
発展がすごく。
話しましょう。
スピーカー 1
はい。
スピーカー 3
まあ、そういうの、そういうのがあったりとかして、まあ、いろいろ、ちょっと違うのもあったりとかして。
ちょっと、マイナーのローカルルールがあるんですね。ローカルルールというか、国特有の。
スピーカー 1
うーん。
すいません。はい、長くなりました。
スピーカー 3
はい、ありがとうございました。
スピーカー 2
ありがとうございます。
えーと、てっぺいさんは、そうですよね。まあ、一応、第5章とかでも出てもらってましたけど、最近あれですね、転職と、なんだっけ、大学院進学されてめちゃくちゃ忙しいですよね。どうですか?
スピーカー 3
そうですね。えーと、そうですね。大学院が始まったのも、転職したのも8月で、えーと、どちらもちょうど1か月経ったみたいな状況ですね。
うんうん。
まあ、そうですね。まあ、で、会社の転職が、えーと、外資系企業に、日本の外資系の企業に転職したので、えーと、まあ、周りほとんども日本人がいなくて、全部英語で仕事をするみたいな環境になったので、そういう意味で、結構今、英語に苦しんでいるっていうような感じですね。
うん。
うん。
14:23
スピーカー 1
I think 11年くらいが過ぎたっていう感じですね。
11年くらい経つと、もう、まあ、最初ちょっとまだまだ、その、悔しい経験もされてるっていうお話でしたけど、ある程度やっぱりもうスムーズに仕事はできるようになりましたか?英語っていうね。
スピーカー 3
まあ、そうですね。まあ、一、一、その、昔の自分と比較すると圧倒的にスムーズにやったと思うんですね。
うんうん。
スピーカー 1
ああ、そうなんですね。
はい。
まあ、まあ、ちょっと、なんか分からない、まあ、分かる方がまあ多いし、まあ、その、ディスカッションとかも、まあ、その、ある程度入ったりはできるんですけど、ただやっぱりその、何でしょうね、すごい、あと自分のプレゼンテーションとかはまあ別に、まあ自分が話すことなんで、もう決めてたりもするんで、まあ言いやすい表現で言ったりとかもするので、別に全然問題なくなりますね。
15:12
スピーカー 1
うん。
すごい細かいこととかを
伝えるときとかに
結構
短い表現で
スマートなスタイルっていうのは
やっぱりまだ苦労することが多くて
そこはやっぱりまだまだ
勉強が必要だなっていう
気になることはあります
スピーカー 2
そういう英語でのコミュニケーションの話も
スピーカー 1
この辺ですごい上手な人は
やっぱりケンさんすごい上手だと思うので
スピーカー 2
そうなんですかね
スピーカー 1
すごいなぁケンさんと思う
一緒にミーティング入ったりとかするときは
時々会ったりするので
すごいなって思うことが多いので
やっぱりぜひその秘訣を
ここで話していただく回を
やってもらいたいです
スピーカー 3
めちゃくちゃ聞きたいです
スピーカー 2
今度は3人でインタビューしましょうケンさんに
スピーカー 3
そうです
スピーカー 2
ということでそろそろ
本題に入っていきますかね
お二人の話ももっと聞きたいので
またぜひ今度
ポッドキャストに出ていただきたいと思います
よろしくお願いします
お二人の話聞けなかったらぜひ前のポッドキャストに
行ってみてください
よろしくお願いします
ということでですね
前振りが長かったんですけども
第8章は
分散システムの問題という章でして
最初にコールミーメイビーの歌をもじったやつが出て
結構みんなでディスコードで笑ったんですけど
ちょっとこれ僕歌う自信ないんで
歌わないですけど
そういうネットワークとか
もしくはクロックとかで起きるに関連して
起きる問題とか
あとはそうですね
ビザンティンシャークモードとかできたりして
これまで
ビザンティンシステムのレプリケーションとか
パジションとか
トランザクションの章をやってきて
それでもなお
起こる問題みたいな
部分を
結構悲観的に見ていくような章
っていう感じになってますね
はい
ということで
今回は
4人でやったので
いつもより
少なかったんですけども
自分からは
そうですね
この章の中で
ネットワークの問題
結構気になって
やっぱり比較対象として
電話とかのネットワークの話が出てきて
電話はすごい
回線が安定しているのは
18:02
スピーカー 2
なぜかっていうと
電話自体がそもそも
回線の広い帯域幅を使わないで
固定した帯域幅しか使わないから
確立した回線を使って
そのデータを送れるっていうのが
あるんですけど
一方で
普段我々が使っている
Webサービスにおいては
いろんなサーバーがあって
いろんなサーバーのリクエスト
リスポンスが
ネットワーク上に溢れていて
かつそれのサイズも
まちまちでっていうので
Qを使って
使わなきゃいけなかったりっていうのが
あるので
それによって
ネットワークが遅延したりとか
途中でパケットロストしたりとか
相手のサーバーで問題が起きたりとか
いろんな問題が起きて
ネットワーク上
かついけない問題が
起こりうるので
送れてますが
それが分かったら面白かったなというふうに
思いました
あとは
そうですね
これまでの
5章第5章6章7章で読んできた
問題とかをどう解決するか
みたいな話がありましたけども
それが結構ネットワークの問題が起きると
それでこれまでトランザクションで
一生懸命担保招待したことが
うまくいかないっていうことになるので
それがすごい儚いなというふうに思いました
例えばトランザクション
データベースに更新かけようとして
トランザクションで
データベース側は
そのトランザクションコミットを完了しました
っていうふうになったとしても
データベースからの出力部分のネットワークが
何らかの問題で落ちていた時に
それがクライアント側には返せなくて
クライアント側は失敗したと思ってしまう
みたいなことも起こりうるので
そういう
そうですね
なんかさらにトランザクションとかだけでは
防げない問題がたくさんあるんだなと
思いましたね
っていうのがよく分かりました
一旦そうですね
自分からはこんな感じなんですけど
てっぺいさんなんかテイクアウェイとか
本の読みどうでしたか
そうですね
スピーカー 3
なんか
この章ちょっと
なんかつかみどころがちょっとなくなかったですか
なんか
なんか
ふわっと知ってたなっていう感じですね
自分の中では
なんか
なんかこう
問題がすごい
分散システムを使った時に
こういうことが困るんだよっていうのは
分かった分かったんですけど
ちょっと分散システムを使ってない
使った経験があまりないからなのか
そうなんだって感じで
ちょっと終わっちゃったなっていうのが
正直なところでした
ちょっと難しい
難しいというよりも
21:01
スピーカー 3
何がポイントなんだろうっていうのは
スピーカー 2
ちょっと把握しづらい感じでしたね
そうですね
あの
けんとうさんも言ってましたけど
クロックとかの問題
実際に見ることが少なくて
スピーカー 3
あんまりピンとこないっていう話はされてたので
スピーカー 2
そうですね
まあ
結構
低レイヤーな問題の話になってくるから
うんうんうん
その参考文献とかも
何かデータセンターで
どうやってその問題を防ぐかみたいな話で
あんまり普通のソフトウェアエンジニアとか
変わらないようなところも多いのかなって。
はい、うん。
スピーカー 1
あとこの辺でクラウドが出てくると
スピーカー 3
全部隠蔽されちゃってるから実感がわきにくい
クラウド使ってても
分散システムを使ったアプリケーションを書く場合には
ここで書かれてたような
対障害性を意識したことは書かなきゃいけなくなるんですよね
やってたらある程度イメージできる部分もあるのかもしれないですけど
まだ分散システムを使った経験もないので
なおさらピンときづらかったなっていう感じでしたね
スピーカー 2
クラウドとかの話で言うと面白かったのは
スーパー
スーパーコンピューターとの対比って出てきて
スーパーコンピューターは
ある特定の場所に
一つの場所に置いてあって
すごい高価なマシンを使って
そこで
ストレージも共有されていて
ネットワークをまたぐ必要がない
失敗したときはチェックポイントに戻って
どっかやり直せるみたいな話があって
そういう風にシステムを組めれば
かなり信頼性の高い
高いものを組めるけど
実際そういう例えば
富岳みたいなスーパーコンピューターって
すごい高い効果なんで
まあ普通のソフトウェアというか
システムとかを構築する場合は
クラウドコンピューティングを使う必要が
クラウドコンピューティング
安いノードを分散させて
システムを構築する必要があるっていう話があって
まあこれもなんか当たり前ちゃ当たり前ですけど
なんかそういう風に言うと
スピーカー 3
こういう風に対比されると面白いなと思いました
あとあれですかね
そのやっぱりスーパーコンピューターを使うと
まあその高いけど
まあ処理が早くなったりとか
そういうことはありつつも
やっぱりこう対障害性ですかね
あのなんか一つのコンピューターが落ちても
処理を継続し続けられるみたいなところは
あの満たせないので
24:02
スピーカー 3
そういうところではやっぱり分散システム使っていかないと
いけないっていうのがあるのかなとも理解しました
確かに
スピーカー 1
多分まあ一例とかで出てたのがあれですよ
リーダーセレクションでしたっけ
例えばそのいくつか何台かマシンがある中で
まあそのうちの1台がプライマリーとかリーダーであるみたいなことがある必要がある人がいるとは思いますが
スピーカー 2
まあそのうちの1台がプライマリーとかリーダーであるみたいなことがある必要がある人がいるとは思いますが
まあそのうちの1台がプライマリーとかリーダーであるみたいなことがある必要がある人がいるとは思いますが
スピーカー 2
まあそのうちの1台がプライマリーとかリーダーであるみたいなことがある必要がある人がいるとは思いますが
スピーカー 1
っていうシステムがあるときに
例えばデータベースとかは多分そういうものが多いと思うんですけど
論理上というかコンソール上では1台に見えてるんだけど
裏側には2台とか複数台のセカンダリーがいて
プライマリーがダウンしました
その裏のセカンダリーはどちらかが
プライマリー昇格しなくちゃいけませんとか
そういう時とかに多分その分散
それもある意味その分散システムですよね
多分こういうところをどうやって合意形成とっていく
そういうところで起きる問題が多分この章に書かれてたのかなと思ってて
おそらく次の章ではじゃあこれがどうやってプライマリーになるのかっていうのを
多分いろんなアルゴリズムを紹介してくれるのかなって期待してます
スピーカー 3
そうですね
多分ちょっとこの章と次の章がセットでなんか1つ
スピーカー 1
やっぱりそうですよね
スピーカー 3
話になるっていうので
ちょっとまだその前半部分だけ
だから何かこうフワッとしてる部分もあるのかなっていうのは
次がちょっと楽しみですね
スピーカー 2
重そうですけど
スピーカー 1
そうですね多分合意形成のアルゴリズムが多分出てくるんですよね
きっと次は
スピーカー 3
そうだと思います
スピーカー 2
なんかこれまでもデプリケーションとかでも
ちょっと多少マルチリーダーとかの話があったんで
えっと
多少話はありましたけど
まあ次の章で本格的にそのアルゴリズムの内容が出てくると思うんで
はい
ちょっと怖いですけど楽しみですね
あとはそのコメントの中で
あの目に見えるものが真実とは限らない
何が本当に何が嘘かっていうのを
コンフィデンスマンの世界を見るぞみたいなコメントがあって
これ面白かった
なんかそのこれは文脈としてはさっきの合意形成とか
えっと
えっとビザンチン将軍問題とかがあったんですけれども
あの途中でネットワークのデータが改ざんされてしまった時に
どう対応するかというか
それをどう防ぐかみたいな話もあると思うんですけど
まあ実際にそれが起きないことはないと思うので
そういうところもこの章には書いてありましたけれども
スピーカー 3
それもありますし
あれですよね
なんか嘘
そのビザンチン問題ほど明確にこう改ざんとかされなかったとしても
スピーカー 2
えっとまあなんかこうこういう風に思うときにね
27:00
スピーカー 3
まあこういう風に思うときにね
そういう風に思うときにね
まあこういう風に思うときにね
まあこういう風に思うときにね
何秒間の間にレスポンスがなかったら
そのノードが落ちたと判断して
別のノードをリーダーみたいな
見なすっていう仕組みがあったときに
何かしらのスレッドの一時停止で
その敷地を超えてしまって
っていう状態が発生したときに
もともとリーダーだったノードは
他のノードから見ると
もう死んでしまったと見なされてしまう
だけど自分自身はまだ死んでないと主張し続けるけど
信じてもらえないみたいな感じで
自分が正しいこと言ってても
それを嘘かのように捉えられてしまうみたいなところも
話としてありましたね
ちょっとうまく説明できたかもしれないですけど
スピーカー 1
いやでも書いてあってまさにその通りだと思います
スピーカー 3
そうですね
なので何が正しい情報なのかっていうのが
すごく分かりづらくなるんだろうなっていうのを
よく感じましたね
分散システムになると
スピーカー 2
たまたまそのGCがベージュコレクターしてて
そうですね
アップデートしてるだけなのかとか
なんかアップデートしてるだけなのかとか
いろんな事情があると思う
それをどうやって判定するかみたいなところ
いろいろやりようはありそうですけど
細かいですよね
スピーカー 1
そうですね
自分がなんかちょっとすごいなと思ったのは
やっぱりスパナですね
ちょっと勉強会のところでも触れさせてもらいましたけど
まずその
時刻が結局まず分散システムの問題になるのは
時刻の問題があると書いてあったと思うんですけど
それをなんていうんですかね
うまくやろうとすると
時刻がずれているところで
どうやってうまくトランザクションの順序であったり
何かイベントの発生をどうやって整理するか
みたいなところに話が行くのかなと思いきや
Googleはお金を使って
全ノードですごい精度のいい時計を用意するっていう
あとはそれを使ったAPI
TrueTime APIでしたっけ
そういうのを使って
なるべく誤差を下げるっていう
インフラで解決してしまうから
ちょっと不合感あふれる解決方法で
スピーカー 2
すごいなと思いましたけど
スパナ高いってよく言いますよね
高い理由はここに一つはこのようなかもしれませんね
この時間
スピーカー 1
はいはい
スピーカー 2
無理やり合わせていくっていうスタイルで
30:01
スピーカー 2
はいはい
スピーカー 3
逆に言うとGoogleであっても
安価にスマートに解決する方法っていうのは
あんまり見つけづらい
買ったからこそそういう商法を取ってるのかなとかって
考えるとやっぱりすごい難しい問題だなと思いますね
スピーカー 1
そうですね
スピーカー 2
なんか参考文献として面白かったのが
なんかネットワークが
落ちる原因
ネットワークが遅延することが
やっぱり一つずつクロックが遅れたりする原因になると思うんですけど
落ちる原因の一つに
そのサメがネットワークを
回転経路を食べて
なんか落としてしまったみたいな
切ってしまったみたいなのがあったりして
まあそういうなんか本当に予測できない問題が
起きるんだっていうのを思うとやっぱり
その現実世界で
まあリージョンも分散されてる中で
分散システムを組むっていうのは
確かにまあ予想がつかないことが多いので
まあそういうパワープレイに出るのも
なんか確かになっていうのはある
スピーカー 1
まあでもそこ
逆にでもまあそこにはお金をかけているとは
もうことは多分間違いないと思うんですけど
逆にでもそこが時刻がどの分散してるノードであっても
正確にある程度の精度で正確に取れるってことが
保証されてると
その上での実装はなんかすごい簡単になりそうだな
っていう気もしたので
スピーカー 2
なるほど
スピーカー 1
まあトータルのコストで見ると
どこインフラ部分にはコストが高いと思うんですけど
アプリの実装の難易度みたいなのを
下げられることを考えると
トータルのコストがどうなるのかっていうのは
まあなんかちょっとまあ実際に実はDWなのかなとか
この辺でちょっとコストまでは公開されてないと思うんですけど
まあでもちょっとなんかいつか中の人と喋ってみたいな
確かに気になりましたね
スピーカー 3
まあ普通のGoogleみたいな超正確なものを持っての
クロックを持ってないノードで処理をしようと思った場合
ある程度やっぱ範囲を取るんですよね
なんかこのここからここの範囲に入ってる
クロックおよびそのノードは正しいと判断して
でそれをその範囲を外れるものは
そのノードがなんかおかしいことになってるっていうので省くみたいな
感じですかね
スピーカー 2
で多分その
スピーカー 3
その時刻を使う処理をするときには
常にその範囲がどうで
そのノードは正しい範囲に入ってるのかみたいなところを
確認しながらプログラミングをしていかないといけないっていうところで
多分そこが超正確なGoogleみたいなものだったら
あまりそこまでこう工夫しなくても大丈夫だったりとか
33:00
スピーカー 3
そういうふうにするのかなっていうことですかね
スピーカー 1
そうだと思います
時刻確かそうですね
Tuletime APIって言われてたやつだと思うんですけど
ノードで正確な時間が取れるんだったら
その分散してても多分順序の整合性が取れると思うので
多分その辺でそういうなんていうんですかね
その後で情報をどこかで集約したりとか
トランザクションでどこまでのデータを見せるかとかっていうのが
多分自分の引ける時間だけで解決できるっていうことになると思うので
だいぶ実証の難易度が下がるのかなっていう気がしますね
スピーカー 3
なるほど
スピーカー 2
単一ノードっぽくプログラミングができるっていうことですかね
スピーカー 3
そうですね
なるほど
わかんないですねそうなると
もしかしたらトータルで考えると
リーズナブルなのかもしれないし
もしかしたらそういう意思決定なのかもしれないですよね
面白いですね
スピーカー 1
そうですね
スピーカー 3
テストとかもバカにならなさそうですよね
その誤差を意識したテストをちゃんと書こうと思うと
スピーカー 1
めっちゃ大変そうじゃないですか
スピーカー 2
確かにそうです
スピーカー 1
ミリ秒の世界で
やるんだったらだから
E2Eとかでやるんだったら
意図的にノードを多分2、3個用意して
1個落とすとかそういうことをやるのかな
多分そこまではやるか
そうですねこれぐらいのサービスを提供するんだったら
スピーカー 2
それぐらいはやります
なんかこのさっきの歌の例でできた
ジェプセンっていうツールがあって
それが確かそういう分散システムの
データベースのテストかな
確かできるはずで
そういうツールもあって
カサンドラだっけな
カサンドラかなんかで
結構いろいろバグがあるのを
そのテストツールを使って
検証したみたいな話はあったんで
なんか意外と自分でそこらへん
テストを書かなくてもできるところは
あるのかなっていうのを
ちょっと文献で読みましたね
スピーカー 1
何か気になったところとかありますかね
分散システムならではっていう
っていうところでいくと
やっぱりプロセスの処理が
ネットワークの遅延とかはよく
分散システムにおいてよく問題になるなっていうのは
なんとなく知ってたんですけど
プロセスの遅くなることもやっぱり辛いし
そのプロセスが遅くなる要因に
ガベージコレクションと
ライブマイグレーションとかっていうのが
あるよねって言われて
確かによく考えてみるとクラウドでよくあるのは
調査をしていて
何かシステムの時が止まったように見えるみたいな
36:03
スピーカー 1
ログが時々出るんですけど
それを後々調べてみると
ライブマイグレーションが起きてました
とかっていうのはやっぱりあって
なのでこの辺はやっぱり
実務でも痛い思いをしているところが
ここでも出てきていて
なんかやっぱり分散システム
分散システムは特にそうですね
考慮しながら作らなくてはいけないなっていう
気にはなりましたね
スピーカー 2
確かになんかその
ガベージコレクションだけじゃなくて
コンテナとかでも結構そういうのがあるって
話があった気がしててVMか
一つのホストに複数のVMというか
コンテナとかそういうのがある場合にも
どれか一つがCPUとかを
分かんないです
独占してしまって他のが止まったりとか
あるっていうのは結構身近にそういう問題は
ありそうですよね
Kubernetesとか使っているときにどうなるのか
みたいなちょっと気になりますね
スピーカー 1
そうですよね
表現としてはコンテナが
コンテナが別のVMに
割り当てられるって簡単に言いますけど
実際はそうですね
あるノードでコンテナなりプロセスを止めて
別のノードで
知らせるっていう話になると思うので
その間止まったように見える
ログからすると
時も取り方にももちろんよると思うんですけど
スピーカー 2
それでもGCとかの問題については
GCを予測して
GCが起きるノードを予測して
事前にルーティングするみたいな
GCを全体的に管理するような分散システムで
そういうツールを
研究とかもされているっていう話があったので
今後そういう問題が
そういったサービスによって
改善されていくのかなっていうのは
期待したいですね
スピーカー 1
GCもそうですね
問題になりがちですよね
結構ガビッジコレクションが
そうですね
GCがどうしても避けたいってなると
そうですね
そのガビッジコレクション
多分Javaとか
特にJavaだと思うんですけど
ガビッジコレクションに対していくつか
パラメーター渡したりとかもできるんで
それで何かしらチューニングするとかは
多分ある話だと思いますし
この辺をは
何でしょうね
逆にGoは相対的には少なくて
多分その
多分Goって
僕も最近触り始めたので
ちょっと知識として
ちょっとRFの部分あるんですけど
その
Javaとかだとマーキングして
39:03
スピーカー 1
スイーピングっていう
実際にメモリのオブジェクトを除いて
最後その
フラグメントしてるメモリを
全部その
なんていうんですかね
ディフラグメンテーションっていうんですかね
空き領域をちゃんと増やすみたいな処理で
コンパクションっていうところまで入って
3ステップでやって
ようやく空き領域が確保できるっていうメリットはあるんですけど
その代わりに
やっぱりコンパクションする時とか
そのものによっては
スイーピングする時とかに
結構そのストップザワールド
多分書かれたと思うんですけど
他のスレッドが止まって処理が止まるみたいな時間が
結構長くなると思うんですけど
Goとかって多分最後コンパクションが
ないのかな
僕の調べでは多分ないように見えて
もしかしたらごめんなさい
これバージョンによっても違ったりとか
するかもしれないんで何とも言えないんですけど
マーキングしてスイープするっていうところまでなので
結構メリットとしては
ストップザワールドする
他のスレッドが止まって
プロセスの処理が止まる時間が
かなり短くなってるのかなっていう感じはしました
スピーカー 2
結構Goだとそういう悩みが少ないから
なんか広く使われてると思うんですけど
そういうのも理由としてあるんですかね
なんかGoが使われる
スピーカー 1
かもなって思いました
もちろん最後のコンパクションがないと
ディフラグメンテーション
要はメモリの断片化が解決ができないので
そこをどうするかっていうデメリットはある
メリデメの話でそういうデメリットあると思うんですけど
多分でもその代わり止まる時間が少ないので
パフォーマンス的には良さそうだなと
いう気はしましたね
スピーカー 2
その辺ちょっと深掘りしてみたいですね
全然違うトピックになっちゃいますけど
スピーカー 1
そうですね
ちょっと分散システムから脱線して
スピーカー 2
いえいえめちゃくちゃ面白いありがとうございます
何か言い残したことありますか
スピーカー 1
もしなければ
パクソスラフトとかが出てくる気がするんですけど
スピーカー 2
いやーそうですね
スピーカー 1
頑張りましょう
スピーカー 2
名前だけは何度も見てたんで
ようやく深掘りできるっていうので
楽しみです
頑張りましょう
頑張りましょう
今日はありがとうございました
では引き続き次回以降もよろしくお願いします
また個別にインタビューもさせてください
スピーカー 3
よろしくお願いします
スピーカー 2
今日はこの辺で終わりにします
ありがとうございました
スピーカー 1
ありがとうございました