ソーシャルPLUSのインフラチームは、これまで1〜2名の少人数でプロダクトを支えてきました。インフラをひとりで担っている髙山さん(通称 tsubさん)* に、ソーシャルPLUSの特徴・インフラの面白さ・勉強のスタンスなどを聞きました。
*人数は記事公開時点。以降、通称の「tsub」さんと表記
「面白い」「楽しい」という単語が頻発するインタビューとなりました。ソーシャルPLUSのインフラエンジニアは何を面白いと感じているのか、ご注目ください。
tsub そうです。最初に所属したチームでは、広告データを自動変換するマーケター向けプロダクト「DF PLUS」を開発していました。
業務や自学の中で、コンテナやAWSの便利さ・面白さがわかってきました。はじめはバックエンドからインフラまで幅広く触っていましたが、コンテナ移行の対応などを経て、徐々に仕事がインフラ中心になりました。
ある時、自分が次のプロダクトに移る話が出て、技術的に一番面白そうだったソーシャルPLUS担当を希望したんです。いくつかの選択肢の中でソーシャルPLUSを希望したのは、こんな理由です。
加えて、ソーシャルPLUSに来てから分かったのですが、ソーシャルPLUSには規模の大きいお客様もいて、リクエストが思った以上に多かったです。元々「大量のリクエストを捌くことこそインフラエンジニアの腕の見せどころ」と考えていたので、モチベーションがもっと高まりましたね。
tsub やっていることは、クラウドインフラエンジニア・SRE のようなイメージです。AWS上でWebサービスを運用するための基盤作り全般を担当し、お客様からの信頼性や、開発チームの生産性を上げることを目指しています。
個人的に重視していることもあります。
まず、プロダクトやチームの成長フェーズに合った方法を選ぶことです。必要以上にリッチな構成にしてしまうと、金額や実装〜運用の人的コストが過剰になってしまいます。場合によっては、多少オーバースペックな方法でも最初から導入しますが、その時々の成長フェーズにマッチするか必ず検討しています。
また、セキュリティと開発効率のバランスも大事です。プロダクトのセキュリティを担保しつつ、自分達の開発効率は落とさないような方法を選んでいます。
さらに、変更の経緯をしっかり残すことも意識しています。前任の担当者がどんな背景で今の構成にしたのか、確認する方法が無くて困った経験がありました。将来チームに加わってくれる人が困らないように、コード管理しているものはコメントや PR 内に、それ以外はesa*に、それぞれドキュメント化しています。
*ソーシャルPLUSで使っている、「チームのみんなで育てる」というコンセプトのドキュメント蓄積ツール
最近の仕事の中で大きいトピックは、ソーシャルPLUSのインフラ基盤を4年かけてコンテナに移行しきったことですね。
今後は、アクセス量に合わせて自動的にスケールアウトとスケールインができる仕組み作りや、負荷テストの簡略化などをやっていきます。
tsub 例えば障害対応では、起きてしまったことへの申し訳なさや、原因がわからない中で1秒でも早く復旧させねばならないというプレッシャーを感じます。とはいえ、非常時にチーム全体が殺伐とするわけではなく、それぞれがすべきことを着実に進めて、無事解決したら「お疲れ様でした」と互いを労う雰囲気なので、少し救われます。
障害対応のような大変なこともありますが、自分にとっては総じて楽しさが上回っています。ソーシャルPLUSに異動してやりたかったことができてよかったですし、やっぱりインフラそのものが面白いです。
tsub バックエンド開発だと、1つの機能を作るのに数日や数週間かかることが多いです。でもインフラは、先人が作ったツールの導入や設定値の調整をすることが多く、コードの行数やかけた時間に対して、必ずしも結果が比例しません。短期間で状況を改善できたり、数行の変更で大きな成果を出せたりするのが楽しいです。
1行の変更のために何日も調査を続けるなど大変なこともありますが、自分はあまり苦に感じません。むしろ、分からないものを手探りで探す過程も楽しいです。仕事していない時でもずっと考えてしまうぐらいです。
いざ実装する段階になってしまえば、頭の中にあるイメージをコードにするだけなので、短時間で終わります。色々なことを考えながらコードを書いていくのはアドレナリンがドバドバ出ている感覚で、すごく楽しいです。作ったものが、元々考えていた通りの挙動をする時は、もう最高です。
tsub 小学生の頃から、PCでタイピングソフトやチャットなどをやっていました。中学では自分専用のPCができて日常的にPCを触るようになり、自分で色々なことを検索して知識をつける習慣ができてきました。MMORPGにどハマりして、寝る間も惜しんでプレイしている時期もありましたね。
その後、情報系の大学に進んで本格的にプログラミングを始めました。基礎を学ぶのは地道な道のりでしたが、PCの上で動くものを作るのがとにかく楽しかったです。カリキュラム外では、レンタルサーバーを借りてマインクラフトのサーバーを立てて友達と遊んでいました。自分で Linux サーバーを構築して、独自ドメインを当てて、サーバーの保守をする流れを、この時に初めて経験しました。
他にもいろんなプロジェクトやインターンを経験する中で、就職先としてWeb系に惹かれて、今に至ります。
tsub 時間配分でいうと、入社した頃からずっと残業0を意識していたので、その延長という感覚です。昔は、プライベートの時間を少なからず技術の勉強に使っていました。こどもが生まれてからは忙しくなったので、オフの時は息抜きで、もっぱらゲームをしています。同僚とSplatoon3の対戦をすることもあります。
tsub プライベートで全く勉強しないわけではないですが、できないことがあっても焦らず、業務時間でしっかり学んでいくのが自分の基本スタンスです。仕事で近々やりそうなことを、プライベートの時間で素振り(ドキュメントを確認・コードを書いて検証)することはありますが、義務感からではなく、ただ面白そうだからやっているだけです。
昔は、新しい知識を習得するのに時間がかかって焦っていました。でも、ある時自分の中でブレイクスルーがあって、Webサービスの技術の全体像が見えてきました。その頃から、新しいものの大枠を掴むのが早くなりました。要領良く勉強できるようになったからといってあぐらをかく訳にはいきませんが、焦らなくなったのは自分にとって良い変化でした。
焦るような環境にいると精神的にも辛いので、常に落ち着いた状態を維持する工夫はしています。特に仕事では、焦る必要がないように、仕組みを整えて備えています。それでもアラートがゼロになるわけではありませんが、心配しすぎてもしょうがないな、というマインドです。
tsub 個人としては、作りたいものを一通り自力で作れるだけの技術力をつけたいと思っています。これまでは、たまたまインフラが一番面白いと感じていたのでインフラを深めてきましたが、バックエンドやフロントエンド領域にも業務レベルで手を出していきたいです。また、OSS へのコミットにももっと力を入れていきたいと思っています。
あとは、現在2歳の息子と一緒にゲームするのが夢です。友達感覚で一緒にプレーできたら楽しいだろうなぁ。
tsub 今は、極めて少ない人数でインフラに関わる全てをカバーせざるを得ないのが課題です。
将来的にはインフラチームを、共通基盤になる部分にフォーカスするチームと、プロダクト開発に必要なインフラ対応をするチームに分けられると理想的です。今の編成だと、全員がプラットフォームもプロダクトも一定以上の深さで理解する必要があります。プロダクトは日々機能が進化しており、キャッチアップに努力が要ります。ひとりで頑張り続けるには限界がありそうなので、チームの仕組みで解決したいです。
コンテナ移行が完了し、これまでよりも運用しやすくなった分、新たにチャレンジしたいことが色々あります。これからチームに加わってくださる方と一緒に、取り組んでいきたいです。