フレームワーク の 全体像

ここでは SOULs フレームワーク の全体像について説明します。

Monorepo

SOULs フレームワークは Monorepo によってアプリケーションを管理しています。

ウェブアプリケーションには、ユーザーアプリ、管理者アプリ、バックエンド API、Worker によるタスク処理など、

様々な役割がありますが、

1 つの git リポジトリ で管理することができます。

これにより、チーム間による開発効率が抜群に改善されます。

SOULs serverless architecture

マザーとサービス

SOULs には一つのマザーと複数のサービスがあります。

マザーは Monorepo のルートディレクトリになります。

サービスには

API, Worker, Cloud Functions の 3 種類があり、

Worker, Cloud Functions(CF) は複数個作成することができます。

souls-app マザーディレクトリ

souls-app(マザーディレクトリ)
├── apps
│   ├── api(API ディレクトリ)
│   ├── worker-mailer1(Worker ディレクトリ)
│   ├── worker-mailer2(Worker ディレクトリ)
│   ├── cf-ruby27-method1(CF ディレクトリ)
│   ├── cf-python39-method1(CF ディレクトリ)
│
├── config
├── github
├── sig
│    ├── api(RBS ディレクトリ)
│    ├── worker-mailer1(RBS ディレクトリ)
│    ├── worker-mailer2(RBS ディレクトリ)
│
├── Steepfile

  .
  .

sig ディレクトリ以下に各サービスに対応する rbs ファイルが配置されています。

Steepfilesig ディレクトリを読み込んでいます。

SOULs フレームワークでは souls コマンドによって作成されたファイルに合わせて、

.rbs ファイルと _spec.rb ファイルが自動で生成されます。

RBS と Steep について初めての方は以下のリンクを先に読むことをお勧めします。

GitHub Actions による自動デプロイ

SOULs フレームワークでは Github Actions を使用して、

CI/CD 環境を構築しています。

API, 各 Worker ディレクトリの変更を検知し、

変更があった場合には main ブランチに push するだけでデプロイが完了します。

デプロイの前にテストを実行するので、

万が一テストに失敗した場合にはデプロイがロールバックされるため、

本番環境にはデプロイされません。

これにより、安全で迅速な開発環境のもとプロジェクトを進めることができます。

CI/CD とは

CI/CD (継続的インテグレーション/継続的デリバリー) とは、アプリケーション開発のステージに自動化を取り入れて、顧客にアプリケーションを提供する頻度を高める手法です。CI/CD から発生した主なコンセプトは、継続的インテグレーション、継続的デリバリー、継続的デプロイメントです。CI/CD は、新規コードの統合によって開発チームや運用チームに生じる問題 (すなわち「インテグレーション地獄」) に対する解決策です。