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
Reusable TDI infrastructure
Search
Ryo Okubo
January 04, 2018
Programming
0
1.5k
Reusable TDI infrastructure
A presentation for WSA conference #1
Ryo Okubo
January 04, 2018
Tweet
Share
More Decks by Ryo Okubo
See All by Ryo Okubo
メルカリ・メルペイの成長を支える データ基盤とはどんなものか
syucream
7
6.7k
バッチとストリーミング、それぞれの障害に立ち向かう
syucream
3
3.4k
How Scala works at Mercari
syucream
2
980
Production-ready stream data pipeline in Merpay, Inc
syucream
2
13k
データとML周辺エンジニアリン グを考える会 #2 イントロ
syucream
0
600
マイクロサービスにおける ログ収集の課題と取り組み
syucream
7
2.6k
Stream Data Pipeline for Microservices in Merpay
syucream
6
1.2k
メルペイにおける、マイクロサービスに寄り添うログ収集基盤 / Microservices-frendly Data Pipeline
syucream
0
18k
Merpay のデータ収集基盤
syucream
5
1k
Other Decks in Programming
See All in Programming
Pinia Colada が実現するスマートな非同期処理
naokihaba
4
230
Arm移行タイムアタック
qnighy
0
340
RubyLSPのマルチバイト文字対応
notfounds
0
120
PHP でアセンブリ言語のように書く技術
memory1994
PRO
1
170
Click-free releases & the making of a CLI app
oheyadam
2
120
macOS でできる リアルタイム動画像処理
biacco42
9
2.4k
Hotwire or React? ~アフタートーク・本編に含めなかった話~ / Hotwire or React? after talk
harunatsujita
1
120
Duckdb-Wasmでローカルダッシュボードを作ってみた
nkforwork
0
130
よくできたテンプレート言語として TypeScript + JSX を利用する試み / Using TypeScript + JSX outside of Web Frontend #TSKaigiKansai
izumin5210
6
1.8k
Jakarta EE meets AI
ivargrimstad
0
640
watsonx.ai Dojo #4 生成AIを使ったアプリ開発、応用編
oniak3ibm
PRO
1
170
ローコードSaaSのUXを向上させるためのTypeScript
taro28
1
630
Featured
See All Featured
Java REST API Framework Comparison - PWX 2021
mraible
PRO
28
8.2k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
0
110
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
226
22k
GraphQLの誤解/rethinking-graphql
sonatard
67
10k
Git: the NoSQL Database
bkeepers
PRO
427
64k
Docker and Python
trallard
40
3.1k
For a Future-Friendly Web
brad_frost
175
9.4k
Ruby is Unlike a Banana
tanoku
97
11k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
28
2k
Visualization
eitanlees
145
15k
The World Runs on Bad Software
bkeepers
PRO
65
11k
RailsConf 2023
tenderlove
29
900
Transcript
Reusable TDI infrastructure WSA Conference #1 @syu_cream
Agenda • 背景 • 提案手法 • 設計 • 実装 •
~~評価~~ そんなものはない(´・_・`) • 議論したいこと
whoami • @syu_cream • SRE @ メルカリ • C++, mruby,
Golang, etc • SF小説, 猫
背景 • インフラ構成管理方法は多様化・複雑化してきている ◦ 思想として Infrastructure as code, CI/CD, ...
◦ ツールとして Ansible, Chef, Docker(+ k8s), … ◦ 連携サービスとして AWS, GCP, ... • Test Driven Infrastructure(TDI) が普及してきている ◦ ref. https://www.ibm.com/developerworks/library/a-devops5/ • TDI を実践する基盤も存在 ◦ ChefSpec など 構成管理ツール特化の基盤 ◦ Serverspec, bats など他ツールとは独立した基盤
課題 • 構成管理ツール特化の基盤を用いる場合 ◦ そのツール特化の記法や制約に縛られる ◦ 他ツールへの移行時のネックになる • 他ツールとは独立した基盤を用いる場合 (特に
Serverspec を意識...) ◦ Ruby や RSpec, Serverspec の resource type, matcher など覚えることは多々ある ◦ ローカルで動かす場合は Ruby + gem’s インストール, リモートで動かす場合は ssh できる必要がある
(一般的ではない経験上の)課題 • 構成管理ツール特化の基盤を用いる場合 ◦ Chef はそれ自体が複雑なのでそれ前提のテスト書きたくない ... • 他ツールとは独立した基盤を用いる場合 (特に
Serverspec を意識...) ◦ Serverspec の為だけに Ruby+gem’s を本番サーバに入れたくない事例もあった ◦ 複雑なテスト書くと結局可読性低まる ◦ 場合によってはモニタリングの領域と被る • インフラのテストは誰がメンテするの?問題 ◦ Ruby, Python などで書いたテストは誰が読み書きできるのか
提案手法 • ドキュメント + テスト用シェルスクリプトのセットで構成 ◦ インフラ担当者なら少なくともシェルスクリプトはいじれるはず(要出典) ◦ Markdown でドキュメント書けば
GitHub でレンダリングもしてくれる • シングルバイナリの実行ファイル ◦ メンテナンス、デプロイが少し楽になる、かも • ドキュメント + スクリプト例) Jupyter Notebook ◦ http://jupyter.org/ ◦ データ分析の分野で広く使われ、 Cloud Datalab のベースにもなっている
提案するテストの運用イメージ SRE/Infra 日々の運用作業 テスト関連 ノウハウ文書化 文書から テスト実行 “Implementations are ephemeral,
but the documented reasoning is priceless.” , from Foreword of SRE book. http://landing.google.com/sre/book/chapters/foreword.html テストの実装より、テストに関する情報を重視し記録していきたい
実装 • Harmonium(ハーモニウム) ◦ https://github.com/syucream/harmonium ◦ Go で実装された、 Markdown 埋め込みシェルスクリプトを実行するツール
◦ シングルバイナリ、 go get でかんたん取得 ◦ シェルスクリプトは コードブロック “```” で囲まれることを想定 ◦ (レポート機能は弱い
Harmonium 利用イメージ 例) nginx が動作する Load Balancer の動作確認イメージ コマンドとドキュメントの記録 GitHub
で管理 Harmonium でコマンド実行して結 果を取得
現在の実装詳細 1. 正規表現で 文書のうち “```sh” と “```” で囲まれた行を取得 2. Tmpfile
として取得した行をファイルとして出力 3. シェルスクリプトを実行 4. exit code を見て成功/失敗を判断
今後の課題 • Harmonium について ◦ 評価や既存手法サーベイなど、研究でよくある課題をやる ◦ レポート機能を充実する ◦ 方向性変えて
Jupyter とか既存ツールに組み込む形にしてもいいかも (?) • TDI 全般について ◦ 今回の Harmonium の話は思考実験的な提案。もっと良い道を模索したい ◦ 普段通り運用作業をしていくとテストコード(の候補?)が自動生成されるとか ◦ Docker image でインフラ構成が固められるように、テストもあるインフラの状態を固めて後で実行とか (?)
余談: mruby で Serverspec • 以前 mruby-cli でワンバイナリで実行可能な Serverspec 作った
◦ http://syucream.hatenablog.jp/entry/2017/06/11/162012 ◦ https://github.com/syucream/sssspec • mruby-specinfra を利用 + mruby-rspec, mruby-serverspec を自前で実装 ◦ 自前 mrbgems は PoC 的に一部しか実装していないのでまるで機能が無い!!! • 継続して開発はしなかった ◦ libspecinfra の話が上がり始めてて、少し様子を見たかった ◦ Serverspec のコードを書くのもコストがかかるし、もっと別の道が無いか模索したかった
議論したいこと #1 • TDI に関連しそうな領域でみなさんが現在どうしているか /課題が何か知りたい ◦ 何のツールを使ってる? ◦ どんなテストをしている?
◦ 何年継続して運用している? ◦ メンテできている?
議論したいこと #2 • WSA 絡みで先行研究を調べる場合はどうすると良いか? ◦ 今回は存在する OSS や書籍を引用 ◦
その他 USENIX LISA, SRECon は少し覗いたが実践的な内容 • SOSP, OSDI, NSDI あたりをやはり参考にする?
議論したいこと #3 • WSA 研みたいな活動について ◦ 今後気軽に相談・議論できる場が欲しい ◦ 毎回の開催の他に Twitter/Slack
などで議論できる文化を作って行っても良さそう ◦ (誰かが先に話題に上げたらこの話はスキップ )