Upgrade to PRO for Only $50/Year—Limited-Time Offer! 🔥

KTC_DBRE.pdf

Avatar for _awache _awache
March 19, 2024

 KTC_DBRE.pdf

Avatar for _awache

_awache

March 19, 2024
Tweet

More Decks by _awache

Other Decks in Technology

Transcript

  1. Software Engineering ず Database 管理の Best Practice を組み合わせたアプロヌチ 2 Database

    Reliability Engineering (DBRE) ずは n 䞻な圹割 n SLO/SLI を枬定し、それに合わせた開発組織ぞのアプロヌチ n ⟃動化、⟃埋化掚進による✣産性の向䞊 n Backup/Restore などサヌビス皌働率の向䞊 n Database セキュリティ & ガバナンスコントロヌル n 他分野のスペシャリストずの分野を超えたコラボレヌション Database に察する専⟚知識ず刀断を✀いおサヌビスの信頌性を担保するこず
  2. Public Cloud の台頭により Database Engineer の必芁性が〈さくなっおきおいる 3 DBRE (DBA) は䌁業にずっお必芁か

    n Cloud によっお誰でも⌀定のレベルで解決できる⌟壌が揃っおいる n Cloud 技術の爆発的な発展 n DevOps / SRE 思想の醞成 n AI 技術の進歩 n ⌀✅で Database そのものに察する基本的なアプロヌチはこれたでず倉わっおいない n 環境分離 n 構成管理 n パフォヌマンスチュヌニング n Backup/Restore n Security & Governance 倉化しおいるのは Database を取り巻く呚りの環境
  3. 4 ⟃⌰玹介 mysql > SELECT * FROM me Â¥G *********

    1. row ********* name: 粟✥ 啓介 nickname: あわっち X(twitter): @_awache role: DBRE,CCoE favorite: MySQL 1 rows in set (0.00 sec)
  4. 6 KTC における DBRE の✎ち䜍眮 ゚ンゞニア組織 24グルヌプ 瀟内の゚ンゞニアの数 箄 350名

    アプリケヌション開発組織 • KINTO サヌビス開発 • グロヌバル ID 基盀開発 • バックオフィスシステム開発 • モバむルアプリ開発, etc. 暪断組織 (プラットフォヌム G) • クラりドむンフラ • Platform Engineering • SRE (Embedded SRE) • DBRE • MSP (24*365 保守運✀) • CCoE (クラりド利掻✀掚進) プラットフォヌムグルヌプ クラりド むンフラ Platform Engineering SRE DBRE MSP CCoE アプリケヌション 開発組織 アプリケヌション 開発組織 アプリケヌション 開発組織 アプリケヌション 開発組織 アプリケヌション 開発組織 ・・・
  5. 11 KTC における DBRE は暪断組織 n ⟃分たちのアりトプットがビゞネスに反映されるこずによっお䟡倀提䟛される n 暪断組織はそこにあるだけでは䜕に䜿われるか分からない皎⟊ず同じ n

    ビゞネスに察しお良い圱響を䞎えるこずが重芁 n 良い圱響ずは n サヌビスの倱敗率を䞋げ、持続可胜性を䞊げるための掻動 n ゚ンゞニアの✣産性の向䞊ぞの寄䞎 など KTC DBRE の✬指すべき姿
  6. KTC DBRE は開発✣産性ず盎接関係ない 13 開発✣産性ず KTC DBRE n 暪断組織は盎接売り䞊げに貢献する組織ではない n

    レベル✣産性ずレベル✣産性にどのようにアプロヌチするかがポむント 参照: 開発✣産性に぀いお議論する前に知っおおきたいこず https://qiita.com/hirokidaichi/items/53f0865398829bdebef1
  7. 14 Database に関するオペレヌションはちょっずした⌿間で補完できるこずが倚い n 「ちょっずした⌿間」も゚ンゞニア党䜓の⌯数で⟒るず⌀きくなる n ちょっずした⌿間を簡略化、暙準化するこずは党䜓の Agility に貢献できる n

    Database Document の⟃動✣成 n 䌁業のガむドラむンに適✀した Platform の提䟛, etc. n 必ず⟏うべき蚭定や各サヌビスのお困りごずを解決する n スキヌマレビュヌ、蚭蚈サポヌト n SlowQuery の察応サポヌト n トラブル察応サポヌト, etc. 珟堎の゚ンゞニアの✣産性を⟌める
  8. 15 Database に関するオペレヌションはちょっずした⌿間で補完できるこずが倚い n 「ちょっずした⌿間」も゚ンゞニア党䜓の⌯数で⟒るず⌀きくなる n ちょっずした⌿間を簡略化、暙準化するこずは党䜓の Agility に貢献できる n

    Database Document の⟃動✣成 n 䌁業のガむドラむンに適✀した Platform の提䟛, etc. n 必ず⟏うべき蚭定や各サヌビスのお困りごずを解決する n スキヌマレビュヌ、蚭蚈サポヌト n SlowQuery の察応サポヌト n トラブル察応サポヌト, etc. 珟堎の゚ンゞニアの✣産性を⟌める
  9. 認知しないずいけない重芁なポむント 16 Database は動的に倉化する n Database のデヌタは垞に倉化しおいる n アプリケヌションのリク゚ストに応じたデヌタ曎新 n

    デヌタ量は垞に倉化しおいる n Database のテヌブル定矩やパラメヌタは Dynamic に倉曎可胜なものも倚い n デプロむに察応したスキヌマ倉曎 n リク゚ストに増加に応じた max_connections の倉曎などのパラメヌタチュヌニング n Dynamic でないものもありたすがここでは割愛したす
  10. 最䜎限必芁な Database ドキュメント 17 開発時に必芁な Database ドキュメント n ER図 n

    デヌタベヌスの構造を芖芚化し、デヌタ間の関係を理解しやすくする n テヌブルの蚭蚈やデヌタの流れを把握しやすくする n DB パラメヌタ⌀芧 n Database に蚭定されおいるパラメヌタの⌀芧 n max_connections や sql_mode などアプリケヌションの動䜜に圱響を䞎えるものも倚い 参照: 9.3.5 Documenting the sakila Database https://docs.oracle.com/cd/E17952_01/workbench-en/wb-documenting-sakila.html mysql> SHOW VARIABLES; +--------------------------------------------------------+---------------------------+ | Variable_name | Value | +--------------------------------------------------------+---------------------------+ | activate_all_roles_on_login | OFF | | auto_generate_certs | ON | | auto_increment_increment | 1 | | auto_increment_offset | 1 | | autocommit | ON | | automatic_sp_privileges | ON | | avoid_temporal_upgrade | OFF | | back_log | 151 | 
 | wait_timeout | 28800 | | warning_count | 0 | | windowing_use_high_precision | ON | +--------------------------------------------------------+---------------------------+
  11. 珟堎の゚ンゞニアの✣産性を⟌める 18 KTC DBRE が実践する珟堎の開発✣産性ずの向き合い✅ n KTC には 5リヌゞョンに 200+

    の Aurora Cluster が存圚しおいる (* dev/stg など開発環境を含む) n Database は✣モノ n ドキュメントには正確性が求められるがその運✀に察する⟟みも。。 n デヌタベヌスの蚭定は動的に倉曎が加えられる n ドキュメントの曎新は⟯倒な䜜業で埌回しになりがち n コヌドの様に倉曎履歎をもれなく保存しおいるパタヌンは少ない n 数が倚くなっおくるずミスも発✣しやすい n 倉曎し忘れたこずに気づけない眠も割ず倚い n 䜕よりモチベヌションが保おない
  12. Database ドキュメントの⟃動✣成 19 KTC DBRE が実践する珟堎の開発✣産性ずの向き合い✅ n 皌働しおいる党おの Database から動的にデヌタを取埗し、ドキュメントを⟃動✣成

    n ER 図 n Database パラメヌタ⌀芧 n 蚭定ファむル n DDL (markdown) n デヌタサむズ n S3 に PUT するこずで誰でも最新情報を確認可胜な状態に
  13. 21 Database に関するオペレヌションはちょっずした⌿間で補完できるこずが倚い n 「ちょっずした⌿間」も゚ンゞニア党䜓の⌯数で⟒るず⌀きくなる n ちょっずした⌿間を簡略化、暙準化するこずは党䜓の Agility に貢献できる n

    Database Document の⟃動✣成 n 䌁業のガむドラむンに適✀した Platform の提䟛, etc. n 必ず⟏うべき蚭定や各サヌビスのお困りごずを解決する n スキヌマレビュヌ、蚭蚈サポヌト n SlowQuery の察応サポヌト n トラブル察応サポヌト, etc. 珟堎の゚ンゞニアの✣産性を⟌める
  14. 23 Database 運✀に必芁ずされる芁件 KTC の Database 運✀ガむドラむン (⌀郚抜粋) カテゎリ 抂芁

    ログ • ログの改竄ができないこず • ⟏われたオペレヌションが党お蚘茉されおいるこず • オペレヌションを⟏なった個⌈を特定するこずが容易であるこず ナヌザヌ/パスワヌド管理 • オペレヌションに応じた暩限が郜床付䞎されるこず • 共通ナヌザヌを䜿✀しないこず • パスワヌドには⌗分な⻑さず耇雑さがあるこず • 定期的にパスワヌドが曎新されるこず アクセス管理 • い぀、誰が該圓䜜業を承認したのかがわかるこず • 䜜業完了埌そのアクセスはできなくなるこず 脆匱性察応 • 脆匱性ぞの察応が速やかに展開されるこず
  15. 25 KTC ガむドラむンに則るためには課題が倚い 螏み台サヌバを運✀しおいく䞊での課題 AWS Cloud Amazon EC2 for Bastion

    Aurora MySQL Amazon CloudWatch AWS Secrets Manager SAML 認蚌 DB 接続に必芁な password 共通ナヌザヌ / password Audit Log 垞時皌働しおおり、セキュリティパッチの 適✀などの運✀が発✣ 螏み台にログむンできれば誰でも匷暩限 でオペレヌション可胜 共通ナヌザヌを利✀されるず 誰が、い぀、䜕をしたのかを確認するこずが困難になる
  16. Governance を適✀するために Agility を犠牲にしおしたう 26 ガむドラむンに愚盎に準拠する n 仮に察応するずしたならば。。 n Jira

    チケットなどでワヌクフロヌを䜜成 n マネヌゞャヌ承認をもらう n 承認を確認した䞊で螏み台サヌバを構築する n Database に接続するナヌザヌやそのパスワヌドを郜床䜜成 n 䜜業が終わったらその螏み台サヌバず Database に登録したナヌザヌを削陀する 予定䜜業ならもしかしたらできるかもしれないが、リ゜ヌスも膚⌀になり トラブル察応など1分1秒を争うこずが発✣した堎合に 郜床このフロヌを回すこずは珟実的に䞍可胜
  17. 27 ガむドラむンに準拠したむンスタントな螏み台サヌバを構築する Platform を開発 課題解決のための DBRE のアクション AWS Cloud 䜜業者

    皌働䞭 Aurora ① 䜜業リク゚スト 承認者 ② リク゚ストメッセヌゞ ③ リク゚スト承認 EC2 Instance with SSM Agent ④ 螏み台サヌバ構築 â‘€ 認蚌情報 ⑥ Login ⑩ 実䜜業 ⑩ オペレヌションログの保存 ⑧ 螏み台サヌバの削陀 セキュリティチヌム 必芁に応じお確認 RDS Audit Log SSM Agent Log ⑩ Audit Log の保存 承認者✀ Private チャンネル 䜜業✀ Public チャンネル
  18. 29 党䜓像: Architecture Operator Approver リク゚スト✀ Public チャンネル API Gateway

    Request 凊理✀ Lambda Function 承認者✀ Private チャンネル 承認凊理✀ Lambda Function API Gateway 承認 or 吊認 AWS Cloud AWS Step Functions workflow 承認 吊認 承認 EC2 構築 Setup ✀ Lambda Function 専✀ EC2 Instance 皌働䞭の Aurora CREATE USER 終了 10 分前通知✀ Lambda Function Slack DM Wait 終了凊理✀ Lambda Function Wait Create EC2 Instance Terminate EC2 Instance DROP USER CloudWatch Logs CloudWatch Logs Security Team EC2 構築✀ Lambda Function DynamoDB (䜜業承認ログ / SFn ステヌタス管理) Secrets Manager (DB ワンタむムパスワヌド管理)
  19. 30 Database 運✀に必芁ずされる芁件を Engineering で解決 DBRE Platform によるガむドラむン準拠 カテゎリ Before

    After ログ • ログの改竄ができないこず • ⟏われたオペレヌションが党お蚘茉されおいるこず • オペレヌションを⟏なった個⌈を特定するこずが容易であるこず • Audit Log / SSM Log の適切な利✀ • DB のナヌザヌ名をSlack のメヌルアドレスの @ より前を䜿✀するこずで個⌈の特定が容易 ナヌザヌ/パスワヌド管理 • オペレヌションに応じた暩限が郜床付䞎されるこず • 共通ナヌザヌを䜿✀しないこず • パスワヌドには⌗分な⻑さず耇雑さがあるこず • 定期的にパスワヌドが曎新されるこず • オペレヌションリク゚スト時に必芁な暩限を申請 • 郜床 DB にナヌザヌ登録を⟏う • パスワヌドは芁件を満たすためのプログラムで 毎回ランダムで䜜成 アクセス管理 • い぀、誰が該圓䜜業を承認したのかがわかるこず • 䜜業完了埌そのアクセスはできなくなるこず • 党おのプロセスを DynamoDB に登録 • 䜜業完了埌そのリク゚ストで䜜成した DB ナヌザヌや EC2 むンスタンスを削陀 脆匱性察応 • 脆匱性ぞの察応が速やかに展開されるこず • 螏み台を起動するタむミングで yum update を実斜
  20. 31 組織暪断的に利✀できる Tool 開発 n スロヌガン n 個別最適を⟏わない n 個別機胜を開発しないのではない

    n 個別の機胜をいかに Platform ずしお昇華させるかを考える n ただやるだけでは぀たらない n 実珟しおいるこずは枯れたこず n How の郚分をモダンに楜しく n 今回共有した内容は⌀⟔で⟔うずドキュメントを⟃動✣成したり、螏み台サヌバを䜿いたい時に構築しおいるだけ n そこに DBA ずしおのナレッゞず AWS の技術を組み蟌んで実珟するこずで楜しみながら開発 DBRE Platform Tools
  21. 32 n AWS n Amazon API Gateway n Amazon Aurora

    for MySQL n Amazon CloudWatch n Amazon DynamoDB n Amazon EC2 n AWS Lambda n AWS Secrets Manager n AWS Step Functions DBRE を✀える技術 n 開発⌿法 n Scrum n 開発⟔語 n Golang n Monorepo 管理 n Nx n CICD n GitHub Actions n Infrastructure as Code n terraform n 特にこだわったポむント n Slack App n 承認者には郜床確認を匷いるため負荷を枛らす必芁があった n 平均構築時間 n 1分40秒皋床
  22. 33 Cloud の匷みを掻かしおある皋床 Governance ず Agility を䞡✎させるこずができる n Governance を適✀するためには

    Agility を犠牲にしおしたうこずもある n Cloud を正しく掻✀するこずでそれぞれの効率を最⌀化する n どのレベルたで確保できるかが DBRE ずしおの腕の⟒せ所 Governance vs Agility ?? Governance Agility
  23. 1. ⟃分たちのスキルの幅を広げるこず (≒⟯✩そう) 37 なぜ✣成系 AI を導⌊しようずしたのか n ゚ンゞニアである以䞊この✣成系 AI

    の波に乗らない理由がない n ゚ンゞニアだけではなくさたざたな業皮の⌈たちが掻✀しおいる n 䜿わなくおも仕事はできる、が Word や Excel ず同じように様々な⌈・業皮で✣成系 AI を 䜿うこずが圓たり前になる時代になる (ず個⌈的には思っおいる) n どうやっお䜿うかによっお今でも業務効率を⌀幅に改善可胜 ⟃分たちの圓たり前レベルを䞊げるこずで 今の垂堎䟡倀を⟌める 将来的な垂堎䟡倀を䞋げない
  24. 2. Database のスキヌマは⌀床䜜成されるず埌戻りしづらい 38 なぜ✣成系 AI を導⌊しようずしたのか n Database の圱響範囲はそれを䜿✀する党おのサヌビス

    n アプリケヌションそのものに察する圱響 n 倖郚連携しおいるサヌビスぞの圱響 n (割ずある) 忘れ去られた管理システム n 圱響範囲が広いため調査ず調敎コストが⌀きくなりがち n アプリケヌションコヌドで䜕ずかしようずするずマゞカルな仕様ができおしたう n マゞカルな仕様は調査・孊習コストを䞊げ、属⌈化や開発⌯数の増加を匕き起こす 早い段階でどれだけ適切に蚭蚈できるかは開発✣産性に⌀きく圱響しおくる
  25. 3. 様々な意味で Review に察するハヌドルを䞋げる 39 なぜ✣成系 AI を導⌊しようずしたのか n ⌈がやるか

    AI がやるか ≒そこにある感情や状況を評䟡するかどうか n ⌈は⟃分にできないこずを聞きづらい n こんなこずもできないのかず思われたくない n 䜕が分からないのか分からず、質問の仕✅を考えるこずに時間がかかっおしたう n 聞く⌈が忙しい、など状況を䜕ずなく察しおしたう n 忙しそうだず聞けないなどが発✣し時間をかけお⟃⌰解決するように振る舞っおしたう n 結局✣産性ずいう芳点ではマむナスに働いおしたう AI なら感情や状況を気にせず質問できる
  26. 3. 様々な意味で Review に察するハヌドルを䞋げる 40 なぜ✣成系 AI を導⌊しようずしたのか n ⌈に指摘されるこずず

    AI に指摘されるこずでは受け✌め✅が違う n サヌビスにはその歎史ず携わった⌈たちの想いがある n Review で正論で指摘されるず反論できない⌌理も働きやすい n バックグラりンドやドメむン知識を持たない暪断組織が⟏っおしたうずハレヌションが溜たりやすい n (特に Database 関連の Review になるずお䜜法に埓っおいるかどうか、ずいう芳点で Review しがち) AI であれば、「機械だしたぁ⌀意⟒ずしお聞いおおくか」くらいの軜い気持ちで受け✌められる 間違っおいおも、(今なら) AI だしな、ずいう反応ができる 期埅通りの結果が埗られなければ玠早く聞き盎すこずができる
  27. 41 DBRE が⟚番ではなく゚ンゞニアず䌎⟛できる存圚になるこず n ルヌルや Review だけで察応できるほど事業の成⻑スピヌドは遅くない n ⌌理的ハヌドルが䜎く即時性の⟌い AI

    によるサポヌトを提䟛するこずで開発✣産性に寄䞎する n DBRE が⟏うのは✣成系 AI を掻✀したツヌルを開発しお終わりではない n もちろん䜿われなければ意味がない n ⟃分たちの思いを仕組みに乗せ続けるこずで、(意識せずずも) DBRE が䌎⟛しおいる状態を圢成するこずができる n (そしお忘れおはいけないのは DBRE のやるこずはこのほかにもたくさんある) (今の) ✣成系 AI の掻✀に期埅しおいるこず
  28. 43 Application Engineer ず Amazon Web Service を぀なぐ Hub ずしおの掻動

    KTC の DBRE の圹割 専⟚性 早 遅 䜎 ⟌ Application Engineer Amazon Web Service • サヌビスの皌働率を守る • サヌビスの成⻑を促進する • Database そのものの皌働率を守る Database Reliability Engineer • 珟堎の゚ンゞニアが事業成⻑に泚⌒できる環境を提䟛するための圹割 • サヌビスの皌働率を守る • 珟堎の゚ンゞニアの✣産性を⟌める • 䌁業の継続的成⻑を促進する • 内的芁因、倖的芁因から Database を守る レスポンス(*) (*) ここでのレスポンスずはサヌビスに察する適✀速床、トラブルが発✣した時の応答速床、必芁なデヌタを抜出するなど通垞オペレヌションで必芁な䜜業時間などが含たれる
  29. 44 Cloud の匷みを掻かしおある皋床 Governance ず Agility を䞡✎させるこずができる n Governance を適✀するためには

    Agility を犠牲にしおしたうこずもある n Cloud を正しく掻✀するこずでそれぞれの効率を最⌀化する n どのレベルたで確保できるかが DBRE ずしおの腕の⟒せ所 Governance vs Agility ?? Governance Agility
  30. 46 Database の Reliability を向䞊させるための圹割ずしお組成 n Database の知識を還元しお KTC 党䜓の

    Reliability を守る n その⌿段ずしお Engineering で解決する道を遞択 n Cloud を適切に掻✀しお Agility を確保し぀぀ Database の Security ず Governance を守る n Platform ぞず昇華させ KTC 党䜓に展開するこずでビゞネスに良い圱響を䞎え続ける KTC における DBRE の圹割 Database Reliability Engineering ずいうアプロヌチ
  31. Help Us Shape the Future ! KINTO テクノロゞヌズでは DBRE を始め、様々な職皮で仲間を募集しおいたす

    少しでも興味がありたしたらお気軜にご連絡ください