「カオナビ」のインフラ基盤を担うオペレーショングループ。そこに所属する宮下さんは、ソーシャルゲームの世界を経て、2021年にカオナビにジョインしました。
通常、フロントエンドや各サービスの開発が「攻め」だとすれば、保守・運用は「守り」の開発とされます。そんな中、宮下さんは「カオナビ」におけるDevOpsエンジニアとしての職務を「攻撃的守備」だと表現しています。
その真意、そして仕事の面白さ、やりがいはどこにあるのかを語ってもらいました。
人というファジーな世界をシステム化することに惹かれた
宮下さんは、エンジニアとして長くゲーム業界にいたそうですね。
はい。以前は、約10年間、ゲームの世界でエンジニアをしていました。最初の会社では育成ゲームのリリースに携わり、その会社が2012年に大手ソーシャルゲーム会社にM&Aで買収されて移籍し、某ゲームの部署にいました。
ゲーム会社では主にバックエンドエンジニアをしていまして、ユーザー獲得のための毎月の施策について、PHP側の実装などを担当していました。
なぜ、カオナビに転職しようと思われたのでしょうか?
10年間、ゲームの最前線で仕事をさせていただいて、「やりきった」という感覚がありました。それで、ゲームからは離れて、新しいチャレンジをしたいと思ったんです。
折しも、DXが盛んに言われるようになりましたが、その分野に興味を持って転職先を探していたところ、HR業界が非常に面白そうだと思い、応募しました。
人の関係性や評価というのは、かなりファジーで数値化・システム化がしづらい部分だと思うんです。そこを新しいプロダクトで解決していこうというところに惹かれました。
プロダクト本部SRE部
オペレーショングループ
宮下博行ソーシャルゲーム黎明期に某育成ゲームのバックエンドエンジニア開発を担当。AppStore、GooglePlayで何度も無料ゲーム一位を獲得した。2012年に某ソーシャルゲーム会社にM&Aで移籍となり、21年までバックエンドエンジニア、Nativeエンジニアとして前線で活躍。21年8月にカオナビに入社し、オペレーショングループの運用改善を主に担当。
数時間掛かっていた作業が、数十分に。
宮下さんが所属されている、SRE部オペレーショングループの職務を教えてください。
オペレーショングループには、現在15人ほどのメンバーが在籍しています。私たちの仕事は、主に3つあります。
1つ目は、毎日のリリース作業。2つ目は、お客様と直接やりとりしている営業部門やサポート部門からの技術的な問い合わせの窓口として、サポート及びフォローの他、実際に技術調査や仕様確認、不具合対応など。そして3つ目は、開発業務効率化のために運用業務で利用しているシェルの開発・改善・運用・保守です。
私の担当はその中でも、3つ目がメインです。
運用業務で利用しているシェルはどのようなものでしょうか?
主に、本番のデータベースに対する操作やデータ集計、本番デプロイ作業のサポート、調査といった用途で使われるプログラム群です。
簡単に言えば、開発をサポートするプログラムですね。これによって、例えばお客様からのバックアップやパスワードリセットといった依頼に対して、それまでは手作業でやっていたものが自動化できるようになりました。
この開発・保守・改善作業はオペレーショングループ、もっといえば私が全体的に担っています。
運用業務で利用しているシェルによって、具体的にどのような改善がなされたのでしょうか。
大きな事例としては、本番のデータベースサーバに対するクエリの実行改善作業があります。
新しいサービスをリリースする際には、顧客情報が蓄積されたデータベースに対してクエリという処理を実行する場合があります。
複数のサーバに分散して顧客のデータが入っているのですが、このクエリ処理を1顧客ずつ順に実行していたわけです。 運用初期から利用していたものでしたが、データ量やサーバー台数の増加に伴い処理時間が課題となっていました。
そこで、クエリを並列実行をするプログラムを加え、その結果、処理時間を10分の1以下に抑えることができました。 これはリリース作業を大幅に短縮することにつながります。
開発の中で宮下さんが目指していることは何ですか?
できるだけ、ミッションクリティカルなサービスであることを目指しています。すなわち高い安定性を保ったシステムにするということです。
私がソーシャルゲームの世界にいた時は、24時間365日、システムが止まらないことが大前提なんですね。もしサーバが落ちれば、夜中であっても即座に対応しなければならない。
もちろん、「カオナビ」とソーシャルゲームでは環境が異なりますが、それくらいの安定性を持ったシステムを作るんだというマインドは会社全体として持っておきたいな、と思っています。
仕事で大変だと思うことはありますか。
より良い開発を行うためには「カオナビ」全体の機能を熟知していなければなりません。全体を把握するのにはかなりの時間が掛かるので。正直、私もまだ全部を分かっているわけではありません。日々発生する問題に対処しながら、ソースコードやドキュメントを見たりして、地道に積み重ねていっているところです。ただし属人化をそのままにするつもりはなく、現在マイクロサービス化するプロジェクトを進行中です
「攻撃的守備」というDevOpsならではのやりがい
バックエンドやDevOpsのお仕事は一見地味にも感じられますが、どのような面白さ・やりがいがあると感じていますか?
確かに、フロントエンド開発や新規サービスの開発は、一般的にも分かりやすいイメージですよね。いうなれば「攻撃」です。それに対して、DevOps、すなわち運用や保守のほうは「守備」のイメージが強いのではないでしょうか。
どちらが好きかは、エンジニアの性格にもよると思いますが、私自身は自分の仕事を「攻撃的守備」の立場だと捉えています。
「攻撃的守備」とは、どういうことでしょうか。
多くのエンジニアが「攻撃」を好むのは、自分が良いと思った開発に注力できるからです。運用や保守は、どちらかといえば安心・安全・丁寧が求められるため現状を維持できるように注力する志向が強いのは間違いありません。
ただ、そうした「現状維持」の中にも、いかに難しい環境の中で障害を出さないか、開発者が活躍できる環境を揃えるかという課題があり、それらを実現するために仕組みやツールを作ることは、攻撃的な要素を含んでいます。
そういう意味で、今の私の仕事は守備的な立場から攻撃的な改善をする=「攻撃的守備」と呼べるもので、そこに大きなやりがいと楽しさを感じています。
DevOpsには、どんなエンジニアが向いていると思われますか。
これは私の持論なのですが、エンジニアというのは基本的に“めんどくさがり”な人が多いんですね。言い換えれば、仕事をより早く、簡単に終わらせるためには努力を惜しまないことですね。
これは、実はDevOpsの分野でいちばん光るものだと思っています。運用や保守というのは、何かトラブルがあった時に、それが最小限の被害や対応で収まるようにするものです。その意味で、エンジニアとして最高に“めんどくさがり”な人に向いている仕事だと思います。
カオナビならではのやりがいや課題はどのようなものでしょうか。
今、大きな課題だと感じているのは、データベースをよりエンタープライズ向けのサービスに適した仕様に変えていくことです。
データベースの自由度を高く設計しているために、検索や応答速度が遅くなってしまうところがあります。ただ、これはプロダクトの初期の段階では、顧客の獲得のためにそうせざるを得なかったところでしょうし、私でもそのように設計したと思います。
プロダクトや会社が成長したからこそ見えてくるこうした課題は、ボトムアップな環境ならではですし、より一層成長するために解決していかなければならない問題です。それに携われるというのは大きなやりがいです。
これからの目標を教えてください。
大きくは、組織が今以上にエンジニアにとって働きやすく、成長できるような場所となるように、バックエンドという立場から支えていきたいと考えています。
より具体的には、現状でオペレーショングループが全面的に担っているリリースから運用・保守の作業に関する業務やノウハウ、プロセスを、全社的に共有できるよう組織の文化や仕組みを変えていきたいと考えています。
すべての開発チームが能動的にシステムに関わる意識を持てるようになれば、より良いサービスの開発につながっていくはずです。エンジニアとしてなのか、マネジメントとしてなのか分かりませんが、そういう動きを率いていくような立場になれたらと思います。