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
DevOps, Immutable Infrastructure, Microservices...
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Yoshiori SHOJI
March 22, 2019
Technology
2.5k
13
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
DevOps, Immutable Infrastructure, Microservices and Chaos Engineering
https://railsdm.github.io/
#railsdm2019
Yoshiori SHOJI
March 22, 2019
More Decks by Yoshiori SHOJI
See All by Yoshiori SHOJI
なぜThrottleではなくDebounceだったのか? 700並列リクエストと戦うサーバーサイド実装のすべて
yoshiori
13
7.5k
クライアントサイドでよく使われる Debounce処理 をサーバサイドで3回実装した話
yoshiori
2
1.1k
ソートできるUUID v7をJavaで使うときの話
yoshiori
8
8.3k
Go Down Rockin'
yoshiori
31
20k
テストデータを貯めて感じたこと
yoshiori
12
4.5k
エンジニアリング x US 海外とのコラボレーション
yoshiori
3
2.2k
未完成な技術と歩む道のりでの 試行錯誤
yoshiori
0
240
Change the recipe's world
yoshiori
3
1.5k
Cookpad awakens
yoshiori
5
7.7k
Other Decks in Technology
See All in Technology
35分でわかるEffective Platform Engineering
nwiizo
3
210
Reference-Free Image Quality Assessment for Virtual Try-On via Human Feedback
zozotech
PRO
0
590
Head First モブプログラミング / Head First Mobprogramming
takaking22
10
12k
カートの信頼性を担保するWireMockを使ったe2eテスト
ykagano
0
390
老害フォレンジッカーはAI羊の夢を見るか?
tadmaddad
0
350
Kiro Crew入門 - 常駐エージェントの仕組みと使いどころ / Intro to Kiro Crew
k_adachi_01
1
380
[ChatGPT Work LT]事務作業が苦手な人のための バックオフィスの「半」自動化
chimaki_iot
0
310
なぜ Temporal の大小比較には compare しかないのか / Why Does Temporal Only Have compare() for Comparisons
kazukihayase
1
150
What's new in Go 1.27?
ciarana
0
220
強化学習「理論」入門
enakai00
3
3.6k
私がブラウザを自作したくなった理由
supurazako
1
260
AWS ネットワーク構築でハマった(ハマりかけた) 5選とそこから得た教訓
nagisa53
4
260
Featured
See All Featured
[RailsConf 2023] Rails as a piece of cake
palkan
59
6.9k
The Director’s Chair: Orchestrating AI for Truly Effective Learning
tmiket
1
270
Beyond borders and beyond the search box: How to win the global "messy middle" with AI-driven SEO
davidcarrasco
3
210
How to Think Like a Performance Engineer
csswizardry
28
2.7k
How People are Using Generative and Agentic AI to Supercharge Their Products, Projects, Services and Value Streams Today
helenjbeal
1
270
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
133
19k
Discover your Explorer Soul
emna__ayadi
2
1.3k
Keith and Marios Guide to Fast Websites
keithpitt
413
23k
Ethics towards AI in product and experience design
skipperchong
2
350
The #1 spot is gone: here's how to win anyway
tamaranovitovic
3
1.1k
Building AI with AI
inesmontani
PRO
1
1.1k
AI Search: Implications for SEO and How to Move Forward - #ShenzhenSEOConference
aleyda
1
1.3k
Transcript
DevOps, Immutable Infrastructure, Microservices そして Chaos Engineering Yoshiori Shoji
自己紹介
庄司 嘉織 @yoshiori
さて
Velocity 2009 の Flickr の発表で DevOps が言及されてから 10 年 IUUQTXXXTMJEFTIBSFOFUKBMMTQBXEFQMPZTQFSEBZEFWBOEPQTDPPQFSBUJPOBUqJDLS
Immutable Infrastructure Microservices Docker Kubernetes Chaos Engineering…
個別の話をする事はあるけど 全体の繋がりというか流れを話す事は あまりないので 僕の見てきた世界で語ろうと思う
DevOps
流石に説明はいらないと思うので省略 (ry
二人の Fowler のお話
Immutable Infrastructure ここらへんで 12:35 くらいなら余裕すぎる進行
Immutable Infrastructure •Chad Fowler •とりあえずサーバ弄って 「あとで chef に書いてお くよ!」← 忘れる
•不変にしておく •Blue-Green Deployment IUUQDIBEGPXMFSDPNJNNVUBCMFEFQMPZNFOUTIUNM
Blue-Green Deployment •実は 2010 年の時点で Martin Fowler によって提唱されてい た。 •Immutable
Infrastructure の記 事の 3 年前 •ただ主題はサーバの不変性ではな く、デプロイの高速化と安定化、 ロールバックのしやすさなどだっ た。 IUUQTNBSUJOGPXMFSDPNCMJLJ#MVF(SFFO%FQMPZNFOUIUNM
Immutable Infrastructure の話に戻る
Immutable Infrastructure しかし、もっと注目に値するのは、新しいプログ ラミングパラダイムのように、このようにインフ ラストラクチャを考えることによって、私のシス テムをかなり根本的に見る方法が変わることで す。 新しいパターンとアンチパターンが出現します。 デプロイだけでなくアプリケーションコード(そ してチーム構造さえも)について私が考える方法
が変わりつつあります。 IUUQDIBEGPXMFSDPNJNNVUBCMFEFQMPZNFOUTIUNM
僕らはまだその意味をわかっていなかった
Microservices ここらへんで 12:40 くらい?
Microservices •Martin Fowler •超巨大な Monolithic アプ リケーションからの離脱 •小さなサービスに分割し ていく •実は組織パターンの話
IUUQTNBSUJOGPXMFSDPNBSUJDMFTNJDSPTFSWJDFTIUNM
実は組織パターンの話 •Conway の法則 •一つのデカいチームでやって もあまり意味がない ‣チームは機能横断(cross- functional)型 ‣DevOps IUUQTNBSUJOGPXMFSDPNBSUJDMFTNJDSPTFSWJDFTIUNM
でも急速に流行りすぎた
MicroservicePrerequisites •下記適性に合わないのであれば、マイクロサー ビススタイルを採用すべきではない ‣Rapid provisioning ‣Basic Monitoring 少なくとも技術的な問題について(エラーの発 生回数、サービスの可用性など)は検出できる ようにするべきで、同時にビジネス上の問題
(発注処理の失敗など)をモニタリングするこ とも重要だろう。 ‣Rapid application deployment •Monolithic なシステムでも必要なのでまずは これを整えるべき IUUQTNBSUJOGPXMFSDPNCMJLJ.JDSPTFSWJDF1SFSFRVJTJUFTIUNM
ちゃんとまずは Monolithic で頑張るの大事
例のアレ •20000+ specs, •1700+ models •50+ developers •技術の力でちゃんと何とかする ‣rrrspec ‣mamiya
IUUQTTQFBLFSEFDLDPNB@NBUTVEBUIFSFDJQFGPSUIFXPSMETMBSHFTUSBJMTNPOPMJUI
そして Microservice へ…… ここらへんで 12:45 くらいだと順調
Docker
Docker •Application も Immutable を意識する事を強制 ‣ファイルをサーバにアップ ロードさせないとか ‣雑なキャッシュや学習結果 もサーバに置いておかない とか
ホントだった!!!
Container Orchestration
Container Orchestration •K8s や ECS •アプリケーションの実行を抽象化 (docker run) ‣アプリケーション毎にサーバを構築する のではなく、コンテナ実行環境の管理と
運用をする ‣Microservice 化によって多数のコンテナ 化されたアプリケーションを管理しなく てはいけなくなった。
Microservice + Container •microservice 化によって個々のサービスの小型化 •Docker でアプリケーションのポータビリティの向上 •Cookpad では 70+
のアプリケーションが協調して動く •各サービスは単純でもシステム全体としては複雑になる
たくさんのアプリを動かすのは技術的に解決出来ている たくさんのアプリをうまく繋げる事に課題が出てきた サービス間通信なんとかしたい
ServiceMesh ここらへんで 12:50 くらいだと間にあう
ServiceMesh •Cookpad では data-plane と して Envoy を採用し、 control-plane は自作
•サービスの通信の状況把握 •タイムアウト・リトライ・サー キットブレーカーをアプリケー ションからはがす
None
他にもサービス間通信をテストしようとした。 Pact という Consumer-Driven Contract testing のツールを使って。
複雑になったアプリケーションの変更時の 影響範囲を知るためにテストを書くように 複雑になったサービス間通信の変更時も 影響範囲がわかるようにテストを書こうとした。 けど結局やめた(主に開発スピードとのミスマッチ)
Chaos Engineering ここらへんで 12:55 くらいだとギリ全部話せる
Chaos Engineering •分散システムにおいてシステムが不安定 な状態に耐えることの出来る環境を構築 するための検証の規律です •サーバを落す事ではない ‣多分最初に出た Netflix の Chaos
Monkey の印象が強すぎてそう思ってい る人が多い ‣このコンテナ時代にインスタンス一個落 しても何もあまり得る物はない IUUQTQSJODJQMFTPGDIBPTPSH
Steady State •そのサービスの定常状態を計測出来るよう にする •Netflix では ‣毎秒どのくらいのユーザーが動画を見始めた か ‣毎秒どのくらいのユーザーがサインアップし た
•Cookpadでは ‣レシピ閲覧数と検索数の比 IUUQTUFDIMJGFDPPLQBEDPNFOUSZ
IUUQTTQFBLFSEFDLDPNJULRBMJGFPGDIBPTFOHJOFFSJOHTUBSUJOHXJUISFTJMJFODF TMJEF
IUUQTTQFBLFSEFDLDPNJULRBMJGFPGDIBPTFOHJOFFSJOHTUBSUJOHXJUISFTJMJFODF TMJEF
まずは Staging 環境で 本番と同じメッシュ構造を構築し、 サービス間通信に障害を起こし影響を見る。 というのが Envoy 導入したのでやりやすい
サービス間通信の変更時に異常が起きない ように過剰にテストを書くのではなく、 もしサービス間通信に異常があった場合に どうなるのかを把握し影響範囲を最小限に 出来るようにしておく
Microservices •実は最初の Microservices の記事に 書いてある •マイクロサービスを採用するチームは サービスがユーザ体験に与える影響に ついて絶えず検討します。 •NetflixのSimian Armyは、アプリ
ケーションの耐久性と監視についてテ ストするために、勤務時間内にサービ スやデータセンタさえに対しても障害 を誘発させます。 IUUQTNBSUJOGPXMFSDPNBSUJDMFTNJDSPTFSWJDFTIUNM
はい 時間余ったら喋る カナリア XaaS
というような事を考えたり話したりするのが 好きな人間です。 以上自己紹介でした。