ネットワークサービスの開発と運用は、別々のチームで実行されることがあります。そのような場合は、運用中にトラブルが発生したときに、開発側に問い合わせることで、時間や手間がかかってしまうケースが少なくありません。Nintendo Switchのネットワークサービスは、長期間にわたって世界中のお客様にご利用いただくため、安定した運用が求められます。そこで任天堂では、サーバーの開発だけではなく、その後の運用もネットワークサービスを開発したチームで行い、何か問題が生じたときは自分たちで速やかに改善をするようにしています。
私は、任天堂に入社し研修を受けた後に、ネットワークサービスの開発と運用を行うサイトリライアビリティエンジニア(SRE)チームに配属されました。そこで最初に担当することになったのは、「フレンドおすすめ機能」をリプレイスするという案件でした。Nintendo Switchのネットワーク機能を使うと、遠く離れた地域のフレンドと一緒にゲームを楽しむことができます。もしフレンド登録をしていない友達がいても、たとえばSNSなどでつながっていれば「フレンドになれるかも」とお知らせするのが「フレンドおすすめ機能」です。
その機能はクラウドサービス上で構築され、Nintendo Switch発売時から提供されてきましたが、連携サービスの追加などを行っていく中でいくつかの課題が生じてきました。たとえば、セキュリティ対策などのためにサーバーを定期的に更新する必要があるのですが、その作業に時間がかかってエンジニアが開発業務に集中しづらくなっていたり、サーバーの台数を増やす作業が煩雑になってきて、急なアクセス増加への対応が難しくなってきたりしていました。
そのため、最新のネットワーク技術を使ってサーバーの構成を作り直し、「フレンドおすすめ機能」をリプレイスすることになりました。
私は入社1年目のタイミングでこのプロジェクトを担当することになりましたが、最初はとにかくわからないことだらけで、不安でいっぱいでした。そこで、一緒に担当していた先輩社員にさまざまなことを教わりながら、社内用のテストサーバーを使って確認と検証を繰り返し、準備を漏れなく進めるようにしました。地道ではありましたが、自分の手を動かして準備を進めていくことで、何もわからなかった状態から段々と理解している範囲が広がっていき、最終的には無事にお客様の使われるサーバーにリプレイスを反映できるところまで行きつくことができました。その結果、ひとつのサーバーの更新にかかる時間は大幅に短縮されて更新頻度を高めることにもつながり、サーバーを適切な状態に保ちやすくなりました。また、IaC(Infrastructure as Code)と呼ばれる手法を用いて各種作業の自動化も実施し、急なアクセス増加にも自動的にサーバーを増やすことで対応できるようになるなど、長期的に運用していくための基盤強化にも貢献できたと考えています。
準備は大変でしたが、私はこの仕事を通じて、とてもたくさんのことを学ぶことができました。ネットワーク技術に関する知識はもちろんのこと、仕事に対する姿勢や取り組み方についても、実体験を伴って学ぶことができました。たとえば、バグを見つけたときに、一時的に直してそれで良しとするのではなく、バグの原因をとことんまで追求して根本から問題を解決する、という姿勢です。さらに、この仕事をやり遂げたことで自信も生まれました。先輩社員からも、「プロジェクト前と比べて大きく成長している」と言われ、とても嬉しく思ったことを覚えています。これからも、未知の領域であっても、知識と経験を基に自信を持って取り組むことで、高度なプロジェクトにも挑戦していき、世界中のお客様が利用される任天堂のネットワークサービスをSREとして支えていきたいです。