こんにちは。SIGQ Cloud Linkerというセキュアな書類共有サービスを開発しているアーリースタートアップ、SIGQのリードエンジニアをしているBrown[1-3]です。
ストーリー性がよく分かりませんが、それはさておき、今回から何回かに分けて、SIGQ Cloud Linkerを支える技術をご紹介していきます。
本編はその導入で、概要をご説明します。
技術ブログを書いてばかりで、実はまだ公式のプレスリリースは1度も出していない
SIGQ Cloud Linkerとは
SIGQ Cloud Linkerは、バックエンドにGo、フロントエンドにReactを採用し、GCPのフルクラウド環境上で稼働する次世代のセキュア書類共有ツールです。GCPの柔軟でスケーラブルなインフラを最大限に活用し、Cloudflare WAFによる高度なWebアプリケーションファイアウォールを通じてセキュリティを強化しています。セキュリティ対策は、マルチテナント環境においてユーザーのデータ保護を最優先に、各レイヤーで堅牢なセキュリティ対策を施しています。
また、SIGQ Cloud Linkerに将来的に導入するように、データのストリームプロセスエンジンと組み合わせて可能できる機械学習モデルの研究開発を行っています。この機械学習モデルは、膨大なデータを解析し、高精度の予測とリスク管理を可能にするために設計されており、将来的には、書類管理の効率化やセキュリティリスクの自動検出機能など、従来のシステムにはないインテリジェントな機能をご提供できる見込みです。
SIGQ Cloud Linkerの開発者の人数
Webサービスでは一般に、シード期でVCからエクイティで資金調達をしたり、金融機関からデットで資金集めを行なった上で、数名の開発チームを作ってサービスを出していくことが一般的だと思うのですが、弊社の本プロダクトでは、レポジトリを作ってからリリースに至るまで私のコミットしか入っていません。つまり、企画やプロダクトマネジメントから、全ての開発において、私しか関与していません。
直近では、よりリリース前のQAをしっかりと行なっていくために、業務委託のメンバーに参画いただき、バグ出しやユーザビリティテスティングについて協力にサポートいただいていますが、開発はこのブログを書いている時点では私のコミットしか入っていませんw
というのも、そもそものスタートが趣味の個人開発からスタートしたプロダクトであり、また、学生時代に一度友人と起業して揉めてしまった経験(当時、大変申し訳ございませんでした)から、次何かをやるなら1人でやろうと決めていたので、とりあえず1人でやってきました。
SIGQ Cloud Linkerのメインの構成
前置きが長くなりましたが、主にCloud Linkerは以下の構成で動いています。Webサービスとしては特に目新しいことはなく、それっぽい構成になっています。
以下に書いてない内容だと、WAFに似た動きをするHTTPリクエストを通すか通さないかを裏側でハンドリングする軽量な機械学習モデルを作りたくて、SVM(Support Vector Machine)っぽいMLモデルの開発をひっそりやっています。現在はそのMLモデルのformulationを行なっている段階で、そっちはそっちでツールとしては色々と使おうとしていますが、現段階ではCloud Linkerを支えるツールはこんな感じです。
フロント
React, Tailwind CSS + Firebase Hosting
認証
Firebase Auth
バックエンド
httpサーバーにginを薄く使っただけで、あとはスクラッチで書いているGolang
インフラ
Cloud Run, Cloud Run Job, PubSub, Eventarc, MongoDB Atlas, Cloudflare
MongoDBに繋ぎに行くところでIPを特定のものに絞るために、Cloud RunはVPCの中で動かしていて、egressは特定のIPから出ていくようにしています。
監視系
Datadog, Atlassian status page
今後のブログの展開
今回は導入部分しか書いておらず、中身はさらっとしています。今後なぜこの技術選定になっているのかを、エンジニアとしてのスキルセット面や興味だけではなく、コストや今後の開発も考えた技術経営の観点からご紹介していく見込みです。ぜひサブスクライブしてご覧ください。
終わりに
SIGQではCloud Linker (https://sigq.jp/)を使っていただける方を絶賛募集中です。昨日、一般向けに新規登録導線をオープンしました。 早く登録いただいた方には、アーリーサインアップ特典で、何らか特典をご用意したいと思っています。(詳細未定)
References
[1] あちこちの組織に属しており、インターネット上で筆者関連情報が散見されるが、本法人とはいずれも無関係
[2] GitHub Account: 3150
[3] X (Twitter): brownjpn