Slide 1

Slide 1 text

分散システムの
 データ不整合に立ち向かうため
 気付けるようにした
 みんなのマーケット株式会社
 エンジニア / 片山
 
2023-04-17

Slide 2

Slide 2 text

全体図 1 データ不整合を slack に通知する様な仕組みを整えました。 
 問題を発見した際、チェック用のクエリを追加することで再発にいち早く気付けるようになりました。 


Slide 3

Slide 3 text

目次 2 ● くらしのマーケットは分散システム ● 分散システムの最大の敵はデータ整合性の保証 ● 重要度の高いデータ ● 不整合に気づけ無いのは NG ● データ整合性チェックを仕組み化 ● 全体図 ● 運用していて感じたこと ● みんなのマーケットの紹介

Slide 4

Slide 4 text

くらしのマーケットはマイクロサービスを意識したアーキテクチャを採用しています。 
 一つの処理を実行するだけでも、複数のサービスや非同期のワーカーが連携する分散システムです。 
 くらしのマーケットは分散システム 3

Slide 5

Slide 5 text

分散システムはモノリシックアプリケーションと比較すると可動部品や通信が非常に多いため、 
 インフラ的な問題で処理が失敗しやすいです。 
 分散システムの最大の敵はデータ整合性の保証 4

Slide 6

Slide 6 text

モノリシックアプリケーションでは単一のトランザクションにすることでアトミックに処理を行えます。 
 分散システムではトランザクションをまとめることが非常に難しく、サービスを跨ぐデータ更新に失敗するとデータ不整合 になる場合があります。
 分散システムの最大の敵はデータ整合性の保証 5 👆データ不整合発生 !!

Slide 7

Slide 7 text

データ不整合はあってはいけませんが、破損しても影響がほとんどでないようなデータはあると思います。 
 逆に、予約や決済に関わるような非常に重要なデータが破損した場合は、急いで修正する必要があります。 
 重要度の高いデータ 6

Slide 8

Slide 8 text

不整合は早く根本的な対策をすべきですが、開発リソースは有限なため後回しになってしまう場合があります。 
 
 データの不整合はいつやってくるかわかりません。 
 そんな中、現在不整合があるのか無いのかわからないのは最悪です。 
 不整合に気づけ無いのは NG 7

Slide 9

Slide 9 text

時間に追われている時でも、SQL を書くだけで簡単に整合性チェックを追加できる仕組みを整えました。 
 これは定期的に不整合データを検索しslackへ通知するというシンプルなものです。 
 データ整合性チェックを仕組み化 8 ※ 複数のDBに跨ったチェックは少し工夫が必要です(例えば、事前に1つのDBにデータを集めるなど)

Slide 10

Slide 10 text

全体図 9 データ不整合を slack に通知する様な仕組みを整えました。 
 問題を発見した際、チェック用のクエリを追加することで再発にいち早く気付けるようになりました。 


Slide 11

Slide 11 text

運用していて感じたこと データ不整合に立ち向かう第一歩としてチェック自動化の仕組みを作るのはかなり有効だと思います。 
 これまで、1年以上運用してきた中でいくつか知見が得られました。 
 
 ● slack へ通知することで過去の対応を検索しやすい 
 ● slack への通知はチェック項目ごとにスレッドを分けると調査の際に非常に便利 
 ● slack へ通知する量が多いと見切れてしまう。最初の方に不整合件数を表示しておくと増減が分かる 
 ● 不整合データの通知は JSON などの形式が取り扱いやすい 
 ● 不整合が解消されるまで毎日通知される様にすることで対応漏れが無くなる 
 ● 根本的対策後もチェックを残しておくことで、対策の有効性の確認になる 
 ● 分散システムでは正常時でも一時的に不整合に見える状態になるためリトライは必須 
 ● 仕組みを本番環境から出来るだけ切り離すことで、気軽にチェックを追加できる 
 10

Slide 12

Slide 12 text

書いた人 11 2020年 みんなのマーケットに新卒入社 決済チームでバックエンドの開発や、 SRE としてサイトを安定的に動か すための取り組みをしています。 片山 エンジニア 以降のスライドはみんなのマーケットの会社紹介になります!!

Slide 13

Slide 13 text

会社について 12 会社名 みんなのマーケット株式会社 Minma, Inc 本社 東京都渋谷区道玄坂 1丁目10-5 渋谷プレイス 10F 設立 2011年1月17日 代表者 浜野 勇介 従業員数 120名超(2021年10月末現在) 事業内容 オンラインマーケットプレイス 「くらしのマーケット」の開発と運営

Slide 14

Slide 14 text

私たちのプロダクト 13 生活の「困った」を解決できるプロが集まる プラットフォーム「くらしのマーケット」 頼める出張サービスの種類 事業者の数 300種類以上!
 70,000事業者を突破!
 エアコンクリーニング、引越し、庭木剪定..などの生活関連サービス 日本全国の事業者が登録、売上を伸ばしている

Slide 15

Slide 15 text

私たちのビジョン 14 正直者が馬鹿を見ない世界を作る
 テスト前に必死で勉強したのに、先輩から過去問をもらっていた友達が自分よりいい成績を取った…
 会社のことを思って地味な仕事も引き受けてきたのに、上司に気に入られている同期が昇進した…
 
 世の中では、不条理なことが起きます。
 でも、悪賢い人が得をして、正直な人が損をする世界なんて嫌です。
 
 江戸時代の思想家、石田梅岩は「二重の利を取り、甘き毒を喰ひ、自死するようなこと多かるべし」
 つまり、悪賢い者には必ず報いがあると説きました。
 さらに「実の商人は、先も立ち、我も立つことを思うなり」とも表し、
 まず相手の利害を優先し、その結果として自身も利益を得ることが商人の本文だと説きました。
 
 私たちは、先も立ち、我も立つ、正直な人が報われる世の中を作ります。


Slide 16

Slide 16 text

私たちのミッション 「人と人」が関わるサービスを、
 安心して取引できる仕組みを提供する
 私たちは、くらしのマーケットを通じて、
 世の中のあらゆるサービスをインターネットで安心して取引できる仕組みを提供していきます。
 インターネットでモノを買う時、みんなが楽天市場やAmazonを利用するように、
 サービスを買う時は、みんながくらしのマーケットを利用してくれる…そんな世界を目指します。
 
 多くのベンチャー企業が、自社の成長をアピールしますが、いちばん重要なことは、
 その会社がその時に「どれだけ成長しているか」ではなく、その会社が今後「どこまで成長できるか」です。
 
 みんなのマーケットは巨大な市場に挑んでいます。私たちと一緒に、大きく成長していきましょう。
 15

Slide 17

Slide 17 text

社会情勢の影響 事業は10年間継続して、成長している
 コロナ禍でも予約は伸び続けている 
 2020年4月の緊急事態宣言下では、一時は利用を控える動きも見られましたが、控える動き以上に Stay Homeの影響で、家で過ごす時間を快適するためのサービス利用が増加しています。 
 できてないことがたくさんある。まだない出張サービスも定義していく 
 現在は、事業成長の方法はわかっているが、人手が足りなく実行できていないことが多い状態で、今後の 伸びしろは大きいです。また、すでに世の中にある出張サービスだけではなく、出張サービスにすると便 利なものを私たちが出張サービスとして定義し、届けていくことも予定しています。 
 新型コロナウイルス 
 による影響
 長期の成長性
 16