組み込みエンジニアのインフラ/SREへの挑戦

組み込みエンジニアのインフラ/SREへの挑戦

はじめに

みなさま、初めまして。昨年11月にphotosynthに中途で入社したny-yoです。よろしくお願いします。
今回は組み込みエンジニア出身の私が、インフラ/SRE領域に挑戦した1年を振り返りたいと思います。

なぜインフラ/SREに挑戦しようと思ったのか

なぜ組み込み出身の私が異なる領域に挑戦しようと思ったのか、私自身の思い、きっかけに絡めて紹介します。
私は新卒で某複合機メーカーに入社してから、組み込みLinuxデバイスドライバなどいわゆる低レイヤーソフトウェア開発に携わっていました。 これからの時代はデバイスとWebのシームレスな連携、「モノ」から「コト・体験」が重要になってくるIoT時代がどんどん加速していきます。
Photosynthは「デバイス」も「Web」も社内で開発しサービスを提供しているテックベンチャーの中でも非常に稀有な存在ではないでしょうか。そんなPhotosynthに入社して、「デバイス」と「Web」が重なり合う領域に携わりたいと考えていました。
また、ちょうど入社して少し経ったぐらいのタイミングで、開発部内でインフラ/SRE領域が人手不足でヘルプ要請があったのです。 なので、これはチャンスだと思い「自分でよければぜひやってみたい」と部長や上長に申し出てチャレンジしたのがきっかけです。

挑戦してみての印象

勢い勇んで飛び込んでみて、サービスを支えているシステム裏側を支えている仕組みの複雑さに驚きました。
「鍵」という重要なセキュリティインフラを扱っているため、サービス稼働の監視、バックアップ体制、インフラ冗長化など、書籍やネット記事で目にして、なんとなく理解しているつもりでも生きたサービスで実際に使われていることに改めて驚きましたね。 また自分が今まで知らなかったWeb関連のOSSなどたくさん使われているので、最初はかなり戸惑いました。(「nginx」の読み方がわからなかったのはいい思い出ですね。)

どんな業務をやってきたのか

実際の業務ですが、各種ツール/サービスのアカウント管理、サーバー管理、脆弱性対応、インフラ周り対応など幅広く携わることができましたが、中でもサーバーの「OSS/Middleware」脆弱性の負債返済と闘ってきた1年だったかなと思います。
PhotosynthのいくつかのサービスはAWS上に本番サーバーインスタンスを建ててWebアプリ等を稼働させているのですが、その当時課題となっていたのが、サーバーの「OSS/Middleware」バージョンアップです。
ソフトウェアも日々脆弱性が見つかったり潜在的なバグが見つかったりと日々のメンテナンス、更新の繰り返しが必要です。Photosynthで稼働しているサーバーもサービス稼働してから更新が滞っており、積み上がった脆弱性を潰していくのが、メインミッションでした。
とはいえ、実際の本番サーバーに対する作業はサーバーにssh等で入って、更新適用し、サーバーを再起動する

sudo yum update
sudo reboot

たったこれだけのコマンドを打つだけです。これだけなんですが、更新を適用した後も問題なく稼働しているか、挙動がおかしくならないか、負荷トレンドが急上昇しないか、作業以上に確認すべきこと、注意することが多いです。
また、作業対象のサーバーも以前から稼働した状態で、どんなアプリケーションが動いているか、OSSは何を使っているのか全くわからないものを相手にする必要がありました。 なので、本番作業を迎えるにあたり毎回以下のことを必ず守るようにしてました。

  • 稼働しているサービス、OSS、接続先、インフラ構成等、仕様を把握する(人に聞いたり、社内文書検索したり)
  • STGで事前検証を入念に行う
  • 更新対象のOSSのバージョン差分をよくみる(特に大きなバージョンアップはないか)
  • 本番環境での手順書を作成、関係者にレビューいただく
  • 実際の本番作業はからなず複数人で行う
  • 万が一の時を備えてロールバックなどの手段を必ず用意する(更新前のイメージスナップショットを取得)
  • 更新作業が終わった後も稼働状況や負荷トレンドをしばらく見守る

当たり前と言えば当たり前かもしれませんし、少々過剰気味な気もしますが、安定したサービスを提供し続ける、障害を発生させない、という観点ではこれぐらい慎重に対応するぐらいがいいかなと思います。
一方で現状はサーバーに直接入って、更新対象確認して、アップデートコマンド実行してと、まだまだ手作業が多いのも課題かなと感じています。
AWS Patch Managerでパッチ管理/自動化やE2Eテスト自動化などシステムに任せられるところは任せて、開発者の負荷を減らしながら、継続的な仕組みにできるとよりいいですね。

挑戦してみて、気づき

今までは開発者として「新製品、新機能、新サービス」を納期厳守でリリース、不具合があったら(渋々)修正する、など作っては世に出して、その後のアフターフォロや稼働状況はあんまり気にはしてなかったのが正直なところです。  

今回初めて「開発」の立場から「運用保守」の立場になってみて、やはり自分たちが作って世に出したサービスが実際に使っていただくのは嬉しい、世に出して終わりではなく、ずっと使っていただくためにも日々の小さなメンテナンスやアフタフォローが大事だと改めて感じさせられました。

インフラ/SREはその職種立場上、他のサーバーやリソースにアクセスできたりと、より強い権限を持っています。だからこそ、古くからの格言でもある
「大いなる力には大いなる責任が伴う」
言葉を胸に刻んで、(特に本番環境では)緊張感をもって作業するようにしてます。

また、これは特にサーバーコンソール上で作業している時に頭の片隅に置いてるんですが、
「Think, before you type.」
コマンドのタイプミスが重大な事故になってしまったなど、よく耳にします。
コマンドを「カタカタ、ターン!」てやる前に一呼吸置くようにしてます。

これから

インフラ/SREに挑戦してみて、色々学ぶ機会が多く、より成長できた1年だったと個人的に思ってます。
未経験ながらもこのような機会を与えてくれた職場には感謝しつつ、これからもよいサービスを提供し続けられるように精進いたします。
今回は少し抽象度が高く一般的な内容にとどまってしまいましたが、
機会があれば、Photosynthならではの「Web」だけじゃない「デバイス」も絡めたインフラ/SREの難しさ、醍醐味なんかについても紹介できればと思ってます。


株式会社フォトシンスでは、一緒にプロダクトを成長させる様々なレイヤのエンジニアを募集しています。 photosynth.co.jp

Akerunにご興味のある方はこちらから akerun.com