JTF2020 G5 「理解して拡げる分散システムの基礎知識」

1
gonsuke777 @ora_gonsuke777

Opsから見たマイクロサービス化のメリット → 適度な粒度の可用性と拡張性 彡(゚)(゚) #JTF2020 #JTF2020G #JTF2020G5

2020-07-25 14:11:31
gonsuke777 @ora_gonsuke777

Tanenbaumさんの分散システム4つのゴール 彡(゚)(゚) #JTF2020 #JTF2020G #JTF2020G5

2020-07-25 14:12:46
gonsuke777 @ora_gonsuke777

AP が分割されていても、共有データベースだとマイクロサービスとは言えないのではないか? 彡(゚)(゚) #JTF2020 #JTF2020G #JTF2020G5

2020-07-25 14:14:22
not rogue @not_rogue

DBが共有されているなら(かつそれが拡張性に影響するなら)モノリス #JTF2020 #JTF2020G

2020-07-25 14:14:32
s.hiruta @web_se

データベースが単一、拡張性がない場合、ジョブキューとかで非同期でトランザクションされていても、マイクロサービスでない #JTF2020 #JTF2020G

2020-07-25 14:14:42
RyuichiWatanabe@gurasan @ryuichi_1208

完全なモノリスではなく中途半端なマイクロサービス。"マイクロサービスではない何か" 思い当たる節のある図だ。 #JTF2020 #JTF2020G

2020-07-25 14:15:05
H1karu SA1T0@しがないインフラエンジニア🐈 @hikkie13

database per serviceにすると 分散トランザクションの戦いが始まる #JTF2020

2020-07-25 14:15:14
gonsuke777 @ora_gonsuke777

DB をマイクロサービス毎に単純に分割すると、分散トランザクションの闘いが始まる。 彡(゚)(゚) #JTF2020 #JTF2020G #JTF2020G5

2020-07-25 14:15:16
gonsuke777 @ora_gonsuke777

Kafka を使ってみる……。この手の Streamingプロダクト を使う構成はまあ解るけど、Streamingプロダクト自体のSLAとか性能とかは問題にならないのかしら。 彡(゚)(゚) #JTF2020 #JTF2020G #JTF2020G5

2020-07-25 14:17:13
not rogue @not_rogue

マイクロサービスのSagaパターン #JTF2020 #JTF2020G

2020-07-25 14:17:15
gonsuke777 @ora_gonsuke777

Saga で補償トランザクションを実装 彡(゚)(゚) #JTF2020 #JTF2020G #JTF2020G5

2020-07-25 14:18:12
君津 @east_k1mitsu

これトランザクションなの? #JTF2020G

2020-07-25 14:18:18
gonsuke777 @ora_gonsuke777

モノリスでは DB に任せられたていた ACID を AP層 で再実装、辛そう……。 彡(-)(-) #JTF2020 #JTF2020G #JTF2020G5

2020-07-25 14:19:02
H1karu SA1T0@しがないインフラエンジニア🐈 @hikkie13

SagaではIsolationを満たせない。 対策としてCQRSが挙げられる。 #JTF2020

2020-07-25 14:20:46
gonsuke777 @ora_gonsuke777

Saga では Isolation(一貫性)が保証できない。トランザクションの途中の結果が見えてしまう。CQRS 等のもう一工夫が必要 彡(゚)(゚) #JTF2020 #JTF2020G #JTF2020G5

2020-07-25 14:20:52
don @domb_ri

Database per Serviceを実現しようとすると、分散トランザクションとの戦いが始まる・・・ →Sagaパターン×Kafkaを使って実現を目指す ・ACIDトランザクションをロールバック含めてアプリ側で実装 ・トランザクションを三種に分ける Go/No Go ・AtomicにWRITEが読めるように #JTF2020 #JTF2020G

2020-07-25 14:21:29
gonsuke777 @ora_gonsuke777

分散トランザクションの闘いはこれからだ!(ジャンプ並感 彡(゚)(゚) #JTF2020 #JTF2020G #JTF2020G5

2020-07-25 14:22:20
H1karu SA1T0@しがないインフラエンジニア🐈 @hikkie13

読んでみるか🤔 分散システム―原理とパラダイム アンドリュー・S. タネンバウム amazon.co.jp/dp/4894715562/… via @amazonJP #JTF2020

2020-07-25 14:23:00
gonsuke777 @ora_gonsuke777

Tanenbaumさん提唱の Scalability(Size, Geographycal) をもう一度考えてみる 彡(゚)(゚) #JTF2020 #JTF2020G #JTF2020G5

2020-07-25 14:23:29
gonsuke777 @ora_gonsuke777

マイクロサービスのローカルDBの拡張性をいかに確保するか? 彡(゚)(゚) #JTF2020 #JTF2020G #JTF2020G5

2020-07-25 14:24:29
gonsuke777 @ora_gonsuke777

方法1. リードレプリカ、参照性能をスケールする。同期にラグがあり、書込性能のスケールには限界有り。 彡(゚)(゚) #JTF2020 #JTF2020G #JTF2020G5

2020-07-25 14:25:53
id @ido_kara_deru

Lift&Shiftが流行ってますが,実際のところShiftには10年スパンを見ている,という話をどこかで聞きました #JTF2020 #JTF2020G

2020-07-25 14:26:56
gonsuke777 @ora_gonsuke777

方法2. Multi-Leader構成。シャーディングで振り分け(Vittesなど)。全てのノードで Read/Write(RACなど) 彡(゚)(゚) #JTF2020 #JTF2020G #JTF2020G5

2020-07-25 14:27:20
H1karu SA1T0@しがないインフラエンジニア🐈 @hikkie13

Oracle RAC いつもCache Fusion気になってマルチリーダーにしてないんだよなぁ😂 検証したけど要件満たせなくて。。 #JTF2020

2020-07-25 14:27:28