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

純国産データベースエンジンのアジャイルな開発のお話

 純国産データベースエンジンのアジャイルな開発のお話

ScrumFestSappro2022の発表資料

Yuki Sakaguchi

November 09, 2022
Tweet

More Decks by Yuki Sakaguchi

Other Decks in Technology

Transcript

  1. update update Copyright © 2022 WingArc1st Inc. All Rights Reserved.

    ウイングアーク1st 株式会社 ソフトウェアプロセス&品質改善部 坂口祐樹 November 4, 2022 純国産データベースエンジンの アジャイルな開発のお話
  2. page No. page No. 2 ソフトウェアプロセス&品質改善部 DEQIグループ 坂口 祐樹 Yuki

    Sakaguchi • 札幌生まれ、札幌育ち、北広島在住 • Scrum Fest Sapporo 2022運営メンバー • 仕事 • Dr.Sum開発、検証一筋 • QAマネジメント • QAエンジニア • プライベート • 子供と野球練習、野球審判 • 家族とキャンプ、夜は焚き火 • 好きなもの • スープカレー
  3. page No. page No. 3 Copyright © 2022 WingArc1st Inc.

    All Rights Reserved. 01 本発表について 02 純国産データベースの開発プロセス 04 CI/CD 05 まとめ INDEX 03 自動テスト
  4. page No. page No. 5 Copyright © 2022 WingArc1st Inc.

    All Rights Reserved. 本発表について • データベース開発ってこんなやり方をしているんだ • 協力しながら開発するのは大事 • 自動テスト無いと開発できないよね お話しする内容 お話ししない内容 ゴール • データベース開発ってどうやっているの? • 開発期間が⾧い製品を開発するための工夫 • スクラム関連 本発表 • 質問は随時Discordでお願いします 発表後に回答させていただきます
  5. page No. page No. 開発プロセスの概要 Copyright © 2022 WingArc1st Inc.

    All Rights Reserved. システム テスト 要求 リリース 開発KickOff 資料 新製品 KickOff 仕様書 検証 実装 コンセプト ビジョン 目玉機能 ステークホルダーに 新製品の概要を レビュー 要求の積み上げを 繰り返す ×N 開発フェーズ 検証フェーズ KickOffからリリースまで1~1.5年
  6. page No. page No. 9 Copyright © 2022 WingArc1st Inc.

    All Rights Reserved. 要求とチーム チケットやプロジェクトなどの 単位を『要求』という言葉で まとめている。 要求毎にチームが作られる。 そのチームが実装から 検証までを担当する。 1回のリリースで50前後の要求が 実装される。 要求1 要求2 要求3
  7. page No. page No. チーム体制 Copyright © 2022 WingArc1st Inc.

    All Rights Reserved. Dr.Sum開発グループ 14名* QAグループ 6名 要求Xチーム (仮想チーム) 要求の内容や規模に合わせて、 開発グループ、QAグループから 適切な人員を割り当てている * 2022/04時点
  8. page No. page No. 開発リーダー チーム内の役割 役割 開発 作業 設計・仕様決め

    実装者 QE(SET) QA 開発チーム QAチーム 検証 作業 Copyright © 2022 WingArc1st Inc. All Rights Reserved. 仕様レビュー 設計・仕様決め (設計・仕様決め) 仕様レビュー開催 仕様レビュー (設計・仕様決め) 仕様レビュー 仕様書作成 実装 検証観点レビュー 検証観点レビュー開催 検証観点作成 検証項目作成・実施 検証観点レビュー 検証結果確認 検証観点メモ作成 組織図上の 所属 テストフレームワーク作成 開発チーム QAチーム
  9. page No. page No. 要求に対する開発プロセス ・要求に対する実現方法検討 ・設計、仕様の考案 ・テスト自動化可否の確認 ・自動化のための機能追加 ・ステークホルダーに

    設計・仕様案を共有 ・検証方針を決める ・QE(SET)、QA担当を 決める Copyright © 2022 WingArc1st Inc. All Rights Reserved. R&D プロトタイピング 仕様検討 要求 KickOff 仕様作成 仕様レビュー 実装 検証観点 レビュー 開発 検証実施 検証結果 自動テスト資産 システム テスト実施 ・観点の優先度を設定 ・実施フェーズを決める ・仕様書作成時に実装者視点の 検証のキモを記載 ・開発、QA以外に マニュアル、保守チームも参加 ・「開発フェーズ で実施対象」 とした検証項目 ・「検証フェーズで 実施対象」 とした検証項目 開発 フェーズ 検証 フェーズ
  10. page No. page No. 品質の作り込み Copyright © 2022 WingArc1st Inc.

    All Rights Reserved. R&D プロトタイピング 仕様検討 要求 KickOff 仕様作成 仕様レビュー 実装 検証観点 レビュー 開発 検証実施 検証結果 自動テスト資産 そのままリリースしても問題ない品質まで開発時に作り込む QAメンバー リリースしても問題ない品質となっていることを確認 システム テスト実施 開発メンバー 開発 フェーズ 検証 フェーズ 開発支援 ・開発進捗を押し上げる ・QAのナレッジ共有 検証支援
  11. page No. page No. 製品の構成 Intranet / Cloud Dr.Sum Data

    Funnel Dr.Sum Cloud Hub Dr.Sum Server Message Broker Funnel Server 全体 - IoT機器からのデータ取得、データ加工 - 他プロダクトへのPublish HTTP Agent Web Console Secure Transport Server Secure Transport Bridge Server モニタリング DS Script - データ投入 - データ加工 SQL - データ取得 - データ更新 全体 - ユーザー管理 - サーバー管理 In-Memory Server Python連携 - AIや機械学習 インメモリ永続 - データの永続化 ダッシュボード アラート IoT Device CSV/JSON HTTP(S) MQTT(S) MQTT(S) MQTT Publish Command 管理ツール - EnterpriseManager - ScriptEditor Copyright © 2022 WingArc1st Inc. All Rights Reserved. HTTP(S) HTTP over TLS Secure Transport Agent クライアント端末 Enterprise Manager Web Browser
  12. page No. page No. 16 Copyright © 2022 WingArc1st Inc.

    All Rights Reserved. 管理 ツール Java, .NET JDBC, ODBC 共通内部 API UI API Server Dr.Sum Serverの構成 バッチ コマンド Dr.Sum Server データベースエンジン SQL DS Script ユーザー管理・システム管理 インポート・エクスポート In-Memory Server 高速集計 Python連携 Dr.Sum Server DS Script - データ投入 - データ加工 SQL - データ取得 - データ更新 全体 - ユーザー管理 - サーバー管理 In-Memory Server Python連携 - AIや機械学習 インメモリ永続 - データの永続化 管理ツール - EnterpriseManager - ScriptEditor
  13. page No. page No. 17 Copyright © 2022 WingArc1st Inc.

    All Rights Reserved. In-Memory Serverの自動テスト 管理 ツール Java, .NET JDBC, ODBC 共通内部 API UI API Server バッチ コマンド リグレッションテスト:30,000ケース(Google Test) 直接In-Memory Serverのライブラリを通して、 SQL実行する結合レベルのテスト UnitTest:10,000ケース(Google Test) ※Dr.Sum Serverとの合算 - In-Memoryを構成するクラスやライブラリに 対する単体+αレベルのテスト - Python連携のエミュレータに対するテスト Dr.Sum Server データベースエンジン SQL DS Script ユーザー管理・システム管理 インポート・エクスポート In-Memory Server 高速集計 Python連携
  14. page No. page No. 18 Copyright © 2022 WingArc1st Inc.

    All Rights Reserved. Dr.Sum Serverの自動テスト 管理 ツール Java, .NET JDBC, ODBC 共通内部 API UI API Server バッチ コマンド Dr.Sum Server データベースエンジン SQL DS Script ユーザー管理・システム管理 インポート・エクスポート In-Memory 高速集計 インメモリ永続 Python連携 E2Eテスト:1,300ケース(TestComplete) 画面からの権限制御の妥当性確認を主眼に置いたテスト リグレッションテスト(コマンドバッチ) インポートなどのコマンドバッチに対するテスト API Test(Java、.NET):3,400ケース(xUnit) 集計リクエスト結合テスト:100,000ケース(自作ツール) GUIツールからの集計リクエストを想定したテスト リグレッションテスト(SQL):80,000ケース(自作ツール) ・SQLの実行結果の妥当性確認 ・データ加工やバッチ処理をかけるスクリプト機能の 動作確認 Dr.Sum Server開発に欠かせない命綱のような存在 Unit Test:10,000ケース(Google Test) ※In-Memory Serverとの合算 Dr.Sumを構成するクラスやライブラリに 対する単体+αレベルのテスト
  15. page No. page No. 19 Copyright © 2022 WingArc1st Inc.

    All Rights Reserved. 命綱の作り方 検証観点 Dr.Sum テスト スクリプト 他RDB 結果比較 実行結果 検証観点 テンプレート 類似機能の 不具合 特異な 振る舞いの機能 設計、実装の考慮 (内部閾値や ロジック分岐) 密接な機能の 組み合わせ 過去のイタイ 不具合 秘伝のタレ これがすべて 検証データ
  16. page No. page No. 21 Copyright © 2022 WingArc1st Inc.

    All Rights Reserved. 自動テストの実行 • 各自動テストの実行 • リグレッション(BVT)の分散実行 develop/作業ブランチのビルド • ユニットテスト、静的解析 • コンパイル、リンク • パッケージング • インストーラーイメージ作成 Bitbucketとの連携 • ビルド、自動テスト結果をBitbucketに通知 • Pull requestマージ時にWebhookを受け取って、自動でビルド Jenkinsの役割
  17. page No. page No. 22 Copyright © 2022 WingArc1st Inc.

    All Rights Reserved. 自動テストの実行 Dr.Sum Server リグレッションテスト 命綱の80,000ケース
  18. page No. page No. 23 Copyright © 2022 WingArc1st Inc.

    All Rights Reserved. 自動テストの実行 Dr.Sum Server API Test In-Memory Server リグレッションテスト Jenkinsを自動テストのエントリーポイントにすることで、 いつでも、誰でも実行できる
  19. page No. page No. 24 Copyright © 2022 WingArc1st Inc.

    All Rights Reserved. 自動テスト実行(ジョブのビルドパラメータ) 開発、QA問わず、 任意のビルドに対して、任意のテストケースブランチで 自動テストを実行できる テスト対象のビルド テストケースのブランチ
  20. page No. page No. 25 Copyright © 2022 WingArc1st Inc.

    All Rights Reserved. develop/作業ブランチのビルド ①ブランチをpush ②ビルドジョブ実行 ③ソースコード取得 ④ビルド/BVT ⑤ビルド/BVT結果通知 BVT(Build Verification Test: ビルド検証テスト) 新たに作成した各ビルドに対して、完全性を確認し、主要な機能性、安定性、 および試験性を検証する自動化テストのセット。 Dr.Sum開発は命綱(80,000ケース)をBVTとして実施。 ISTQB Glossary(https://glossary.istqb.org/jp/term/build-verification-test-2)
  21. page No. page No. 26 Copyright © 2022 WingArc1st Inc.

    All Rights Reserved. develop/作業ブランチのビルド(ビルドジョブのパラメータ) ビルド対象のソースコード 実行するBVTのテストケース
  22. page No. page No. 27 Copyright © 2022 WingArc1st Inc.

    All Rights Reserved. Bitbucketとの連携(Bitbucketへのビルド/BVT結果通知) BVT成功→PR推奨条件 ビルド成功→PR必須条件 マージしたらビルドできない/テストが動かないを事前に防ぐ
  23. page No. page No. 28 Copyright © 2022 WingArc1st Inc.

    All Rights Reserved. 命綱を全部回すのに240時間かかる?!よろしい、分散実行だ! ・ ・ ・ 50ノード マルチ構成プロジェクトで実行ジョブを作成 各ノードにはラベルを付与
  24. page No. page No. 29 Copyright © 2022 WingArc1st Inc.

    All Rights Reserved. 全部流しても240時間→6時間弱まで高速化
  25. page No. page No. 31 Copyright © 2022 WingArc1st Inc.

    All Rights Reserved. まとめ 開発は要求単位で開発している • 要求毎にチームを作って、開発から検証まで担当 • チームは開発グループとQAグループから少なくとも1名はそれぞれ所属 • 要求は同時進行する 自動テスト • 開発の命綱 • いくつものデグレードを発見する実績 CI/CD(Jenkins) • 重要な開発インフラ これなくして開発成り立たず • ビルドだけではなく、自動テストのエントリーポイント、分散実行インフラ