はじめに
NTTコミュニケーションズアドベントカレンダー 21日目になります。
先週、シアトルで開催されたKubeConに参加してきました。
せっかくシアトルに行ったので空き時間に一人で美術館、図書館、水族館を回ったら
周りから「えっ!?」って顔をされましたがみんな行きますよね?1人水族館
今回は初日のkeynoteで話題になったJuia EvansのStripeの事例を
紹介させていただきます。
この記事を読んでわかること
- システムをマイグレーションするときの基本的な考え方(Kubernetesのことを何も知らなくても大丈夫)
What is Stripe?
Stripeは決済のインフラを提供する会社になります。
ユーザが意識するというよりは、ユーザが使っているアプリ等の裏側で
決済をいい感じにしてくれるインフラのようなものになります。
日本ではあまり社名に馴染みはないかもしれませんが、
世界で120カ国以上、数百万に及ぶ企業が利用しており
Amazon、Google、Uberといった企業が利用しています。
Stripeのシステムに求められる要件
決済のシステムなので以下の2つがとても大事
- Reliability
- Security
求められる信頼性の要件は以下
- 99.99%(1週間に停止時間は1分以下)
そのために、2つの方法を実施
- kubernetesへの移行
- Envoyを使ったサービス間のNetworkの構築
システムのマイグレーションの理想と現実
理想の姿
課題が明確となっており、課題に対する解決策も明確となっている状態
現実の姿
そもそも何が課題か誰も分からない
インフラに対する期待
我々はよく分かっていないが、この上で大事なシステムを動かそうとしている
所感:システムの移行とかだと、移行先のアーキテクチャについて理解しないまま進むことってありません?自分は覚えがあります。
99.99%への道のり
99%を達成するまでに色んなことが起こるし
99%から99%を達成するまでにはさらに色んなことが起こるよ
所感:その通り過ぎる。
99.99%のやり方
- システムのデザインを理解する(分からないことだけググるのでは足りない)
- あらゆるテストを実施する(思いつくことは全部やる)
- 障害を検知する仕組みを作る(どんなにテストをしても障害は起こる)
- インシデントは1度しか起こらないようにする(必ず根本原因を見つけて対処する)
- 変更は段階的に加える(まずはtrafficの5%だけ新しい機能に流すなど)
- 必ずロールバック計画を立てること(100%成功するものなんてない)
所感:Kubernetesとか関係なく、いつでも使えそう。
99.99%を達成するためのCulture&Leadership
・ 初めからエキスパートである必要はないが、エキスパートになる必要がある
・ エキスパートになるためには、手を動かして学ぶための十分あ時間が必要である
所感:ほんとその通りですね。勉強時間が業務時間内に確保されてるのは大事ですね。
Kubernetes移行に関するStripeの取り組み
Don' expose kubernetes to developers
Stripeでは、DeveloperがKubernetesを覚える学習コストが
課題と考えているので、Pythonのコードを書けば自動でYAMLを生成してくれるものを作って提供している。
Developerはコードを愛してるので、
YAMLを覚える気は無くても新しいコードなら覚えるよねという考え方。
該当の資材はskycfgという言い、公開されています。
最後に
Youtubeで動画が公開されてますが、Youtubeの速度調整と字幕の機能は最高ですね。
自分は記事をまとめるにあたり、自信がなかったので「0.75倍速/字幕(英語自動生成)」で3回聴いて、気になるところがあったら何度も聴き直していますが、字幕の精度が高くて感激しました。
KubeConの動画はシアトルの分だけでも350件近く上がってるので、皆さんも興味のあるテーマがあればYoutubeの機能を駆使して聴いてみてください。
英語に自信がある方は、気にしないでください。