Upgrade to Pro — share decks privately, control downloads, hide ads and more …

アンチパターンだらけ!?Cassandraを基盤とした大規模業務アプリケーションと2DX実現の裏側

 アンチパターンだらけ!?Cassandraを基盤とした大規模業務アプリケーションと2DX実現の裏側

Broadleaf Co., Ltd.

December 02, 2022
Tweet

More Decks by Broadleaf Co., Ltd.

Other Decks in Technology

Transcript

  1. Copyright © Broadleaf Co., Ltd. All Rights Reserved. 1 本日のテーマ

    • ブロードリーフのビジネスと今後の成長戦略 • 車にまつわるデータの話 • Broadleaf Cloud Platform(BCP)について バックグラウンド • 試行錯誤の開発 • Cassandra採用で得られたこと Cassandra採用の経緯 Cassandra採用で起こったこと • 要件と判断基準
  2. Copyright © Broadleaf Co., Ltd. All Rights Reserved. 2 自己紹介

    名前: 廣瀬 亮輔 会社: 株式会社ブロードリーフ 所属: 先端技術開発室 基盤開発課 役割: • サービス基盤開発(共通ライブラリやフレームワーク開発) • 新規事業系サービス開発 • terraformでのインフラ構築 • CI/CDパイプライン構築 • システム運用トラブル対応 • 部署横断的な技術支援 基本は開発レイヤーですが、インフラ構築や開発環境改善、 CI/CD整備をはじめとする運用改善、トラブル対応も含めて 幅広く対応しています。 @hi_rose39
  3. Copyright © Broadleaf Co., Ltd. All Rights Reserved. 3 ブロードリーフについて

    会社名 株式会社ブロードリーフ 事業内容 「Broadleaf Cloud Platform」を基盤として、 SaaS型クラウドサービス、マーケットプレイス型 サービスを提供。 自動車アフターマーケット業界をはじめとする モビリティ産業を中心に、機械工具店、携帯電 話販売代理店、旅行代理店など3万社以上に システムを提供。 代表者 代表取締役社長 大山 堅司 上場市場 東京証券取引所 プライム市場(3673) 業種 情報・通信業 本社所在地 東京都品川区東品川4-13-14 グラスキューブ品川8F 創業/設立 2005年12月/2009年9月 国内拠点 営業27拠点/開発3拠点 資本金 7,148百万円(連結) 主な子会社 株式会社タジマ 事業年度 1月1日から12月31日まで 公式SNS ブロードリーフ 広報 ブロードリーフIR @マニアな世界(公式)
  4. Copyright © Broadleaf Co., Ltd. All Rights Reserved. 4 ブロードリーフのビジネス

    自動車アフターマーケット産業 主要業種 青い吹き出し部分が 現在ブロードリーフが主に サービスを展開している業種
  5. Copyright © Broadleaf Co., Ltd. All Rights Reserved. 5 ブロードリーフのビジネス

    ソフトサービス データベース Broadleaf Cloud Platform … 部品商 鈑金 整備 プラットフォームサービス マスタデータ 取引データ ソフトユーザー 3rdパーティ コンシューマー 整備業・部品商他 コンシューマー 金融業者・ システム会社他 (サービスプロバイダー) 物流 MaaS 金融 受発注 … API/SDK 成長戦略① クラウドサービスの 浸透 成長戦略② サービスの拡張 Digital Transformation Data Exchanger データを中心としてフォーカス ブロードリーフが目指す成長戦略。
  6. Copyright © Broadleaf Co., Ltd. All Rights Reserved. 6 ブロードリーフのビジネス

    Broadleaf Cloud Platform(BCP)上の クラウドサービスを起点として、2DX(ツーディーエックス)を推進。 DX デジタル トランスフォーメーション DX データ エクスチェンジャー お客さまのデジタルトランスフォーメーション(DX)を推進 新たな価値創造につながる事業基盤の構築に貢献 『Broadleaf Cloud Platform』上で データを収集・分析し、新たな価値を創造し続ける ※「2DX」(ツーディーエックス)は、デジタルトランスフォーメーションとデータエクスチェンジャーという二つのDXを掛け合わせた当社独自のネーミングであり、 当社の登録商標です。
  7. Copyright © Broadleaf Co., Ltd. All Rights Reserved. 7 車にまつわるデータのお話

    国内の軽自動車を含む乗用車の台数は、平均使用年数の向上もあり 年々増加傾向。現在は6千万台を超える。 出典: https://www.airia.or.jp/publish/statistics/number.html https://recruit.broadleaf.co.jp/new-grad/business/index.html
  8. Copyright © Broadleaf Co., Ltd. All Rights Reserved. 8 車にまつわるデータのお話

    そんな自動車に関してブロードリーフが提供している主要カタログデータ。 • 車両情報(型式・グレード・スペック) • 48万点以上 • 車の部品情報 • 5億3000万点以上 • 1台の車を構成する部品は3万点にも上る • 部品交換や整備作業情報 • 1億1810万点以上 価格改定や仕様変更といった細かい情報も含めると、 主要なカタログデータだけで20億点以上。 出典: https://sfc.blcloud.jp/pr/product/maintenance.html https://www.broadleaf.co.jp/products/parts/pmns/
  9. Copyright © Broadleaf Co., Ltd. All Rights Reserved. 9 車にまつわるデータのお話

    こうしたカタログデータを元に日々の整備業務などが行われる。 例えば自動車を整備する場合に発生するデータのイメージ。 車両情報 • 型式 • 年式 • グレード • Etc.. 整備記録 • XX年XX月XX日 • スパークプラグ • 交換作業 • オイル交換 • : 車両情報 部品受注・売上 • XXX • XXX 車両情報 部品発注・仕入 • XXX • XXX カーオーナー 整備工場 部品商 部品メーカー 車両情報 約1,682万台(累積数千万件) 整備・部品流通 年間数億件(推定)
  10. Copyright © Broadleaf Co., Ltd. All Rights Reserved. 10 車にまつわるデータのお話

    膨大なデータが蓄積されていくシステム環境にある。 約33,000社以上にシステムの提供 約1,682万台 約4台に1台以上の車両データを蓄積 国内自動車アフターマーケット システムシェアNo.1 ※1: 2018年から過去2年間に登録・更新された車両を対象にアクティブな車両情報として集計。 ※2: 貨物, 乗合車, 特殊用途者, 二輪車を除いた乗用車を元に算出。 ※2 ※1
  11. Copyright © Broadleaf Co., Ltd. All Rights Reserved. 11 車にまつわるデータの話

    さらに今・・・ 自動車業界は「100年に一度の大変革」 • EV(電気自動車)やFCV(燃料電池車)への転換 • 先進技術化 • 自動運転 • 新しいセンサー類、新しい整備作業 • コネクティッド • 新しい移動の概念 • MaaS • シェアリング • Etc. →今後も取り扱うデータは縦にも横にも増え続ける。
  12. Copyright © Broadleaf Co., Ltd. All Rights Reserved. 12 Broadleaf

    Cloud Platform(BCP)について 自動車業界は専門分野に応じた業種が存在しており、ブロードリーフ は各業種に特化したシステムを提供。 • 整備 • 鈑金 • 車両販売 • ガラス • 電装 • ラジエーター • 新品部品 • リサイクル部品 • etc
  13. Copyright © Broadleaf Co., Ltd. All Rights Reserved. 13 Broadleaf

    Cloud Platform(BCP)について BCP構築前の従来商品は、基本的にServer-Clientシステム構成。 商品ごとに異なるシステム構成が存在しており、RDBMSインスタンスが 独立して分かれた状態。 商品構成 A お客さま環境 弊社オンプレ環境 DB Server AP Server Client Apps 商品構成 B お客様環境 DB Server AP Server Client Apps AWS DB Server AP Server
  14. Copyright © Broadleaf Co., Ltd. All Rights Reserved. 14 Broadleaf

    Cloud Platform(BCP)について 従来の業務を効率化するための事務処理的なシステムから、 クラウド型のAPIでリアルタイムにつながるトータルマネジメントシステム の形成が必要。 従来ソフト『.NSシリーズ』 =事務処理システム 見積・請求書発行 顧客管理など クラウドソフト『.cシリーズ』 =トータルマネジメントシステム 会計税務 CRM 販売在庫管理 人事労務 グループウェア API API API API API
  15. Copyright © Broadleaf Co., Ltd. All Rights Reserved. 15 Broadleaf

    Cloud Platform(BCP)について 様々なものを「つなげる」。発生したデータを中心としたビジネスを展開す るために統合した一つのビジネスプラットフォームを構築する必要が あった。 Broadleaf Cloud Platform マイクロモジュール群 データベース 自社製品SaaS 3rd Party Program Etc.
  16. Copyright © Broadleaf Co., Ltd. All Rights Reserved. 16 Broadleaf

    Cloud Platform(BCP)について 2018年10月にサービス提供を開始。 現在進行形で機能拡張や新しいサービスを提供。 2018年10月 BCP及び 整備業向けSaaS 「Maintenance.c」 提供開始 Future! 2020年11月 3rd Party Program ShelfAP社による 車両販売SaaS 「ShelfAP」 提供開始 2021年9月 整備業向けSaaS拡張 「SS+」及び 鈑金業向けSaaS 「Repair.c」提供開始 2021年10月 整備システム 機能拡張 「スーパー検査員」 提供開始 2022年5月 整備システム 機能拡張 「電帳.DX」 提供開始 上記は大きなリリースのみの抜粋。 月に最低でも数回以上の機能リリースやデータリリース。
  17. Copyright © Broadleaf Co., Ltd. All Rights Reserved. 17 Broadleaf

    Cloud Platform(BCP)について BCP上の多数のトランザクション処理や、自動車を中心とした大量の データを蓄積して、データを中心としたビジネスを行うことを可能にする ために、基盤となるメインデータベースとしてCassandraを採用。 Node6 Node1 Node2 Node5 Node4 Node3 DC1
  18. Copyright © Broadleaf Co., Ltd. All Rights Reserved. 18 Cassandra採用の経緯

    分散していた情報をBCPへ集約することが必要。 商品構成 A お客さま環境 弊社オンプレ環境 DB Server AP Server Client Apps 商品構成 B お客様環境 DB Server AP Server Client Apps AWS DB Server AP Server オンプレ+AWSだけでも数十のRDBMSインスタンス、お客様環境配置を含めると数千インスタンス →RDBMSのままBCP上へ統合するにはコスト増とスケールの関係上限界がある Broadleaf Cloud Platform
  19. Copyright © Broadleaf Co., Ltd. All Rights Reserved. 19 Cassandra採用の経緯

    こうしたプラットフォームを構築するにあたり、技術選定時に データベースに求められた判断基準となる主要な要素。 • リニアにスループットがあげられるもの • 大量データにおけるCRUDが速いもの • 簡単に分散できるもの • レプリケーションが可能なもの • コストが爆発していかないもの • 運用・開発しやすいもの
  20. Copyright © Broadleaf Co., Ltd. All Rights Reserved. 20 Cassandra採用の経緯

    当時、総合的に考えて実現するための選択肢がCassandra。 リニアにスループットがあがるもの 簡単に分散できるもの コストが爆発していかないもの レプリケーションが可能なもの (大量データにおける)CRUDが速いもの RDBMS Cloud Datastore RDBMS Cloud Datastore RDBMS Cloud Datastore RDBMS Cloud Datastore RDBMS Cloud Datastore RDBMS Cloud Datastore 運用・開発しやすいもの Cloud Spanner Cloud Spanner Cloud Spanner Cloud Spanner Cloud Spanner Cloud Spanner Cassandra Cassandra Cassandra Cassandra Cassandra Cassandra
  21. Copyright © Broadleaf Co., Ltd. All Rights Reserved. 21 Cassandra採用の経緯

    こうしてApache Cassandraをデータベースとした開発がスタート。 Hi! Node6 Node1 Node2 Node5 Node4 Node3 DC1 得たもの • マスターレス • スケーラビリティ • 可用性 • レプリケーション性 • OSSの自社運用によるコストメリット • CQLによるSQL likeなデータ参照
  22. Copyright © Broadleaf Co., Ltd. All Rights Reserved. 22 試行錯誤の開発

    これまでRDBMSで開発してきた私たちによる、初めてのNoSQLを データベースとした開発は試行錯誤の連続。 Node6 Node1 Node2 Node5 Node4 Node3 DC1 ・Partition Key ? ・Cluster Key ? ・Secondary Index ? ・Custom Table ? ・SSTable? ・tombstone? ・ALTER TABLEでOOM!? ・XMS, XMX適正値? ・GC? ・Compaction? ・repair? ・CQL? ・cqlsh? ・ALLOW FILTERING? ・ConsistencyLevel? ・結果整合性? ・IF NOT EXISTS? Oh...
  23. Copyright © Broadleaf Co., Ltd. All Rights Reserved. 23 試行錯誤の開発

    • 当時社内もパートナーさんも、ほとんどが「Cassandra is 何?」 • 知見者がシステム基盤を開発するコアメンバーくらい • コアメンバーへの負荷集中 • メンバーが入れ替わるたびに知見リセット • パートナーさん含めてピーク時は全体で数百人単位の開発 問題: カサンドラ ワカル ヒト いない問題 • ある程度は仕組みでカバー可能 • ローカル環境やテスト環境構築の自動化 • FrameworkとしてDBアクセス層を分離実装して意識させない等 • データ設計や、直接データ操作したい等、カバーできない部分は地道に対応 • DA/DBAやテックリードの組織的配置とレビュープロセス • 資料化、定期的な周知 対策: 仕組み+地道に対応
  24. Copyright © Broadleaf Co., Ltd. All Rights Reserved. 24 試行錯誤の開発

    問題: 柔軟な検索がしたい • 柔軟な検索処理のためにElasticsearchを追加 • CassandraのTriggerで更新データをKafkaを通して非同期登録 対策: 検索用データストアを配置 API 伝票 顧客属性での絞り込み 部品属性での絞り込み 車属性での絞り込み 日付毎での絞り込み 汎用ラベルでの絞り込み • 検索がキー設計に依存 • パッケージ型の汎用業務サービス に必要な柔軟な検索が困難 • インデックスや検索テーブルは 更新速度に影響 Cassandra Kafka Kafka Consumer Elasticsearch Write/Read Write Write Write Read
  25. Copyright © Broadleaf Co., Ltd. All Rights Reserved. 25 試行錯誤の開発

    問題: テーブル設計問題 • 設計パターンの展開 • やってはいけないアンチ設計パターンも展開 • DA/DBAやテックリードによるレビューの徹底 • リファクタリング • tombstone_compaction_interval, gc_grace_seconds 等、設定値の調整 対策: 地道な対応 • 不適切なキー設計によるパフォーマンス低下&負荷増大 • Partitionキーでデータ配置が偏る • ALLOW FILTERING利用 • テーブル数増大によるMemory Pressure • tombstone(墓石)発生への考慮不足 • データの更新・削除=tombstoneの発生 • 大量の更新削除が発生するとデータスキャン時に負荷増大&エラー発生
  26. Copyright © Broadleaf Co., Ltd. All Rights Reserved. 26 試行錯誤の開発

    問題: トランザクションがない問題 • まずはLWTを使用せずに済む設計を考える • LWTも書込速度に影響、キー設計によっては衝突の可能性 • 非正規化等により1回の更新で完結 • 例)1テーブルにヘッダと明細List構成 • アプリケーションでの2相コミット実装 • それでもRDBの再現は不可能 • RDBが最適な箇所にはRDBを組み合わせて使用 対策: まずは設計最適化。加えてアプリケーション実装+RDBの利用 • CassandraにあるのはLight Weight Transaction(LWT) • 単一レコードに対しての楽観的排他と過半数ノード更新による結果整合性 • APIがマイクロサービス実装であるため、分散トランザクションの考慮も必要
  27. Copyright © Broadleaf Co., Ltd. All Rights Reserved. 27 試行錯誤の開発

    問題: Java固有の問題 • XMS, XMX, GC設定値の検証と適切な設定 • 運用上はJVMの監視が必要 • 本番環境、システムテスト環境にDatadogを配置してAPMで総合的に監視 • 重たいクエリやスキーマ変更は要事前検証 • ローカルDocker → 検証環境 → 本番環境 対策: 監視と検証 • CassandraはJavaベース • XMS, XMXといったメモリチューニングやGC関連の設定が必要 • OutOfMemoryExceptionが発生することもある • 巨大なテーブルにALTER TABLE → OOM → テーブル破損・・・(開発環境) • GC発生状況にも注目が必要
  28. Copyright © Broadleaf Co., Ltd. All Rights Reserved. 28 苦労話が続いていますが

    こういった問題直面と対策を何度も続けてきて 今のサービス改良と新機能リリースを継続的にできる状況に たどり着きました。 もう完璧! ・・・とはまだまだいきませんが、社員もパートナーさんも含めて 「今だったらこういう風に作れるよね」 といったやり取りも今はあったりして地道にやってきた成果が 確実に出てきていると実感しています。
  29. Copyright © Broadleaf Co., Ltd. All Rights Reserved. 29 Cassandra採用により得られたこと

    分析用にデータセンターレプリケーションをオンラインで追加。 ユーザー環境へ影響を与えずデータ分析や集計が可能に。 Node6 Node1 Node2 Node5 Node4 Node3 DC1 Node6 Node1 Node2 Node5 Node4 Node3 DC1_Analyze replication ユーザーリクエスト Read/Write 分析リクエスト Read ノードを立てて・・・ alter keyspace XXXXXX with replication={'class': 'NetworkTopologyStrategy', ‘dc1': '3', ‘dc1_analytics' : ‘3’} nodetool rebuild XXXXXX nodetool repair XXXXXX
  30. Copyright © Broadleaf Co., Ltd. All Rights Reserved. 32 その先へ向けた取り組み

    問題: 残る技術的負債 • 意思決定に必要なメンバーで実行力のあるチーム構築 • 上位層決定権者、技術有識者、各チーム中心人物 • タスクフォースチーム駆動で課題解決 • 課題に応じてメンバー選定した子チーム作成 • 各チーム中心人物を通じた残課題の再周知 対策: 組織横断「タスクフォース」チームの立ち上げ 対策を策定しながらの開発であったためリスクのある負債残 • 影響範囲の広い問題 • 納期や人員の関係上、対策が行きわたらず生まれてしまったもの
  31. Copyright © Broadleaf Co., Ltd. All Rights Reserved. 33 Apache

    Cassandraへの専門家によるサポート Apache CassandraのOSS開発を中心となって行っている Datastax社の専門家サポートサービス「Datastax Luna」。 ブロードリーフでは本サポートを利用することで 今後のプラットフォーム拡大やデータ活用を推進。 提供サービス例 • Cassandra運用のヘルスチェック • ブロードリーフメンバーのトレーニング • コンサルティング、問合せ • Etc.
  32. Copyright © Broadleaf Co., Ltd. All Rights Reserved. 34 結び

    ブロードリーフでは、私たちと同じくCassandraを使っていてノウハウ交 換したいといった方や、私たちが扱うデータや3rd Party Programに興 味を持ったパートナーさん大歓迎!
  33. Copyright © Broadleaf Co., Ltd. All Rights Reserved. 35 結び

    BCPの拡張や、従来商品からの移行は現在も進行形。 ソフトウェアもそうですが、何より、ビジネス面でも技術面でも データを中心としたアプローチが非常に重要。 DX デジタル トランスフォーメーション DX データ エクスチェンジャー 2DXを推進し、データでユーザーであるお客様や、 その先のエンドユーザーへ提供できる価値を最大化させるため 今後も色々な問題と直面して解決しながら前進していきます。