Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
純国産データベースエンジンのアジャイルな開発のお話
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Yuki Sakaguchi
November 09, 2022
Technology
770
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
純国産データベースエンジンのアジャイルな開発のお話
ScrumFestSappro2022の発表資料
Yuki Sakaguchi
November 09, 2022
More Decks by Yuki Sakaguchi
See All by Yuki Sakaguchi
コロナ到来から約2年半、リアルで開催していた新人向けスクラム研修が、フルリモート版に生まれかわり恒例コンテンツとなるまでの軌跡
ysaka
0
150
開発エンジニアとQAエンジニアが語る夜(Datalizer編)〜僕がいちばんDatalizerをうまく使えるんだ!〜
ysaka
0
560
開発エンジニアとQAエンジニアが語る夜(Dr.Sum編)〜見せてもらおうか、Dr.Sumの品質活動とやらを〜
ysaka
0
2.4k
Other Decks in Technology
See All in Technology
プロンプト_きのこカンファレンス2026_LT
yurufuwahealer
0
140
Foxgloveについて 実際にExtensionを開発して公開するまでの話 / About Foxglove: The Story of Developing and Releasing an Extension
ry0_ka
0
180
Oracle Exadata Database Service on Cloud@Customer X11M (ExaDB-C@C) サービス概要
oracle4engineer
PRO
2
8.3k
次世代ランサムウェア対策の考察 / 20260704 Mitsutoshi Matsuo
shift_evolve
PRO
5
1.7k
クラウド上のデータ復旧で見落としがちな制約: 医療系 SaaS の BCP 設計から得た教訓
kakehashi
PRO
0
1.5k
Empower GenAI with Agile - あなたのアジャイルが生成AIのバフになる仕組み
hageyahhoo
0
130
Compose 新機能総まとめ / What's New in Jetpack Compose
yanzm
0
140
テスト設計の本質を改めて考えてみる~生成AIを活用する時代だからこそ、作ったテストの説明性を高めよう~
yamasaki696
1
350
Zoom2Youtube.Claude
kawaguti
PRO
2
450
Road to SRE NEXTの今までとこれから
hiroyaonoe
0
170
金融の未来を考える / Thinking About the Future of Finance
ks91
PRO
0
160
AI駆動開発におけるQAエンジニアの役割事例 〜AI駆動開発の現場から〜
kobayashiyorimitsu
0
360
Featured
See All Featured
What’s in a name? Adding method to the madness
productmarketing
PRO
24
4.1k
世界の人気アプリ100個を分析して見えたペイウォール設計の心得
akihiro_kokubo
PRO
72
40k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
31
3.2k
Public Speaking Without Barfing On Your Shoes - THAT 2023
reverentgeek
1
450
Git: the NoSQL Database
bkeepers
PRO
432
67k
Navigating Algorithm Shifts & AI Overviews - #SMXNext
aleyda
1
1.3k
Build The Right Thing And Hit Your Dates
maggiecrowley
39
3.2k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
55
3.4k
Have SEOs Ruined the Internet? - User Awareness of SEO in 2025
akashhashmi
0
380
We Are The Robots
honzajavorek
0
270
Being A Developer After 40
akosma
91
590k
The World Runs on Bad Software
bkeepers
PRO
72
12k
Transcript
update update Copyright © 2022 WingArc1st Inc. All Rights Reserved.
ウイングアーク1st 株式会社 ソフトウェアプロセス&品質改善部 坂口祐樹 November 4, 2022 純国産データベースエンジンの アジャイルな開発のお話
page No. page No. 2 ソフトウェアプロセス&品質改善部 DEQIグループ 坂口 祐樹 Yuki
Sakaguchi • 札幌生まれ、札幌育ち、北広島在住 • Scrum Fest Sapporo 2022運営メンバー • 仕事 • Dr.Sum開発、検証一筋 • QAマネジメント • QAエンジニア • プライベート • 子供と野球練習、野球審判 • 家族とキャンプ、夜は焚き火 • 好きなもの • スープカレー
page No. page No. 3 Copyright © 2022 WingArc1st Inc.
All Rights Reserved. 01 本発表について 02 純国産データベースの開発プロセス 04 CI/CD 05 まとめ INDEX 03 自動テスト
Copyright © 2022 WingArc1st Inc. All Rights Reserved. この発表について
page No. page No. 5 Copyright © 2022 WingArc1st Inc.
All Rights Reserved. 本発表について • データベース開発ってこんなやり方をしているんだ • 協力しながら開発するのは大事 • 自動テスト無いと開発できないよね お話しする内容 お話ししない内容 ゴール • データベース開発ってどうやっているの? • 開発期間が⾧い製品を開発するための工夫 • スクラム関連 本発表 • 質問は随時Discordでお願いします 発表後に回答させていただきます
Copyright © 2022 WingArc1st Inc. All Rights Reserved. 純国産データベースの開発プロセス
page No. page No. 純国産データベースとは Copyright © 2022 WingArc1st Inc.
All Rights Reserved.
page No. page No. 開発プロセスの概要 Copyright © 2022 WingArc1st Inc.
All Rights Reserved. システム テスト 要求 リリース 開発KickOff 資料 新製品 KickOff 仕様書 検証 実装 コンセプト ビジョン 目玉機能 ステークホルダーに 新製品の概要を レビュー 要求の積み上げを 繰り返す ×N 開発フェーズ 検証フェーズ KickOffからリリースまで1~1.5年
page No. page No. 9 Copyright © 2022 WingArc1st Inc.
All Rights Reserved. 要求とチーム チケットやプロジェクトなどの 単位を『要求』という言葉で まとめている。 要求毎にチームが作られる。 そのチームが実装から 検証までを担当する。 1回のリリースで50前後の要求が 実装される。 要求1 要求2 要求3
page No. page No. チーム体制 Copyright © 2022 WingArc1st Inc.
All Rights Reserved. Dr.Sum開発グループ 14名* QAグループ 6名 要求Xチーム (仮想チーム) 要求の内容や規模に合わせて、 開発グループ、QAグループから 適切な人員を割り当てている * 2022/04時点
page No. page No. 開発リーダー チーム内の役割 役割 開発 作業 設計・仕様決め
実装者 QE(SET) QA 開発チーム QAチーム 検証 作業 Copyright © 2022 WingArc1st Inc. All Rights Reserved. 仕様レビュー 設計・仕様決め (設計・仕様決め) 仕様レビュー開催 仕様レビュー (設計・仕様決め) 仕様レビュー 仕様書作成 実装 検証観点レビュー 検証観点レビュー開催 検証観点作成 検証項目作成・実施 検証観点レビュー 検証結果確認 検証観点メモ作成 組織図上の 所属 テストフレームワーク作成 開発チーム QAチーム
page No. page No. 要求に対する開発プロセス ・要求に対する実現方法検討 ・設計、仕様の考案 ・テスト自動化可否の確認 ・自動化のための機能追加 ・ステークホルダーに
設計・仕様案を共有 ・検証方針を決める ・QE(SET)、QA担当を 決める Copyright © 2022 WingArc1st Inc. All Rights Reserved. R&D プロトタイピング 仕様検討 要求 KickOff 仕様作成 仕様レビュー 実装 検証観点 レビュー 開発 検証実施 検証結果 自動テスト資産 システム テスト実施 ・観点の優先度を設定 ・実施フェーズを決める ・仕様書作成時に実装者視点の 検証のキモを記載 ・開発、QA以外に マニュアル、保守チームも参加 ・「開発フェーズ で実施対象」 とした検証項目 ・「検証フェーズで 実施対象」 とした検証項目 開発 フェーズ 検証 フェーズ
page No. page No. 品質の作り込み Copyright © 2022 WingArc1st Inc.
All Rights Reserved. R&D プロトタイピング 仕様検討 要求 KickOff 仕様作成 仕様レビュー 実装 検証観点 レビュー 開発 検証実施 検証結果 自動テスト資産 そのままリリースしても問題ない品質まで開発時に作り込む QAメンバー リリースしても問題ない品質となっていることを確認 システム テスト実施 開発メンバー 開発 フェーズ 検証 フェーズ 開発支援 ・開発進捗を押し上げる ・QAのナレッジ共有 検証支援
Copyright © 2022 WingArc1st Inc. All Rights Reserved. 自動テスト
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
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
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連携
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を構成するクラスやライブラリに 対する単体+αレベルのテスト
page No. page No. 19 Copyright © 2022 WingArc1st Inc.
All Rights Reserved. 命綱の作り方 検証観点 Dr.Sum テスト スクリプト 他RDB 結果比較 実行結果 検証観点 テンプレート 類似機能の 不具合 特異な 振る舞いの機能 設計、実装の考慮 (内部閾値や ロジック分岐) 密接な機能の 組み合わせ 過去のイタイ 不具合 秘伝のタレ これがすべて 検証データ
Copyright © 2022 WingArc1st Inc. All Rights Reserved. CI/CD
page No. page No. 21 Copyright © 2022 WingArc1st Inc.
All Rights Reserved. 自動テストの実行 • 各自動テストの実行 • リグレッション(BVT)の分散実行 develop/作業ブランチのビルド • ユニットテスト、静的解析 • コンパイル、リンク • パッケージング • インストーラーイメージ作成 Bitbucketとの連携 • ビルド、自動テスト結果をBitbucketに通知 • Pull requestマージ時にWebhookを受け取って、自動でビルド Jenkinsの役割
page No. page No. 22 Copyright © 2022 WingArc1st Inc.
All Rights Reserved. 自動テストの実行 Dr.Sum Server リグレッションテスト 命綱の80,000ケース
page No. page No. 23 Copyright © 2022 WingArc1st Inc.
All Rights Reserved. 自動テストの実行 Dr.Sum Server API Test In-Memory Server リグレッションテスト Jenkinsを自動テストのエントリーポイントにすることで、 いつでも、誰でも実行できる
page No. page No. 24 Copyright © 2022 WingArc1st Inc.
All Rights Reserved. 自動テスト実行(ジョブのビルドパラメータ) 開発、QA問わず、 任意のビルドに対して、任意のテストケースブランチで 自動テストを実行できる テスト対象のビルド テストケースのブランチ
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)
page No. page No. 26 Copyright © 2022 WingArc1st Inc.
All Rights Reserved. develop/作業ブランチのビルド(ビルドジョブのパラメータ) ビルド対象のソースコード 実行するBVTのテストケース
page No. page No. 27 Copyright © 2022 WingArc1st Inc.
All Rights Reserved. Bitbucketとの連携(Bitbucketへのビルド/BVT結果通知) BVT成功→PR推奨条件 ビルド成功→PR必須条件 マージしたらビルドできない/テストが動かないを事前に防ぐ
page No. page No. 28 Copyright © 2022 WingArc1st Inc.
All Rights Reserved. 命綱を全部回すのに240時間かかる?!よろしい、分散実行だ! ・ ・ ・ 50ノード マルチ構成プロジェクトで実行ジョブを作成 各ノードにはラベルを付与
page No. page No. 29 Copyright © 2022 WingArc1st Inc.
All Rights Reserved. 全部流しても240時間→6時間弱まで高速化
Copyright © 2022 WingArc1st Inc. All Rights Reserved. まとめ
page No. page No. 31 Copyright © 2022 WingArc1st Inc.
All Rights Reserved. まとめ 開発は要求単位で開発している • 要求毎にチームを作って、開発から検証まで担当 • チームは開発グループとQAグループから少なくとも1名はそれぞれ所属 • 要求は同時進行する 自動テスト • 開発の命綱 • いくつものデグレードを発見する実績 CI/CD(Jenkins) • 重要な開発インフラ これなくして開発成り立たず • ビルドだけではなく、自動テストのエントリーポイント、分散実行インフラ
WE ARE HIRING! 検証技術やValueを提供できる テストエンジニア テストの自動化(SET)や継続的テストのデジタル化(SRE)を提供できる パイプラインエンジニア 開発プロセスの促進(SPI)や品質文化を組織全体に推進できる QAエンジニア Software
Process & Quality Improvement Department まずはカジュアル面談から。 TwitterにDMください。
Copyright © 2022 WingArc1st Inc. All Rights Reserved.