見出し画像

Fit&GapとSecureNavi、プロダクトの基盤分離の裏側

SecureNaviの基盤開発部でSREを担当している神田です!

本記事では、SecureNavi株式会社が展開している2つのサービス「SecureNavi」と「Fit&Gap」について、AWS上の基盤を分離した内容を紹介します。

※以降、本記事内では、「SecureNavi株式会社」は会社のことを指し、のことを指し、「SecureNavi」はプロダクトとして展開しているSecureNaviを指すこととします。

当社では2つのプロダクトの基盤分離と並行して、AWS FTRの認定取得のためにSecureNaviをWell-Architected フレームワークに準拠するための施策も行っていました。新規プロダクトであるFit&Gapに関しては、FTRの観点を踏まえながらイチからAWS基盤を構築するということで、多くの学びがありました。

本記事では、下記の内容をクリアにしていきます!
・SecureNaviの基盤開発部って何をしている部署なのか?
・Fit&Gapリリース時の工夫や苦労の話

それでは本題に入っていきます!

この記事は「SecureNaviAdvent Calendar 2024」の12月11日にエントリーしています。ぜひ他の記事も読んでみてください!


基盤開発部とは?

私は技術本部の基盤開発部に所属しており、SREと呼ばれる領域を担当しています。SREとはサイト信頼性エンジニアリング(SRE)のことを指しており、Googleでは以下のように定義されています。

SRE は、信頼性の高い本番環境システムを実行するための職務、マインドセット、エンジニアリング手法のセットです。

https://cloud.google.com/sre?hl=ja

SREとして、SecureNavi上で提供しているサービスが24時間365日止まらないような仕組みづくりを行いつつ、エンジニアやデザイナーの開発速度向上、開発の利便性向上に向けて日々改善に取り組んでいる部署です。

業務の紹介

抽象的なお話をしましたが、直近行っている業務を具体的に紹介していきます。

  1. CICDパイプラインの改善

  2. サービスの監視、アラート機能の実装

  3. ライブラリやOSのアップデート

  4. 新規プロダクト展開に伴うAWS基盤の構築

今回の記事では、4. 新規プロダクト展開に伴うAWS基盤の構築についてフォーカスをしてお話をします。

Fit&Gapとは?

SecureNavi株式会社には、2つのプロダクト「SecureNavi」と「Fit&Gap」があります。前者はISMS認証やPマークにおける取り組みを効率化するサービスです。後者のFit&Gapは、法令や認証基準、業界ガイドラインなど、あらゆるセキュリティ規制対応を自動化・効率化するプラットフォームとなっています。

今回、私は後者のFit&Gapのリリースに携わりました。
Fit&Gapをリリースに運ぶ際に、アーキテクチャの観点で工夫した点などをSecureNaviの歴史の観点も踏まえて紹介していきたいと思います。

基盤分離の背景

Fit&Gapはこれまで、SecureNaviと同一のAWS基盤上にてサービスを展開していました。
Fit&Gapが開発段階の頃、事業部の中で「まずはFit&Gapとしてリリースし、将来的にはSecureNaviユーザーにもFit&Gapを提供していきたい」という思いがあったため、リリース時点では2つのプロダクトを同一の基盤で開発する方針となりました。

しかし、SecureNaviとFit&Gapそれぞれの成長を見越して、早いタイミングでAWS上の基盤を分けて運用する必要があると判断しました。

基盤分離を行うことで、SecureNavi・Fit&Gapそれぞれの機能改修が容易となり、会社全体としての開発スピードを上げることを目指して、本プロジェクトを実施することになりました。

課題

Fit&GapはSecureNaviの中の機能の一部であったことから、両サービスは密に結合した状態にありました。それが原因となり、リリース時にはデグレが起きやすい状況にありました。
更に、普段の開発においても両サービスへの影響を考慮する、といった運用上の様々な課題が顕著になりました。

他にも課題はありましたが、密に結合した状態は、今後のサービスの拡大に悪影響を与えると判断をして、Fit&Gapとしてソースコードから全てリプレイスをし、同時にAWS上の基盤の分離を決定しました。

SecureNaviからの改善・FTRの観点

Fit&Gapの基盤分離を進める最中、SecureNaviの方ではAWSのFTRの通過に向けて、AWS Well-Architected フレームワークに則るように改善に努めていました。
それにより部内のメンバーも事前にFTRの観点を頭に叩き込んでいた事もあり、Fit&Gapでは自然とAWSが提唱するベストプラクティスに則る設定や構成で進めることができました。
SecureNaviには、リリース方法や検証環境へのデプロイ方法など、運用における課題点があり、Fit&Gapではそういった点を改善して、エンジニアが快適に開発ができるような基盤作りを心がけました。

要件から基盤構築、リリースへ

1.定期的な打ち合わせ

Fit&Gapの基盤分離は、新規事業室と基盤開発部の合同で行いました。
新規事業室がアプリケーションの開発を、基盤開発部がAWS基盤の構築を担当しました。
週に1度会議の場を設け、双方の課題や要件、スケジュールなどを議論する形式で行い、検討のヌケモレがないように綿密に打ち合わせをしながら進行しました。

2.要件のヒアリング

アプリケーション担当者からの要件の中で、基盤開発部側で工夫や苦労した箇所を2点紹介します。

  • データベースとストレージの移行

  • バッチ処理の自動、手動実行する仕組み作り

データベースとストレージの移行
Fit&GapはSecureNaviの一つの機能としてスタートしたことから、SecureNaviと同一のデータベースやストレージを使用していました。データの整合性を担保しつつ、AWSのアカウント間でコピーする方法の調査、事前検証を行いました。手順が少し複雑だったこともあり、手順書を作成してリリース日に作業ミスが起こらないように工夫しました。

バッチ処理の自動、手動実行する仕組み作り
日次で行う処理や、任意のタイミングで行いたい処理を自由にコントロールできるような仕組みづくりも行いました。
SecureNaviではAWS上のバッチ処理の定義が処理数分あり、管理が煩雑化していたため、Fit&Gapでは1つのバッチ処理の定義を用意して可変長引数で自由にバッチ処理ができるように工夫をしました。

3.基盤の構築

SecureNaviではIaCツールとしてTerraformを採用しています。
Fit&Gapの基盤構築に際しても、全てTerraformでAWSリソースを定義しました。
参考となるSecureNaviのコードはあったものの、新規で使用するAWSサービスを取り入れていたため、Terraformコードの完成に運ぶまでトライ&エラーを繰り返しました。

4.リリース前テスト

新たなAWSの基盤上にサービスをリリースを行うことは難易度は高くありませんが、今回はSecureNaviからの分離を行うため、データベースやストレージの整合性を担保する必要がありました。
リリース前テストのシナリオを準備して、本番でデータの不整合が生じないように厳密に確認をしました。
アプリケーションの開発を担当している新規事業室のエンジニアと手順書を作成して、データの不整合が生じないようにテストを行いました。

5.基盤分離(リリース)

基盤分離のリリースは夜間に行いました。
事前に、新規事業室のメンバーとリリースの手順書を作成し、シナリオ試験も行っていましたが、当日は失敗の不安から緊張をしていました。
その感情とは裏腹に、手順書通りにデータ移行からプロダクトのホスティング、ユーザーの移行と進めることができました。
事前に厳密なテストを行っていた甲斐もあり、顧客影響ゼロで自然に分離を行うことができました!

社内ではCEO井崎さんから全社向けの「good-news」チャンネルにてシェアしていただきました。

所要期間と工数

Fit&Gapの基盤分離におけるAWS基盤の構築に関して、主に私一人で行いました。プロジェクトの開始から終了までは以下のようになりました。

  • 所要期間:6ヶ月

  • 工数:3人月

最後に

まとめ

本記事では、SecureNaviが展開している2つのサービス「SecureNavi」と「Fit&Gap」について、AWS上の基盤を分離した内容を紹介しました。

  • AWSの基盤をイチから作成することで、多くの学びを得ることができた。

    • イチからアーキテクチャを考えて、IaCを使用してAWS基盤を構築することにより、各AWS基盤をサービスに詳しくなり、また自社のAWS基盤を熟知できた。

  • 当社では基盤分離と並行して、AWS FTRの認定取得のためにSecureNavi(プロダクト)をWell-Architected フレームワークに準拠するための施策も実施。

    • Fit&Gapでは、FTRの観点を踏まえながらイチからAWS基盤を構築することで多くの学びを得ることができた。

  • 顧客影響ゼロで基盤分離が完了し、2つのプロダクトの開発効率を向上することができた。

プロダクトの基盤を支えている皆様へ

本件は、「難易度の高いチャレンジだな…」と思いながらも自分から手を上げたところから始まりましたが、振り返ると「やって良かった」な、「楽しかった」な、「勉強になったな」というポジティブな感情が多く残っています。

大変な面もありますが、学びも多く、長期に渡って開発者体験を改善できるようなやりがいのあるプロジェクトです。貴社でも同様のプロジェクトが発足する場合は、ぜひ手を上げてみてはいかがでしょうか?
最後に、本プロジェクトは自分自身で全てを解決したのではなく、SecureNaviのメンバーのサポートや、社外エンジニアの方々の記事からも多くの知見をお借りしました。この場で御礼を申し上げたいと思います。

これからもSecureNavi株式会社の基盤開発部として、今後も信頼性の高い基盤作りや開発者体験の向上に努めていきたいと思います!

次回の記事は、カスタマーサクセス部 芳賀さんの「ISMSへの『愛のカタチ』」です。お楽しみに!




■採用情報

■カジュアル面談一覧

■募集ポジション一覧



いいなと思ったら応援しよう!