NEW
セキュリティメーカーにおけるオンプレ&SaaSハイブリッド開発での生産性向上の取り組み
2024年11月15日、ファインディ株式会社が主催するイベント「開発生産性Kaigi スタートアップが目指す、開発と事業成長の接続〜価値創造への挑戦〜」が開催されました。
本記事では、株式会社網屋でチームリーダーを務める福地 信哉さんによるセッション「セキュリティメーカーにおけるオンプレ&SaaSハイブリッド開発での生産性向上の取り組み」の内容をお届けします。
■登壇者プロフィール 福地 信哉(@vacation__e) 株式会社網屋 チームリーダー
東京大学大学院人文社会系研究科基礎文化研究専攻修士課程修了。在学中に競技プログラミングに出会う。株式会社網屋に新卒で入社し、現在4年目。SIEM製品「ALog」の開発に、バックエンドエンジニア・SREエンジニアとして携わる。これまでにスクラムマスター、チームリーダー、プロダクトオーナーとしての経験を積む。チームビルディングや製品のコンセプトを考えるのが好き。
“セキュリティの総合プロバイダ”網屋の事業と過去の開発体制
福地:「セキュリティメーカーにおけるオンプレ&SaaSハイブリッド開発での生産性向上の取り組み」というタイトルで発表させていただきます。まず自己紹介です。私は株式会社網屋で、開発部のALog開発チームのチームリーダーをしています。
大学院では哲学を研究していて、新卒でこの会社に入りました。ログからサイバー攻撃を検出するSIEM製品の開発にバックエンドエンジニア、SREエンジニアとして携わった後、スクラムマスター、チームリーダー、プロダクトオーナーとして経験を積んでいます。チームビルディングや製品のコンセプトを考えるのが好きです。
本日のアジェンダとしては、事業紹介、私がエンジニアメンバーだったときの開発体制、リーダーになってからの開発生産性向上の取り組み、その成果、最後にまとめという順番でお話しさせていただきます。
福地:まずは事業紹介です。弊社のビジョンは、「すべての人がサイバー攻撃のターゲットとなる時代に、すべての人に高水準のセキュリティを」というものです。セキュリティの総合プロバイダだと覚えていただけるとありがたいです。データセキュリティ、ネットワークセキュリティ、セキュリティサービス、セキュリティ教育と多角的に事業を展開しています。
福地:そのなかでも、私が開発しているのはALogという製品です。これは複雑で難しいログデータを1つの場所に集約し、その集約されたログに対してクエリを投げて、サイバー攻撃を検出するというSIEM製品になります。
オンプレミスのファイルサーバー、ADサーバからクラウドサービスのアクセスログまで、幅広いログを収集することができます。
福地:私が入った当初の開発体制がどういうものだったかと言いますと、オンプレとウォーターフォールというスタイルでした。開発製品はALogのオンプレミス版で、オンプレミスのWindowsサーバー上で常駐稼働するソフトウェアです。
1つのリリースに3ヶ月から6ヶ月かけて、この期間で要件定義、開発、テスト、リリースを実施。12人ほどのエンジニアに対して、2~3名のPMがチケットを渡してタスク管理を直接行っていました。
課題としては大きく2つで、アジリティとスケーラビリティです。より迅速にリリースしたいし、事業拡大やエンジニア増員にあたって、よりスケーラビリティがある組織構造にしたいという課題がありました。
クラウド版リリースで“変わらないこと”と“変わること”
福地:そうしたなかで実施してきた、開発生産性向上の取り組みをご紹介したいと思います。そもそもなぜ生産性向上を考えるようになったかというと、きっかけはALogのクラウド版のリリースでした。
クラウド版を出すと何が変わるかというと、ビジネスサイドとしては、より迅速なリリースがこれまで以上に重要になってきます。オンプレ版ではユーザーがバージョンアップしていましたが、クラウド版では自動でバージョンアップされるので、どんどん迅速にリリースすることこそが正義だという状況になってきます。また、サブスクリプション型モデルへの移行もありました。
開発サイドとしては、クラウドネイティブの技術を採用していくというところがありました。これは別の機会に述べているので、もし興味があればご覧ください。
▶サーバーレス × マルチアカウント構成で、統合ログ管理ソフトウェアを SaaS 化する
福地:クラウド版を出すにあたって、変わらないことと変わることがありました。変わらないこと、つまりマネジメントのコアは、心躍るゴールを提供することと、指標をゲーム感覚でトラックしていくこと。大きくこの2つだと思っています。
ゴール設定については、「他より10倍いい」をゴールにしていて、今定めているゴールは「最速の検索性を持つSIEM」です。これは社内キックオフの資料で、社内ではA社製品のところに実際の製品名が入っているのですが、この一番メジャーな製品よりも60倍高速なサーチを実現しようと掲げています。
日々いろいろな問題に直面して大変なときも、綺羅星としてこのゴールを見つめて体制を立て直す。そういうことが、チーム全体でできるようにしようと思っています。
福地:次に、指標との向き合い方ですね。リーダーになってスクラム開発を導入して、しばらくはベロシティを見ていました。ベロシティがいくつになったとか、最近減っているけど大丈夫かなとか、そうやって見ていたのですが、最近思うのはベロシティをトラックすることは重要ではないということです。
重要なのは値や推移ではなく、コミットしたスコープを達成しきれたかどうか。あるいは、スコープを達成しきるというモチベーションや責任感があって、経験を通して実際に達成しきる確率が上がっているかどうか。これらを重要視しています。
福地:あとは、Four Keysですね。定量的指標のなかでも非常に広く流布しているので、それ自体をひたすら追い求めるというより、まわりのチーム、まわりの会社との距離を測って、チームの現在地を知るための指標として使っています。
例えば、自分たちはまだHighとMediumの間くらいだねとか、Eliteを目指すためには、テストのラインカバレッジが80%はないとデイリーデプロイは難しいよねとか、そういった会話をしています。
福地:指標は、なるべくゲーム感覚で楽しみながらトラックしていきたいと思っていて、プルリク王や収益botといったものをやっています。プルリク王というのは、プルリク数のランキングを週ごとやスプリントごとに投稿して、上位の人を称える仕組みです。
収益botは、ALogクラウドの売上と支出を報告するbotです。収益は、コストを削減することでダイレクトにエンジニアが数字に貢献できる部分なので、ここをゲーム感覚で楽しくトラックすることを心がけています。
福地:ゲーム感覚にするうえでの1つのポイントは、ハックされてもいいということです。例えばプルリクだったら、ものすごく小分けにすれば王になれますし、コストだったら、そのコストを発生させている仕様をやめたり変更したりすることで、削減ができてしまいます。
ただ、こういうある種のハックも、それ自体が価値を持つと考えています。プルリクを小分けにするのは価値があることですし、仕様についていろいろと考えを巡らせて賢い仕様変更を提示するのも、それ自体が非常に重要なことだからです。
福地:次に変わることですが、これは大きく2つあって、1つはオンプレ&SaaSハイブリッド開発だからこそ変わることで、チーム編成、ソースコード、CI/CDなどです。もう1つは、セキュリティカンパニーだからこそ変わることで、QAや品質についてのカルチャーといった部分です。
まず、オンプレ&SaaSハイブリッドのチーム編成ですが、機能別にフルスタックのチームを組んでいます。ログを抽出して変換してロードするETLチーム。それを分析するアナリティクスチーム。全体としてのデザイン、あるいはある種のプラットフォームエンジニアリングを行うソリューションアーキテクトチーム。そして、より高度なセキュリティ機能を開発していくSIEMチームといった形に分けています。
フロントエンドとバックエンド、オンプレとクラウドなどで、チームを分断することなく融合させて、機能別に切ってマイクロサービスにフィットしたチーム構成をとっています。
福地:ソースコードについては、オンプレとクラウドでドメインモデルを共通化しています。このようにCore、Cloud、OnPremiseとディレクトリが分かれていますが、ドメインモデルはCoreのドメイン配下に置いて、すべて共通化しましょうということですね。
あとは、ロジックも最低でもインターフェースレベルで共通化しましょうと。ちょっとリアルな話をすると、クラウド開発を急いだときにサービスレイヤーにAWSの要素が混入してしまうことがあったのですが、そういうことが万が一起こったとしても、インターフェースレベルでしっかり共通化することを最低限のラインとして掲げています。
福地:次にCI/CDですね。クラウドとオンプレで、Monorepo上でライフサイクルを分離しています。クラウドはスプリントごとのリリースになっていて、オンプレは約2ヶ月ごとのリリースになっています。そのため、リリースフローも異なります。
クラウドの場合は、featureブランチごとにterraform apply→destroyをしつつ、開発者が開発していく。mainブランチにプルリクがマージされたら、それをトリガーにステージング環境に自動でデプロイ。OKとなってリリースタグを打ったら、それがトリガーになって本番環境にデプロイされます。
一方でオンプレの場合は、featureブランチごとにローカルで開発者が開発して、mainブランチへのマージをトリガーにパッケージをビルド。オンプレの場合は入念にテストを行って、それにパスした最新版をリリースし、タグを打つ。こういったフローになっています。
福地:続いて、セキュリティカンパニーだからこそという部分では、やはりQAが大事です。QAチームは、各機能チームに1メンバーとして関わりながらも、QAチームとして縦の情報共有を行う仕組みにしています。
テストもUTレベルはソフトエンジニアで行いますが、ログロストしてしまうとか、コストがすごく跳ねてしまうとか、そういうビジネス的にクリティカルな項目については、QAエンジニアがテストレビューに入って実施まで行っています。
福地:カルチャーとして重要視しているのは、攻めの品質意識を持つことです。品質責任というのは、絶対にバグを出さないことではない。誤解を恐れずに言えば、あくまでも「すぐに対応してすぐに直すこと」こそが品質責任なんだというカルチャーを意識的に明言しています。
バグを出したときは、どうしても保守的なマインドになってしまいがちですが、そうではなく「すぐに対応できてすぐ直せたからよかった」と捉えるようにしています。このすぐに対応してすぐに直すところを、いかに改善していけるかを重要視しています。
オンプレ&SaaSハイブリッドでの開発生産性向上の成果
福地:成果として、こちらは半期ごとの指標ですが、追加のフィーチャー数が1.3倍に、リリース回数が1.6倍になりました。ALogクラウドの利用状況も順調で、月17.4億のクエリが投げられていて、3.7倍のサーチが行われています。また、コンピューティング処理も、月63.7万時間、4.3倍の処理が行われています。
福地:それでは、まとめです。オンプレ&ウォーターフォールという開発のスタイルから、オンプレ&SaaSハイブリッドとアジャイルという組み合わせに変革して、開発生産性を向上させることができました。
その際コアになったのは、心躍るゴール設定をすることと、「他より10倍いい」をゴールに設定すること。そして、指標をゲーム化し、絶対視しすぎず楽しくトラックすることです。
また、オンプレ&SaaSハイブリッドという特性は、フルスタックのチーム構成や、Monorepoでのモデルやロジックの共通化、CI/CDのライフサイクル分離といったところに反映しています。セキュリティカンパニーという特性は、QAが大事であるということと、とはいえあまり保守的になりすぎず、攻めの品質意識を持つところに反映しています。
以上です。株式会社網屋では、一緒に事業を成長させてくれるエンジニアを大募集しております。ご清聴ありがとうございました。