株式会社ディー・エヌ・エー システム本部 IT統括部 IT基盤部 第一グループ
本田 恭さん
大学卒業後、サイバードでWeb系のアプリケーションエンジニアとして入社。2年目にインフラエンジニアに転向。同社で約3年半働いたのち、2015年にDeNAに中途入社。インフラエンジニア兼SREとして活躍するかたわら、オートモーティブ系プロダクトのアプリケーション開発にも従事。サーバやデータベース、クラウドのマネージド・サービスにも精通している
多くの企業でDXが進み始め、クラウドサービスやネットワーク通信が必要なアプリも普及した。それによって、インフラ環境を整備するインフラエンジニアの需要が高まっている。
しかしインフラエンジニアの数はまだまだ不足している。さらに、今のインフラエンジニアには従来のオンプレ知識はもちろん、クラウドや仮想化の知識も求められるため、求められるスキルのレベルも上がっていると言えるだろう。
ではこれからインフラエンジニアに転向したいと考えるエンジニアは、どんなふうに準備を整えていくべきなのか。
そこで今回話を伺ったのが、DeNAでインフラエンジニアを務める本田さんだ。本田さんはアプリケーションエンジニアとしてキャリアをスタートさせたが、インフラエンジニアに転向。いまではSREとしての役割も果たしながらDeNAのサービスを裏で支えている。
本田さんに、インフラエンジニアに必要なスキルや、効果的な勉強方法を伺った。
株式会社ディー・エヌ・エー システム本部 IT統括部 IT基盤部 第一グループ
本田 恭さん
大学卒業後、サイバードでWeb系のアプリケーションエンジニアとして入社。2年目にインフラエンジニアに転向。同社で約3年半働いたのち、2015年にDeNAに中途入社。インフラエンジニア兼SREとして活躍するかたわら、オートモーティブ系プロダクトのアプリケーション開発にも従事。サーバやデータベース、クラウドのマネージド・サービスにも精通している
本田さんの経歴
アプリケーションエンジニア → インフラエンジニア
キャリアチェンジのために工夫したこと
インフラエンジニアの仕事に必要な、幅広い言語の知識を付けるために…
・公開されているツールのコードを読み込み、言語ごとのトレンドを抑えた
・AWSサミットやGCPカンファレンスなどに参加し、各クラウドサーバーの最新情報や、さまざまな企業で実践されている最新事例を把握した
・開発時にはあえて使ったことのない言語を用いた
本田さんがインフラエンジニアに興味を持ったのは、アプリケーションエンジニアとして働き始めて2年目のこと。当時はサーバーサイドを担当していたが、自分の関わるアプリケーションについて、仕組みを全て理解した上で開発したいという思いが強くなっていったという。
「その頃に関わっていたアプリケーションは、その場しのぎで作ったつぎはぎのインフラで動かしていため、トラブルが多かったんです。そこをアプリケーションエンジニアが直しながら使っていたんですけど、それならインフラまで全部できるようになりたいと思うようになって。それで徐々にインフラ領域にも足を踏み入れていきました」
実際にインフラの作業に携わってみて本田さんが感じたのは、障害やエラーが起きたとき、根本的な原因を解決しないままサービスを運用してはダメだということ。「エラーが出なくなったからとりあえず大丈夫だろう」と、原因を徹底的に究明しないままサービスを動かし続ければ、いずれ同じエラーがまた起こる。とはいえアプリケーションエンジニアがインフラまで同時に担当するのは難しい。
「多くのユーザーを抱え、絶対にダウンさせてはならないサービスを安定的に稼働させるために、インフラエンジニアの仕事が不可欠だと思いました。インフラがうまく機能していれば、サービス開発全体を支えることにもつながります」
そうして本田さんは本格的にインフラエンジニアへの転向を決めた。
ジョブチェンジをするにあたって本田さんがまず取り組んだのは、AWSなどのクラウドサービスを実際に触ってみること。自分でサーバーを立てて、どういう仕組みなのか、どのようなことができるのか、既存の方法を真似してシミュレーションを行った。
それから、さまざまな言語を読めるようになるため、技術知識の幅を広げることにも注力した。
「いまは一つのアプリケーションがJava、Kotlin、Pythonなどさまざまなコードで動いています。インフラエンジニアはいざ障害が起こったら、そのアプリケーションで使われている全てのソースコードを読まなければなりません。そのため、どのコードにもある程度対応できるようにしておきたいと思いました」
とはいえ、アプリケーションエンジニア時代はPHPしか書けなかったという本田さん。どのように新しい言語を習得していったのだろう。
「インフラエンジニアの場合、大事なのはあくまでもそれぞれの言語の特徴をつかむこと。フレームワークやオープンソースで公開されているツールのコードをよく読み込んで、言語ごとのトレンドを勉強するようにしていました」
AWSサミットやGCPカンファレンスなどに参加し、各クラウドサーバーの最新情報や、さまざまな企業で実践されている最新事例を把握することも怠らなかった。AWSやGCPのWebサイトに掲載されている企業事例も参考になったという。
もちろんコードを読むだけでなく、実際にコードを書くことも重要だ。本田さんは自分で自動化スクリプトを書いたり、個人的にアプリケーションを開発したりするときは、これまで使ったことのない言語で開発するよう心掛けていた。
「さまざまな言語の知識が必要とはいえ、個人的には複数の言語を同時に勉強するのは効率が悪いと思っています。むしろ、一つの言語を集中して学んだ方がいい。その上で僕の場合は、一つの機能やアプリケーションを最後まで“作りきる”経験を重ねるようにしました。
例えばサーバーサイドでPythonを使ったAPI開発を行うなら、その機能を作り切って、出来上がったアプリケーションをAWSやGCPの環境で実際に動かしてみる。そんなトレーニングを行いましたね」
それぞれの言語について「学ぶこと」と「実践すること」を繰り返したことが、結果的に多数の言語を短期間で習得するための近道だったと、本田さんは振り返る。この時、アプリケーションエンジニアとして“コードを書く”という行為がしっかりと身に付いていたことが有利に働いたそう。
「インフラエンジニアは意外にも、自動化スクリプトを書いて工数を削減するなど、コードを書いて問題解決することが多いんです。面倒臭いなと思ったら、コードで効率化するというか。だからこそ、コードを書くのが好きな人が向いていると思います」
それ以外にも、アプリケーション側のメンバーにとって仕事のしやすいインフラ構成や、日常業務の大変さに配慮したコミュニケーションも重要。それができるのも、アプリケーション開発の経験があったからこそだと本田さんは考えている。
とはいえコンピュータサイエンスの知識や経験があれば、インフラエンジニアになるための準備はもっとスムーズだったかもしれない、という反省もあるそう。
「最初はサーバーのどこかに負荷が掛かったとき、その原因や解決方法がまったく分かりませんでした。プログラムのデータ構造やアルゴリズムを理解できるようなコンピュータサイエンスの基礎知識があれば、もっとはやくキャッチアップできたかもしれません」
こうしてインフラエンジニアとなった本田さんは、現在DeNAに入社して6年目。社内でもベテランエンジニアとしてグローバルに展開しているゲームタイトルや、LIVEコミュニケーションアプリ『Pococha(ポコチャ)』などのインフラ整備やSRE業務を担当している。
自動化させるためのツールを開発したり、無駄な処理を行っている箇所を見つけて最適なプログラムに変更したりするなど、サービスに負荷が掛かりすぎないよう、安定性を高める工夫を行っている。中でも、仮に障害が起こっても復旧を高速化・自動化できる仕組みを考えることに心を砕いているそうだ。
フロントエンジニアなどと違って、表立ってフューチャーされにくいインフラエンジニアの仕事。しかし、そのやりがいについて本田さんはこう話す。
「僕は別に目立ちたいわけじゃないので、『すごいサービスを開発してやろう』みたいな気持ちはないんです(笑)。それでも、大きなサービスをリリースした後、電車の中でそのサービスを使っている人を見たり、サービスがトラブルなく稼働できているのを見たりすると達成感がありますね。
過剰な構成のサーバーをコスト削減したり、無駄なループ処理をしていたコードを発見して効率の良いプログラムに書き換えたりできたときにも、サービスに貢献したという手応えを感じることができます」
一方で、例えばどんなに小さなエラーも見逃さない厳しい目線を持つことや、自分の行った作業の正当性やアーキテクチャ設計について論理的に説明する力を付けること。また、原因を徹底的に突き止めて再発防止する姿勢といった、DeNAが求める高い品質に応えることなど、大変なこも多かったそう。そうした部分は、チームにあるタスクを積極的に拾うようにし、失敗しつつも指摘を受けながら少しずつできるようになっていったという。
本田さんはこれからもインフラやサーバーサイドなど、サービス開発を支える業務に関わっていきたいと考えている。面倒な作業をなくして、開発効率を高めることに大きなやりがいを感じているのだそう。そのためにも試行錯誤を行い、よりコスト削減できる方法を知って、さまざまなツールの使い方を試していきたいと意気込んでいる。
そんな本田さんに、これからインフラエンジニアを目指す人に最も大切なことは何か聞いた。
「障害やエラーが起きたとき、とことん原因を追求して解決する姿勢が重要だと思います。そのためには、気になったことは最後まで解決しようとする力が必要です。広く浅くいろんなことに興味がある人より、一つのことをどこまでも掘り下げて探求するタイプの人の方が、向いているかもしれませんね」
どんな問題点も見逃さず、サービスの安定稼働を守るインフラエンジニア。彼らのバックアップがあってこそ、アプリケーションは今日も問題なく動き続ける。
取材・文/石川香苗子 編集/河西ことみ(編集部)
NEW!
NEW!
タグ