hacomono TECH BLOG

フィットネスクラブやスクールなどの顧客管理・予約・決済を行う、業界特化型SaaS「hacomono」を提供する会社のテックブログです!

マルチテナント の検索結果:

開発速度を加速させるマルチプロダクト基盤:Self-Service提供への挑戦

はじめに こんにちは。基盤本部プラットフォーム部のkaikaiです。 入社して1年3ヶ月ほど経ちました。まだ新人な気分でしたが、スタートアップ界隈だとベテランの域みたいです。(精進せねば) さて、本記事では、プラットフォームチームが現在開発を進めている「マルチプロダクト基盤」についてご紹介します。 このプロジェクトが目指すのは、事業スケールに不可欠な、開発者が「素早く、安全に、迷わず」開発できる仕組みを実現することです。この記事では、その背景から技術選定、現状と今後の展望まで…

実践SLO: Datadogを使ったSLO監視の勘所

…用していたから 元々マルチテナント環境の監視プラットフォームとしてDatadogを用いており、新たに監視する場所を増やしたくありませんでした。 2 SLO運用に特化した機能が充実 複数ウインドウサイズでのSLO測定やバーンレートの自動計算など、SLO運用に必要な機能が標準搭載されていますが、CloudWatchではこれらの機能を自前で実装する必要があり、実装コスト的にDatadogを用いました。 CloudWatchにもApplication Signalsが追加されSLOに…

hacomono API Ruby 3.3 / Rails 7.1 へのアップデート

…連絡確認しました。 マルチテナント対応に利用している ros-apartment gem の更新が一時的に止まっていた期間があり Rails 7 対応は自力でやるしかないかもと覚悟していたのですが、2月から急に活発に対応されはじめ大変助かりました。 いくつかはデバッガで Rails のソースコードをステップ実行しながら 6.1 との違いを比較してどうするか考えるなど特定が難しかったものもあり、かなり時間がかかりました。 Puma Worker Killer のカスタマイズ 3…

hacomonoにSRE文化を取り入れる為にSLOダッシュボードを創設した話

…hacomonoではマルチテナントの監視にDatadog、シングルテナントの監視にCloudWatchを利用しています。 hacomonoのマルチテナントに関する歴史は基盤本部のありさんが書いた記事を参考にしてください。 以前からの課題として、 ELBごとの監視はできていたが、APIごとの可用性 / レスポンスタイムの監視や、テナントごとの監視ができていなかった hacomonoのサービスの信頼性を可視化できていなかった 安定性の観点から、リリース速度がなかなか向上できなかっ…

HAPPY🎉 1st Anniversary 運用保守部

…機能開発、機能改善、マルチテナント移行、モジュラーモノリス移行、パフォーマンス改善、リファクタ/リアーキテクチャなど根本解決するために日々様々なチームが取り組んでいますがお客様を長い期間お待たせするわけにはいきません。 そこで運用保守部が短期対応を頑張り根本解決までの時間稼ぎをします。 その際に何でもいいから対応するのではなく、あくまでもSaaSとしての製品の特性、開発ロードマップ、組織の優先度など様々な要素を加味して短期対応を行っており、そこが運用保守部の腕の見せどころです…

RDSのDBインスタンスでMySQLアップデートを行う上で資料の充実さに救われたお話

…グルテナント環境からマルチテナント環境への移行が進んでいるものの、シングルテナント環境は残っており、一部環境ではRDSのDBインスタンスを利用しており、RDSのDBインスタンスに対してバージョンアップを行う必要があります。 私は入社1ヶ月でDSのDBインスタンスのバージョンアップ対応を行ったのですが、hacomonoの資料や作業の自動化への充実さに驚いたため、今回こちらの記事を書こうと思い立ちました。 バージョンアップを行う上で用意されていた資料 作業のチェックリスト バージ…

hacomono のマルチテナント移行。シングルテナントからの脱却

…らずっと携わっているマルチテナント移行について書いていきたいと思います。 TL;DR マルチテナントのアーキテクチャは構築できたけど既存顧客はシングルテナントに残ってるよ 2023年の1年間でたくさん移行したよ Service count = 顧客数(= VPC, RDS) Instance count = EC2 補足)マルチテナント環境で稼働中の顧客は1300社ほどあるので、全体の80%近くはマルチテナントで運用している シングルテナントは顧客毎にインフラ構成が異なるから…

プラットフォームチームの紹介

…きます。 1つ目: マルチテナント環境の開発 hacomonoアプリケーションが稼働するマルチテナント環境というインフラがあります。どういったものかはhacomonoプラットフォームチームのEM矢嶋が執筆した以下の記事をご参照ください。 techblog.hacomono.jp この環境も作られてから日が浅く、運用の自動化という観点でまだまだ改善 / リアーキテクチャの余地があります。 改善は例えば、この環境で動く非同期バッチの仕組みが最適化できていないため、それを改善するべ…

hacomonoのプラットフォームチーム 入社3ヶ月の振り返り

…勉強会での知見共有 マルチテナント環境のロギング、モニタリングにdatadogを活用しています。 僕自身はdatadog自体を使った事がなかったため、勉強しながら、datadog内のどこで何ができるのかといった知見共有を行いました。 hacomonoのプラットフォームチーム hacomonoのプラットフォームチームで具体的にどういった技術を扱っているかは、過去のテックブログも参考にしていただければと思います。 マルチテナント: モジュラーモノリス: 入社前の印象 最近プラット…

Jenkinsによるデプロイ時間を1/2に短縮した話

…を行いました。新しいマルチテナントアーキテクチャは新規環境の格納に利用しており、旧来からご利用頂いているお客様は旧来のシングルテナントアーキテクチャ上で動作しております。 今回の記事ではシングルテナントアーキテクチャのリリース作業を対象にお話します。 背景 hacomono では 2021年から Jenkins を用いた継続デリバリーを運用しており、隔週でリリースを行なっています。 Jenkinsを使用した継続デリバリーの運用は、最初はスムーズで問題がなかったものの、haco…

マルチテナントへの道 番外編: ChatGPT-4 を使ってブログを書いてもらった

…v)です。 前回、「マルチテナントへの道 Provisioning 編」と題して、マルチテナント化のプロビジョニングに関するお話をさせていただきました。その際、ChatGPT-4を全面的に用いてブログを作成しました。 この時のブログ制作過程をさらにChatGPT-4に記事にしてもらいましたので、以下に紹介します。 プロンプト 「マルチテナントへの道 Provisioning 編」を作った際のチャットにおいて、以下のプロンプトを与えてみました。 「マルチテナントへの道 Prov…

マルチテナントへの道 Provisioning編

…りました。 今回は「マルチテナントへの道 Provisioning 偏」と題しまして、マルチテナント化のプロビジョニングに関するお話をさせていただこうと思います。 TL;DR Rails のマルチテナント化は apartment gem を利用して実現 テナントグループという単位で Rails API を分割 テナント追加等の日々のオペレーションは Kickflow 経由で実行 Rails のマルチテナント化 マルチテナント環境では、複数のテナントが同じアプリケーションにアク…

マルチテナントへの道 Gateway編

…しました。 前回は「マルチテナントへの道 序章」と題して hacomono のアプリケーションアーキテクチャの刷新について触れさせていただきました。 今回は前回の中で詳しく書けなかったアーキテクチャの技術要素について深堀りさせて頂ければと思います。 TL;DR 新旧2つのアーキテクチャが同時稼働するハイブリッド環境 透過的に取り扱うための API Gateway が必要 API Gateway を支える Routing Table の仕組み アーキテクチャの変更 前回の記事で…

マルチテナントへの道 序章

…を抱えるのは辛い。 マルチテナントアーキテクチャへ移行した。 今回の記事はお触りだけで、詳細は続編へ続く。 hacomono のアーキテクチャ 2021 年当時、hacomono では 150 社ほどのお客様へサービスを提供していました。 当時のアーキテクチャはお客様毎に環境を提供しており、Provisioning は Jenkins 経由で Terraform と Ansible を実行することにより実現していました。 しかしながら上記のアーキテクチャにより、以下の述べる様…

データ分析用に BigQuery を導入してみた

…りました。 例えば、マルチテナントの場合だと、 SELECT COUNT(*) FROM users WHERE deleted_at IS NULL のような SQL を叩けば会員ユーザー数がすぐに分かりますが、 hacomono はシングルテナントなので、この SQL を全テナントで実行しないと全体のユーザー数がわかりません。 また、 CS で追うヘルススコアを算出し外部サービスに同期する要件も出てきそうだったため、データを 1 箇所にまとめて分析しやすくする必要がありま…