最適化されたサーバーレス環境で
ビジネスロジックに集中

CI/CD 標準装備のスキーマ駆動 Scaffold (自動生成) による開発効率の最大化
より少ない管理コストでグローバル規模のスケールを実現

Ruby サーバーレスフレームワーク "SOULs"

SOULs プロジェクトはソフトウェアの開発・運用・保守に関するコストを下げることを目的に立ち上げられました。このプロジェクトはオランダ政府より先端研究開発として認定(WBSO)されています。

高速な開発体験

Ruby on Rails の高速な開発体験をそのままに安全性や変更容易性を高め、サーバー管理の心配も減らすことに注力しました。益々変化の速度が上がっているビジネスに対応していくためです。

私達は Ruby on Rails を手にした時の感動を忘れられません。クラウドネイティブな環境でも同様の開発体験を実現したいためActive Recordを採用し、分散システム用にスキーマ駆動 Scaffold を再構築しました。

型定義ファイルからテストファイルまで必要なファイルはすべてModelを元に生成され、ルーティングも自動で行われるため、面倒な繰り返し作業なくビジネスロジックに集中できます。

安全な運用体験

テストはすぐにフィードバックを返してくれるため、変更がシステムのほかの部分に悪影響を及ぼしてもすぐ発見できるようにしてくれます。RSpecでユニットテストを書きコード単体ごとに独立した検証を行い、バグが入り込むのを防ぎます。

Ruby 3.0 よりRBSによる静的タイプチェックが可能になりました。SteepによるIDEサポートと組み合わせることにより、コーディングしながらでもバグを見つけることができるようになり、バグを生んだ瞬間に対応できることが増え、コードベースにバグが入り込むのを防ぎます。型安全な開発環境の提供は不要なミスを減らし、かつ大規模なアプリケーションの構築をより安全にし、チームのアジリティも高く保ちます。

Linter、FormatterにRuboCopを使用することでチーム内のコーディングスタイルを統一し、コードベースに秩序と透明性をもたらします。開発意図の一致を図り、運用保守の負担を減らします。

安心な保守体験

GitHub Actionsを使用してコミットごとに小さく自動デプロイしていくことでコード統合による問題を最小限に抑えます。

テストが失敗すればエラーを本番環境に持ち込むことはないため、結果を確認し落ち着いて修正を行うこともできます。

また、分散システムを構築していてもログを一箇所で管理できるため、起きている問題をすぐに特定することもできます。

お知らせ

講演が決まりました 🎉

RubyWorld Conference 2021


Session - 6:Ruby サーバーレスアプリケーションフレームワーク “SOULs”

2021年12月16日(木)15:20 - 15:50

RubyWorld Conferenceは、プログラミング言語「Ruby」の日本最大のビジネスカンファレンスです。

プログラム詳細ページ

SOULs を支える技術

Active Record と Scaffold

私達は Ruby on Rails を手にした時の感動を忘れられません。クラウドネイティブな環境でも同様の開発体験を実現したいためActive Recordを採用し、分散システム用にスキーマ駆動 Scaffold を再構築しました。

Ruby v3 と RBSの型チェック

3倍速くなったRubyはクラウドにおいてさらに輝きを増します。RBSによる型安全な開発環境の提供は不要なミスを減らし、かつ大規模なアプリケーションの構築をより安全にし、チームのアジリティも高く保ちます。

RuboCop Linter/Formatter

歴史的に私達はまるで石版のような難解なコードに悩まされてきました。コーディングスタイルの統一はコードベースに秩序と透明性をもたらします。シンプルに読みやすいコードは管理しやすいコードです。

RSpecを使ったテスト

テストはすぐにフィードバックを返してくれるため、変更がシステムのほかの部分に悪影響を及ぼしてもすぐ発見できるようにしてくれます。コード単体ごとに独立した検証を行い、バグが入り込むのを防ぎます。

GitHub Actions (CI/CD)

コミット毎に小さく自動デプロイしていくことでコード統合による問題を最小限に抑えます。テストが失敗すればエラーを本番環境に持ち込むことはないため、結果を確認し落ち着いて修正を行うこともできます。

GraphQL API

速度、柔軟性、開発者にとっての使いやすさを向上させるために設計されており、実行を確認できる統合開発環境(IDE)も提供します。複数のデータソースから取得するリクエストを1つの API 呼び出しで構成できます。

固定IP制限に対応

複数のインスタンスにスケールしてリクエストを処理する分散システムでは固定IP制限に対応するのが難しい経緯がありました。SOULsではこの問題をCloud NATを使用することで解決しています。

Effortless Routing

ルーティングの作業は単純ですが広範囲に渡り、ミスも多くなりがちです。SOULsではGraphQLのQueryやMutationはもちろん、Pub/Subワーカーのトピック含め極力ルーティングに関する作業は自動化しています。

Docker コンテナ

インフラをコード化しファイル共有することでどこでも同じ環境を作れるようにします。ローカルの開発環境やクラウド上の本番環境等の環境差異に悩まされることなく再現可能なインフラ上で開発を続けることができます。

SOULs サーバーレスアーキテクチャ

Cloud Run

Cloud Run では、トラフィックに応じてほぼ瞬時にゼロから自動的にスケールされるため、インフラストラクチャの管理は一切不要です。また、使用した正確なリソース量に対してのみ課金されます。Cloud Run を使うと、アプリケーションの開発とデプロイが、よりシンプルかつ迅速になります。

Cloud SQL

Cloud SQL が、データベースの信頼性、安全性、スケーラビリティを自動的に確保してくれるため、中断されることなくビジネスを継続できます。Cloud SQL は、バックアップ、レプリケーション、暗号化、パッチ、容量増加をすべて自動的に行いながら、世界中のどこでも 99.95% を超える可用性を維持します。

Cloud Pub/Sub

同期されたゾーン間メッセージ レプリケーションとメッセージごとの受信トラッキングにより、あらゆる規模で信頼性の高い配信が可能になります。パーティションのない自動スケーリングと自動プロビジョニングによって、プランニングが不要になり、本番環境で初日からワークロードに対応できます。

Cloud Storage

あらゆる規模の企業に対応するオブジェクト ストレージ。保存できるデータ量に制限はありません。必要に応じて何度でもデータを取得できます。さまざまなストレージ クラスにデータを保存することで、パフォーマンスを犠牲にすることなく費用を節約できます。

Cloud NAT

Cloud NAT を使用すると、更新、パッチ適用、構成管理などのために、制御された効率的な方法でインターネットにアクセスできます。外部リソースは Cloud NAT ゲートウェイを越えてプライベート インスタンスに直接アクセスできないため、VPC を切り離して保護できます。

Cloud Scheduler

Cloud Scheduler は、エンタープライズ クラスのフルマネージド cron ジョブ スケジューラです。ほぼすべてのジョブをスケジューリングできます。障害時の再試行といった作業をすべて自動化するため、手作業や人的な介入を軽減でき、自動化タスクをすべて一元管理できます。

Firebase Authentication

安全な認証システムの構築を容易にし、エンドユーザーのログインや初期登録のエクスペリエンスを向上させることを目的としています。メールアドレスとパスワードの組み合わせ、電話認証、Google、Twitter、Facebook、GitHub のログインなどに対応しています。

Container Registry

Docker イメージの一元的な管理と脆弱性分析を行えます。また、きめ細かなアクセス制御によって、どのユーザーに何へのアクセスを許可するかを決定できます。完全に自動化された Docker パイプラインを設定すれば迅速なフィードバックを得ることができます。

GitHub Actions

GitHub Actionsを使用すると、ワールドクラスのCI / CDを使用して、すべてのソフトウェアワークフローを簡単に自動化できます。 GitHubから直接コードをビルド、テスト、デプロイすることができます。SOULsではContainer Registryと組み合わせて使っています。

Virtual Private Cloud (VPC)

単一の VPC で、公共のインターネットを経由することなく複数のリージョンにまたがった通信を実現できます。オンプレミスでは、VPC とオンプレミス リソースとの間の接続を、1 つの VPC 内のすべてのリージョンと共有できます。

IAM

Identity and Access Management(IAM)を使用すると、特定のリソースに対するアクションの実行を、承認を受けたユーザーのみに許可できます。これは、Google Cloud リソースを集約して可視化し、管理するうえで役立ちます。

Cloud Logging

エンタープライズ規模でのリアルタイムのログ管理と分析。Google Cloud のサービス全体でサポートされており、アラートを設定したりインフラストラクチャとアプリケーション全体の問題をすばやくトラブルシューティングできます。

パートナー

無料クレジット $200 分をプレゼント中 🎉

はじめての方はもちろん、既に Google Cloud を使用中の方も以下のリンクから $200 分の無料クレジットを獲得することができます。

無料クレジットを受け取る 💰

SOULs は現場から生まれたフレームワークです

素早くビジネスを立ち上げ、継続的に改善を続けられるように設計しました