2024.12.19
システムの穴を運用でカバーしようとしてミス多発… バグが大量発生、決算が合わない状態から業務効率化を実現するまで
リンクをコピー
記事をブックマーク
sue445氏:次に、現在のピクシブの状態について話します。(スライドを示して)だいたいこんな感じのことを話そうと思います。
まず、オンプレとクラウドの比率について話します。
僕が入社した当時は、クラウドの利用率はだいたい2割弱でしたが、今現在は3割弱と、ちょっと増えています。
次に、AWSのアカウント数とGCPのプロジェクト数の合計の推移について話します。
僕が入社した当時は、合わせてだいたい27とか28とかだったのですが、今現在は、合わせて100を超えました。
次に、Terraformについて話します。僕が入社した以降に開設されたAWSのアカウントやGCPのプロジェクトは、基本的に全部TerraformとGitLabで管理しています。
最初にTerraformのリポジトリを作ったのは、冒頭で話したAWSのオートスケールRunnerのやつで、その時は2018年11月でした。それからTerraformのリポジトリをいろいろ作って、今現在だいたい60個ぐらいあります。
基本的には、AWSのアカウントやGCPのプロジェクト1個につき、Terraformのリポジトリが1個と、1対1対応しています。
ただ、本番環境と開発環境でAWSのアカウントを分けたいよという場合もわりとあるので、そのような時は、1個のTerraformのリポジトリで複数の環境を一緒に使えるようにしています。詳しくは、「pixiv inside」の記事に全部書きました。
Terraformを導入したことにより、インフラ部以外もインフラの設定に触る文化ができました。簡単な権限追加ぐらいなら他部署でも作業ができるので、権限の移譲がしやすくなりました。
Terraformを導入する前は、だいたい全部をインフラ部がやっていて、けっこうそのあたりで時間が取られていましたが、Terraformを導入したことにより、そのあたりが多少は改善されました。
僕の入社前からあったものに関しても、重要度が高いものから後追いでTerraformを導入していきました。
ここでちょっと思い出深いエピソードを話します。数百個あった「Route 53」のDNSレコードを全部Terraformに移行しました。移行した当時で、だいたい23ゾーン、約200レコードのDNS情報がRoute 53で管理されていましたが、これらはTerraformで管理されていませんでした。
Terraformで管理されていないと、コンソールでポチポチ作業しなくてはならず、また、Gitなどで履歴が管理されていないのはわりとつらいので、一念発起してTerraformに全部移行しました。Terraformの管理にするのも、わりとつらかったです。
やったことですが、まず不要なレコードを全部消しました。探したらだいたい5、60個ぐらい、要らないレコードがあったので全部消しました。
その後、移行が必要なものに関して、DNSのゾーンやレコードを1個ずつTerraformのimportコマンドでTerraformの管理下に移しました。今であれば、Terraformのimport blockを使うことでそれなりに楽はできますが、移行した当時は、このimport blockがなかったので、1個ずつimportコマンドを使いました。
集中力が切れると事故る可能性があったので、移行は多くても1日10個ぐらいにとどめました。これぐらいのペースで、全部を移行するのにだいたい2週間ぐらいかかりました。気づいている人がいるかもしれませんが、僕はあえて一括移行をしませんでした。
これの理由ですが、一応ツール(スライド中にあるTerraformer)は探して、あることは知っていたのですが、使い慣れていないツールを使って事故ると一瞬で会社の仕事が全部止まるので、ミスった時の被害を最小限にとどめるために1個ずつ丁寧に作業しました。
次に、運用系の便利ツールについて紹介します。(スライドを示して)この2つを紹介したいと思います。
まず、予算アラートです。あらかじめ決めた予算を超過していないかとか、予算の消化スピードを監視するために、すべてのAWSのアカウントやGCPのプロジェクトで予算アラートを設定しています。メールだと気づけないので、すべての予算アラートをSlackに通知するようにしています。
AWSの予算アラートは、(スライドを示して)だいたいこんな感じです。これは、AWSの標準機能だけで実現できます。ここに書いている「Chatbot」というのが、AWSが標準で用意しているSlack通知の機能です。
ただ、Terraformの「AWS Provider」だと、Chatbotに対応していなかったので、下記のサードパーティー製のモジュールを利用しています。
次に、GCPの予算アラートについて紹介します。GCPの標準機能だけだと、予算アラートのSlack通知が実現できなかったので、予算アラートのPub/Subトピックを受け取って、Slackに通知する部分を「Cloud Functions」で作りました。
予算アラートを設定する時に名前を自由に決めることができるのですが、そこの予算の名前のところに、Slackのチャンネル名を書いておけば、(スライドを示して)ここに書いているチャンネルにいい感じに予算アラートが飛ぶ仕組みにしています。
ここでいくつかTipsを紹介します。監視対象のGCPのプロジェクトと予算アラートの通知先のPub/Subのトピックは、実は別プロジェクトでもよいので、予算アラート専用のGCPプロジェクトを1個作った上で、新しく作るプロジェクトに関しては、ここの予算アラート専用のプロジェクトに対して、Pub/Subのトピックをひもづけるのが運用的にはとても楽でした。
次のTipsです。予算アラートを設定する時は、だいたい50パーセント、90パーセント、100パーセントみたいなしきい値を設定するのですが、このしきい値を一度超えると、無限にPub/Subのトピックに通知が行くことになります。
例えば、50パーセントから51パーセント超えたとか、51パーセントから52パーセントになるとか、そういったタイミングで、Pub/Subのトピックの通知が行くのですが、素朴に実装すると、Slackに無限に通知が行くことになり、かなりウザいことになります。
そのため、Slackに通知したかどうかのフラグを「Firestore」に持たせています。
次に、「terraform-updater」というツールについて紹介します。先ほども話したとおり、うちにはTerraformのリポジトリが60個ぐらいあるので、それらを1個ずつ手でバージョンアップするのは現実的ではありません。自動化したいと思うのは、普通に考えて人情でしょう。
うちのGitLabには、「dependabot-script」というのがあって、こいつを使えばTerraformのProviderの自動バージョンアップ自体はできます。
ただ、それだとTerraform本体のバージョンアップができなかったので、Terraformの本体のバージョンアップも自動化するために、こういったツールを作りました。
みなさんは、GitLabじゃなくて「GitHub」のほうを使っていると思います。GitHubでやりたい場合には、僕の個人ブログに全部やり方が書いてあるので見てください。
次に、研修について紹介します。研修に関しては、AWSさんやGoogleさんのご厚意により、さまざまな研修を受けさせてもらっています。詳しくは「pixiv inside」の記事に全部書いています。
次に、互助会について話します。ピクシブの社内では、プロダクト横断で特定の技術の知見を共有し合う互助会の文化が根付いています。
例えば、Rails系サービスの互助会だったり、フロントエンドの互助会だったり、iOSやAndroidのアプリ会だったり、データエンジニアリングの互助会などがあります。
最近までは、AWSやGCP関係の互助会がなかったのですが、近年、これらを使うプロダクトが増えてきたので、2023年、クラウド互助会を設立しました。今は、隔週30分ずつぐらいのペースで開催していて、だいたい毎回15人前後ぐらい参加しています。
次に、今後の未来のために何をやっているかについて話します。
(スライドを示して)今はだいたいこんな感じのことをやっています。まずは、オンプレミス環境と各クラウドの閉域網接続をやっています。
現在、オンプレミス環境のデータセンターとAWS、オンプレミス環境とGCPをそれぞれ閉域網接続しようとしています。通常は、だいたいデータセンターとAWSを先にやって、その後にGCPという感じだと思いますが、なぜか同時進行でやっています。明らかにこれは正気じゃないです(笑)。
AWSのほうは、「Direct Connect Gateway」を使っています。本当は「Transit Gateway」のほうを使いたかったのですが、契約当時、データセンターのキャリアが対応しておらず、やむなくDirect Connect Gatewayを使っています。GCPのほうは、「Partner Interconnect」を使っています。
Direct Connectとデータセンターのつながりは、(スライドを示して)だいたいこんな感じになっています。GCPのほうは、こんな感じです。これを見ただけでは絶対わからないと思うので、気になる人は、後で話を聞きに来てください。
次に、既存サービスの「Kubernetes」の移行を行っています。ピクシブの大半のサービスは、オンプレミスのデータセンターの中で動いています。オンプレのデータセンターの中にKubernetesのクラスタを構築して、既存のサービスを移行している真っ最中です。いくつかのサービスは、本番環境のKubernetesで動いています。
最後に、まとめを話します。僕が入社してからAWSやGCPの足回りが各段に進歩して近代化しました。そしてInfrastructure as a Codeの文化も根付きました。研修会や互助会などの文化も整備されてきました。今後は、オンプレも巻き込んでAWSやGCPを積極的に活用していきます。
今のピクシブは、AWS、GCP、オンプレのすべてがアツいので、興味がある人は、ぜひこの後、話を聞きに来てください。
ご清聴ありがとうございました。
(会場拍手)
関連タグ:
2024.12.20
日本の約10倍がん患者が殺到し、病院はキャパオーバー ジャパンハートが描く医療の未来と、カンボジアに新病院を作る理由
2024.12.19
12万通りの「資格の組み合わせ」の中で厳選された60の項目 532の資格を持つ林雄次氏の新刊『資格のかけ算』の見所
2024.12.16
32歳で成績最下位から1年でトップ営業になれた理由 売るテクニックよりも大事な「あり方」
2023.03.21
民間宇宙開発で高まる「飛行機とロケットの衝突」の危機...どうやって回避する?
PR | 2024.12.20
モンスター化したExcelが、ある日突然崩壊 昭和のガス工事会社を生まれ変わらせた、起死回生のノーコード活用術
2024.12.12
会議で発言しやすくなる「心理的安全性」を高めるには ファシリテーションがうまい人の3つの条件
2024.12.18
「社長以外みんな儲かる給与設計」にした理由 経営者たちが語る、優秀な人材集め・会社を発展させるためのヒント
2024.12.17
面接で「後輩を指導できなさそう」と思われる人の伝え方 歳を重ねるほど重視される経験の「ノウハウ化」
2024.12.13
ファシリテーターは「しゃべらないほうがいい」理由 入山章栄氏が語る、心理的安全性の高い場を作るポイント
2024.12.10
メールのラリー回数でわかる「評価されない人」の特徴 職場での評価を下げる行動5選
Climbers Startup JAPAN EXPO 2024 - 秋 -
2024.11.20 - 2024.11.21
『主体的なキャリア形成』を考える~資格のかけ算について〜
2024.12.07 - 2024.12.07
Startup CTO of the year 2024
2024.11.19 - 2024.11.19
社員の力を引き出す経営戦略〜ひとり一人が自ら成長する組織づくり〜
2024.11.20 - 2024.11.20
「確率思考」で未来を見通す 事業を成功に導く意思決定 ~エビデンス・ベースド・マーケティング思考の調査分析で事業に有効な予測手法とは~
2024.11.05 - 2024.11.05