Beatrust で SRE をやっている Yuta(中川 裕太)です.運用がラクにできるように色々と改善したり,セキュリティ向上したり,インフラ作ったり API 開発したりしています. 今回のブログではご縁があって登壇させていただいた Google Cloud 主催の Born Digital Summit でのサマリと振り返りをしていきます.
Born Digital Summit 登壇
「事業成長とともに歩む Cloud Run→GAE→GKE Autopilot の旅路」というタイトルで Google Cloud 主催の Born Digital Summit で登壇してきました.
Beatrust 創業から現在まで約2年半でのビジネスの成長とともに,システムのアーキテクチャ変遷とその理由を振り返りました.最初はビジネスドメインが固まっておらず,要件の全容が見えていなかったからこそ,開発者の慣れた技術で小さく作っていました.次第に要件が見えてきたタイミングで,ビジネスのコアとなる部分に関してはシンプルなサービスに,周辺系に関してはイージーにサービスに寄せていくことで今のアーキテクチャが出来上がってきました.その中で,多くはアプリケーションの文脈で語られることの多い「コアはシンプルに,周辺はイージーに」ということがインフラも含めたアーキテクチャ全体にも言えることを改めて学び,その成果がプロダクトに現れているという話をしました.
質疑応答
登壇後の質疑応答セッションではいくつかの質問をいただきました.データ基盤に関する質問がやや多かったことは意外でしたが,ぼくらもまさしく今ベストプラクティスを探しているタイミングなので,ぜひとも様々な方と意見交換していければなと考えています.
以下,いただいた質問に対して回答サマリを紹介していきます.
1. お世話になっております。仮説検証を行うためのデータ分析基盤を利用する場合、この周りの構築や作業もSREが全部準備されたのでしょうか。
ベース部分は SRE として中川が構築しました.その上で,仮説検証のための実際の分析であったり,分析用にどういった DWH を構築していけばよいかなどは,データチームのメンバーとともに構築し,今に至るまで育ててきています.
2. GKE Autopilotを選定する際に、他の選択肢としてどういったものがあったのかお話の中にもあったかもですが教えていただけないでしょうか?
候補としては GAE の構成を再検討したり Cloud Run に戻すという選択肢もありました.一方で,プレゼンの中でも触れていますが,Kubernetes のエコシステムを用いて開発運用していくことがチームとして最新技術を学ぶことにつながるであろう点などから GKE を選択しました.それに加えて「何よりも楽しそう」という要素も大きかったです.
詳細についてはブログを参照いただければと思います.
3. アーキ構築の際のデータ保護やセキュリティ周りでもし気をつけていたことがあればぜひ教えていただきたく考えております。
データ分析観点で言うと,権限は集中管理して「何か起きた際にはそこを止めれば全部止められる」という状態を意識してアーキテクチャを構築しています.具体的には Google Workspace Group に紐付いた権限管理ができるツールをなるべく選定するようにして,それをどう組み合わせていくかを考えています.
アプリケーション観点でいうと,お客様テナントごとにデータを論理的に分離できるように PostgreSQL の RLS (Row Level Security) を用いたアーキテクチャを構築しています.
こちらについてもブログを書いているので参照いただければと思います.
4. これぐらいの技術ブログ書きたいーな
ありがとうございます笑
5. アーキテクチャの遷移も多く、困難を解決してきたと思いますが、エンジニアのバックグラウンドとしてはどのような人で構成していきましたか?
例えば,フロントとバックエンドや,バックエンドと SRE というような2つ以上のスキルセットを持ったマルチスタックなメンバーで構築しています.しかも,各メンバーが得意とするスキル領域を持ちつつ,他の領域にも興味関心が深くチームとして広い範囲をカバーできるようなチーム構成を意識しています.だからこそ,同じ土台に立ちつつも複数の視点から開発を進めることができ,それが困難の解決であり,プロダクトの成長,ひいてはお客様の課題の解決につながっていると考えています.今後もそういったチームで成長していきたいなと考えています.
6. コンテナベースからノンコンテナそしてコンテナときていますが、このあたり苦労されなかったですか
バックエンドでは主に Node.js を使っていて,ビルドされた成果物をデプロイしているので,コンテナであろうとなかろうとビルドプロセスがどこにあるかだけの違いなので比較的苦労は少なかったです.もともとコンテナベースで実装していた影響もあるかもわかりません.
7. アーキの構築にあたってグーグルのチームがサポートしてくれることはあるのでしょうか。
定期的に Customer Engineer の方と打ち合わせをさせていただいて「こういうアーキテクチャを2パターン考えたのですがどちらがよさそうですかね?」といった壁打ちやレビューを実施いただき非常に助かりました.そのおかげもあって,今のほぼ運用作業がなくシステム原価も安く,それでいて高可用性を担保できるアーキテクチャを構築できたのかなと考えています.
8. どのようなエリアでAIを利用されているのですか
Beatrust ではユーザのプロフィール情報などを抽象化して tag として表現する機能を提供しています.その抽象化するプロセスで機械学習を用いています.
詳細についてはこちらもブログに記載ありますので参照ください.
9. 技術ブログリンクがほしいです
ぜひ定期的に覗いていただけると嬉しいです!
登壇ふりかえり
初めての事前撮影オンラインイベントでめちゃくちゃ緊張しましたが,この発表がだれか一人でもアーキテクチャの意思決定をする人の手助けになれば幸いだなと考えています.Google Cloud の定める事前撮影環境を整えるために部屋のレイアウトを変えたりなど物理的にも大変でしたが,確かにこういう風に撮影すればよいのか,という気付きも多く今後のオンラインイベントに活かせそうな学びを得られた登壇でもありました.
この登壇自体,以前書いた GKE Autopilot を半年運用してみて...めっちゃラク! のブログがきっかけでお声がけいただいたもので,そのサマリと振り返りをまたブログで行うというのもなかなかにエモいものです.やはり,書きたいネタを書きたい時に書くと,その熱量がいろいろな人に伝わり,よい機会につながるということも今回改めて学びました.今度もいろいろとプロダクトを開発する上での学びをブログという形にしていればなと思います.
ちなみに,当日オフィスでパブリックビューイングしつつ,メンバーに応援してもらったのは恥ずかしいやら嬉しいやら,いい思い出です.
プロダクトの成長とともに,input と output のバランスを取りつつ,楽しいメンバーたちと一緒に仕事をしたい仲間を募集中です.