DeNA のインフラエンジニアを経て、スタートアップCTO。その後FiNCへジョイン
新卒で入社したDeNAでは、インフラエンジニアとして約4年間働きました。もともと高専を卒業して大学に編入していたのでプログラミング自体は初心者ではなかったのですが、いわゆるウェブ系のエンジニアとしては初心者として入社しています。
DeNAでは当時ソーシャルゲームが全盛期だったので、インフラエンジニアとして大量のユーザーアクセスをどうやってさばいていくかといったことをメインに、色々なスキルを身につけていきました。この時に身につけたスキルは今でも相当役立っています。一度の障害により影響を与えてしまうユーザーの数が膨大だったのでサービスに対する責任感といった部分もこの時に養われたと思います。
4年ほど勤めた後に、スタートアップを数人で立ち上げモバイルアプリのリリースをしました。役職としてはCTOでしたがアプリのリリースのために必要な作業はほとんど行いました。それまでは、大規模なサービスを運営していたといってもインフラ周りしか担当していなかったので、この時初めて業務としてiOS/androidのコーディングをしたりサーバーサイドの実装を行い、やることが多く忙しかったのですが、新しいことだらけの刺激的で日々を送りました。
サービスはリリースできたものの、会社としてのビジョンやサービスの成長可能性などの問題で会社自体は継続しないことになりました。そんな折に出会ったのがFiNC Technologiesです。自分の会社ではもっとも足りていなかったと痛感した"会社のビジョンの大切さ"を、社長の溝口を中心としてしっかりと持っている会社だなという思いから参加を決めました。
FiNCにジョインして4年間で行ってきたこと
FiNCには、一人目のインフラエンジニアとして参画しました。入社理由の一つは会社のビジョンでしたが、もう一つはびっくりするくらいインフラ環境が整っていなかったことです。実はもともとFiNCが提供していた"ダイエット家庭教師"というサービスをテレビで見たことがあり興味を持っていたのですが、一番最初に裏側の仕組みを見せてもらった時に、「このサービスはとてもいいけど1~2桁ユーザーが増えたら落ちるだろうな。。。」と思ったことを覚えています。それと同時に今までの経験から自分であれば、ここをこうする、あれをこう直す、といったことが具体的にイメージもできました。面白いサービスと自分の活躍できる具体的なイメージを持てたことがもう一つの入社理由となります。
ジョインしてしばらくは、環境整備に時間を費やしました。ステージング環境を新たに作ったり、足りてない監視を追加したり、全てのサーバーを冗長構成にしたり、ansibleの整備をしたりといった部分です。DeNAである程度のインフラ作業は経験していましたが、本当にほぼゼロから整えていくといった経験はなかなかできないことだと思います。また、インフラエンジニアとしてジョインをしていましたが、あまり明確に責務が分断されていなかったので、サーバー側のコードにも手を入れたり、Railsで書かれた認証アプリケーションの担当にもなりました。デプロイフローの整備なども行っていて、そういった背景の中、この時期にインフラチームではなくSRE(Site Reliability Engineering)チームという名前に変更しています。
FiNCのサーバーはマイクロサービスで構成されていて、徐々にサービスの数が増えてきたので2016年頃からDockerの利用を開始しました。割と大きな意思決定だと思いますが、特に社内からの反発もなく当たり前のように新しい技術をどんどん取り入れていく文化はこの時から今も変わらずFiNCにあると感じています。
現在のSREチームは、kubernetesやサービスメッシュの利用をメインの施策として行っているところで、より良い環境づくりのために日々新しい技術を学んで実践しています。
FiNCエンジニアチームは多種多様なスキルが集まる場所
最近はエンジニアマネージャーとして、SREチーム以外のチームとも関わっているのですが、FiNCのエンジニア組織は非常に多種多様です。
ベーシックな部分では、サーバーサイドチームとiOS/Androidを担当するクライアントチームがいますが、AIをサービスに導入するチーム、データ分析やグロースを担当するチームなどがあり、チームといった単位ではなくてもwebフロントの技術が得意なエンジニア、セキュリティが得意なエンジニアなど、IoTを趣味で触っているエンジニアなど非常に多種多様な技術が溢れていて面白い場所です。
また、技術だけでなくサービスといった面でも、toCのモバイルアプリ、toBのブラウザサービス、ECサイトなどなどいろいろな形態のサービスを提供しています。
私自身もメイン担当はインフラですが、クライアントチームと今後の戦略の議論をさせてもらったり、実際にBFFの実装をしてみたりと、かなり業種とスキルを超えた経験をさせてもらっています。
SREチームとして今後推進していきたいこと
SREチームとしては、今後よりDevOpsを推進していきたいと考えています。そもそもDevOpsとは、Dev(開発者)とOps(運用者)の境界を無くしていくことにより、提供しているサービスの価値を上げていく取り組みのことですが、まだまだここの整備が足りていないと思っています。
DevOpsは環境が整備されていない状態で無理やり推進しようとすると、単なるアラートの押し付け合いになったりしてしまうので、SREチームとサーバーサイドチームで十分な話し合いをし、十分なツールが揃っている上で実現されるものであると考えています。ですので、そのためのサービスメッシュであったり、充実した開発環境であったり、安定したCI/CDであったりが重要になり、今はそういった周辺のツールをしっかり整えている段階です。
FiNCのサービスは年々トラフィックも増え、マイクロサービスもどんどん複雑化していっているので、こういった環境でDevOpsを推進するための環境整備をしていくことは非常にチャレンジングであり、スキルアップに繋がると思います。SREチームでは、サーバーサイドの知識もインフラの知識も求められる面がありますが、なによりも自分の仕事の範囲を染み出してくような働き方や、組織全体をよくしていくような働き方をしたい人を求めています。インフラの経験が特になくても新しい技術への興味がありDevOpsに興味があれば是非一度オフィスに遊びに来て色々とお話しできればと思います。