SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

【デブサミ2020】セッションレポート (AD)

トラブルこそ成長の機会――「手のかからない」インフラを目指してオンプレからクラウドに移行した60日間の奮闘【デブサミ2020】

【13-D-2】ぼくらの六十日間戦争 ~オンプレからクラウドへの移行~

  • このエントリーをはてなブックマークに追加

「トラブルは祭り」と思って、進んで参加し成長のチャンスをつかもう

 本番の移行作業は、アプリ開発とインフラの2チームが合同で行った。このため移行前の各種検証作業から本番移行まで、各プロセスでスムーズに共同作業を行うための工夫が凝らされた。そうした具体的な例のひとつが、「VMデプロイ パイプライン」だ。これは同社がソース管理に使っているGitLabを介してAWSにモジュールを配信する仕組みだ。これを使うことによって、デプロイ作業が標準化できたと左近充氏は言う。

 「当社は開発チームが札幌・東京・福岡の各拠点にあり、これまでは作業手順なども統一されていませんでした。それを『VMデプロイ パイプライン』経由で行うことにより、どの拠点からでも、誰でも確実にデプロイできるようになり、属人化の排除が実現したのです」(左近充氏)

「VMデプロイ パイプライン」を構築してデプロイ作業の標準化を実現
「VMデプロイ パイプライン」を構築してデプロイ作業の標準化を実現

 最大の山場である本番移行は、アクセス量がふだんの5分の1程度に減る、5月の大型連休中に行われた。作業を2グループに分け、5連休の初日2日に1日1グループずつ移行を実施。5日目まで挙動を見守り、連休明けから通常の運用に戻すスケジュールだ。

 リハーサルを入念に繰り返したかいあって移行作業はスムーズに進み、早くも3日目には全員が「勝利を確信していた」。ところが4日目、突如問題が発生する。データベース(Amazon RDS)のCPU使用率が60%を超えていることがわかったのだ。

 「Traceから特定のクエリでCPU使用率が上がっていることをつきとめて、いったんはRDSのスケールアップで13%程度まで抑え込んだのですが、6日目、再び使用率がどんどん上がってユーザーから繋がりづらいという問い合わせを多くいただきました」(左近充氏)

 再度詳しく調査を行い、特定の実行プランの異常がCPU使用率の高いクエリの原因であることが判明。いったんは実行プランを過去のものに戻して事なきを得たが、クエリストアを用いての対応だけでは抑えきれなくなる。CPU使用率急上昇の「第2波」がやってきたのだ。

 「調べてみると、CPU使用率を上げてしまう特殊なクエリが複数存在していました。ここから社内の有識者の意見も聞きながら、インフラ/アプリ開発チーム全員が『データベース健全化作戦』の約2か月にわたる深夜作業に突入していったのです」(左近充氏)

 主な作業としては、(1)統計情報の更新(2)断片化の解消(3)実行プランの固定化が行われた。なお(3)についてはQiita「SQL Server で使用する実行プランを固定化する」に詳しく掲載されている。

 昼夜逆転の状態で作業を続けること約2か月、全員の渾身の努力のかいあって作業はみごと完了。CPU使用率も30%程度に抑え込むことができたという。今回の一連の対応を通して得た知識や経験として、左近充氏は以下の3つを挙げる。

(1)データベースは移行前に身を清めておく必要がある

 日常的にインデックスの断片化をチェックして、必要なら再構成しておく。

(2)あらゆるパターンのクエリを移行前に試す必要がある

 今回は特殊なクエリで発生した障害だが、日頃からあらゆるパターンを試しておく。

(3)他チームとの協働を通じて専門外の知識を学びとる

 アプリ開発チームとインフラチームが、互いに足りないことを学び、知識やノウハウを提供し合えた。また長期の共同作業を通じて、お互いに仲良くなれた。

 これらの経験とノウハウをもとに、第2弾の移行=残りのサーバーの移行作業では特に大きな問題もなく、スムーズに完了できたという。

 最後にまとめとして左近充氏は、今回の移行プロジェクトでは、まさに今回のデブサミのテーマでもある「ともにつくる」体験ができたと明かし、そうしたマインドを得るために必要な3つのポイントを挙げる。

  1. 機会は平等ではない=成長する機会は平等には訪れない。
  2. 大事なことは積極性=成長する機会を得るには、やはり積極性が必要。
  3. 一歩踏み出す勇気=トラブルが発生していたら、進んで手を貸そう。

 自分から進んで機会を見つけていかないと、なかなか成長するのは難しい。左近充氏自身も、トラブルが起きているチームを見つけると積極的に声をかけに行くという。

 「トラブル対応は『祭り』だと思って自分から踏み込んでいき、いろいろなチームで貢献すれば、社内でのプレゼンスもおのずと上がっていきます。皆さんもぜひ積極的にトラブルを体験して経験値を増やし、成長につなげていけるよう願っています」と、左近充氏は力強く会場にエールを送り、セッションを終えた。

お問い合わせ

 株式会社ブロードリーフ

この記事は参考になりましたか?

  • このエントリーをはてなブックマークに追加
【デブサミ2020】セッションレポート 連載記事一覧

もっと読む

この記事の著者

CodeZine編集部(コードジンヘンシュウブ)

CodeZineは、株式会社翔泳社が運営するソフトウェア開発者向けのWebメディアです。「デベロッパーの成長と課題解決に貢献するメディア」をコンセプトに、現場で役立つ最新情報を日々お届けします。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

【AD】本記事の内容は記事掲載開始時点のものです 企画・制作 株式会社翔泳社

この記事は参考になりましたか?

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/12025 2020/03/23 12:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング