SpaceCoreを陰で支えているバックエンドの紹介(前編)

みなさんこんにちは!プロダクト開発グループに所属している森川です。

今回は、これまで紹介したIoTプラットフォームの「alie+」や、自社開発ゲートウェイの「aliehub」を使い、 スマートホームサービス「SpaceCore」の提供を支えているバックエンド側についての記事になります。

前編となる本記事では、採用している技術スタックやインフラ構成についてご紹介します。

1. システム構成図

まずは全体像となるSpaceCoreのシステム構成は下図のようになっています。
賃貸管理の基盤機能に加え、IoTプラットフォーム「alie+」の標準機能だけではカバーしきれない、スマートホーム独自の付加価値(セキュリティロジックやサジェスト機能など)を提供する役割を担っています。

SpaceCoreシステム構成図

2. 技術スタックの紹介

基幹システムとなるRailsアプリケーション

SpaceCoreの基幹システムは「Ruby on Rails」を採用しています。
インフラはビルドしたコンテナイメージをECRに格納し、ECS上で稼働させています。 このコンテナイメージをベースに定期的なバッチ処理はEventBridgeによるECSタスクの実行や、 非同期JobはSidekiq+AWS ElastiCacheを使って処理しています。

このように関連するビジネスロジックをRailsアプリケーションとして集約させることで、保守性の向上を図っています。

イベントドリブンな処理を支える AWS Lambda

「alie+」や外部連携ベンダーから送られてくる大量のデバイスイベント(ドアの開閉やセンサー検知など)を処理するために、AWS Lambda を積極的に活用しています。

  • スケーラビリティ:デバイス数に比例して増大するイベントを、基幹システム(Rails)に負荷をかけずに捌くための「中継・フィルタリング」の役割を担います。
  • 疎結合な設計:各ベンダーごとのフォーマット差異を Lambda で吸収・変換してから基幹システムへ流すことで、システム全体の柔軟性を担保しています。
  • ラッパー関数:各ベンダーへのAPI呼び出しを行うラッパー関数を Lambda 化することで、外部依存の切り離しとインターフェースの統一を実現しています。

リアルタイム性を支える Firebase の活用

ユーザーへのリアルタイムな情報伝達とコミュニケーションを実現するために、Firebase を採用しています。

1. Firebase Cloud Messaging によるプッシュ通知

セキュリティ機能の警戒中に異常が発生した場合や、サジェスト機能による「窓の閉め忘れ」「照明の消し忘れ」などをリアルタイムに通知しています。ユーザーが住居の異変に即座に気づけるよう、低遅延な通知基盤として Firebase Cloud Messaging を活用しています。

2. Firebase Realtime Database によるチャット機能

入居者様と管理会社様の円滑なコミュニケーションを支えるチャット機能には、Firebase Realtime Database を採用しています。 データ同期の速さに定評があるマネージドサービスを活用することで、「既読状態」の表示といったリアルタイムなユーザー体験の実現と、実装工数・保守コストの削減を両立させています。

各環境のインフラ構成をIaCで管理

各環境(開発・ステージング・本番)でリソーススペックの差異はありますが、同一の構成を担保するために、主に CloudFormation を採用した IaC を徹底しています。
最近では、プログラミング言語(TypeScript等)の表現力を活かせる AWS CDK を積極的に採用しており、構成管理の柔軟性と再利用性を高めています。

安全かつ高頻度なリリースを支える「CI/CDパイプライン」

新たなデバイスの対応や、UI/UX改善のための機能追加など、SpaceCoreでは頻繁にアップデートが行われています。
これらを安定してユーザーへ届けるため、ほぼ全てのシステムにCI/CDパイプラインを構築しています。

特に使用しているのは以下のサービスです。

  • CircleCI:自動テストの実行
  • CodePipeline (CodeBuild / CodeDeploy):自動デプロイ

CIは主にCircleCIで自動テストを実行するようにしており、カバレッジ率を簡単に把握できるよう、コミットステータスとしてGitHubに反映させています。

カバレッジ率の見える化

また、スマートホームサービスは「生活のインフラ」であり、サービスダウンは許されません。 そのため ECS へのデプロイには Blue/Green デプロイ を採用し、ダウンタイム・ゼロを実現しています。万が一の際の切り戻しも迅速に行えるよう設計しています。

CI/CDフロー図

alie+や外部ベンダーからのイベントをトリガーとするLambda関数では、 CircleCIから新バージョンを直接デプロイし、エイリアスを切り替える形で安全なリリースを実現しています。

3. おわりに

今回はSpaceCoreバックエンド紹介の前編として、技術スタックとインフラ構成について解説しました。
この記事を通して興味をお持ちいただけた方は、ぜひ採用ページよりご応募をお待ちしております!

📩 お問い合わせ・採用情報

本ブログを読んでいただきありがとうございます。 もし内容にご興味を持っていただけましたら、以下よりお気軽にお問い合わせ・ご応募ください。

スマートホームの導入をご検討中の企業様へ:

👉お問い合わせ - SpaceCore(スペースコア)

技術にご興味を持たれたエンジニアへ:

アクセルラボではエンジニア採用を強化しています。 私たちの技術やビジョンに共感し、スマートホームの未来を共に創っていきたい方のご応募をお待ちしています。

👉 https://recruit.accel-lab.com/