Closed1

オープンソースでクラウドサービスを構築できる「ubicloud」

kun432kun432

GitHubレポジトリ

https://github.com/ubicloud/ubicloud

ubicloud

Ubicloud は、どこでも実行可能なオープンソースのクラウドである。Linux がプロプライエタリなオペレーティングシステムに対するオープンな代替品であるように、クラウドプロバイダーに対するオープンな代替品として考えてほしい。

Ubicloudは、Hetzner、Leaseweb、AWS Bare Metalなどのベアメタルプロバイダー上でIaaSクラウド機能を提供する。これらのプロバイダー上で自分でセットアップすることも、当社のマネージドサービスを利用することもできる。現在、パブリックベータ版として公開中である。

なぜそれを使うのか

AWS、Azure、Google Cloudなどのパブリッククラウドプロバイダーは、スタートアップ企業や企業にとって生活をより簡単にしている。しかし、それらはクローズドソースであり、コンピュータを非常に割高な料金でレンタルし、ユーザーを囲い込んでしまう。Ubicloudはオープンソースの代替案を提供し、コストを削減し、インフラの管理権限をユーザーに戻す。クラウドの利便性を犠牲にすることなく、すべてを実現する。

現在、AWSは約200のクラウドサービスを提供している。最終的には、クラウドサービスの10%を導入することで、その消費量の80%を占めることになるだろう。

現在、Ubicloudを使用するワークロードの例と理由には、以下のようなものがある。

  • CI/CDパイプラインのような一時的な作業負荷がある(GitHub Actionsと統合している)、または、計算/メモリ負荷の高いテストを実行したい。当社のマネージドクラウドはAWSよりも約3倍も安価なので、コストを削減できる。
  • Kamalのようなポータブルでシンプルなアプリデプロイメントサービスを求めている。私たちはUbicloudのコントロールプレーンをHerokuからKamalに移行している。また、その過程でKamalの依存関係にあるオープンでポータブルなサービスを提供したいと考えている。
  • どこかにベアメタルマシンが置いてある。ポータビリティ、セキュリティ、またはコンプライアンス上の理由から、独自のクラウドを構築したい。

ステータス

Ubicloudはパブリックベータ版である。 コミュニティフォーラムでフィードバックを提供したり、ヘルプを得たり、ネットワーク環境のサポートを依頼したりすることができる。

当社は、パブリッククラウドサービスを構築するにあたり、確立されたアーキテクチャパターンを採用している。コントロールプレーンがデータプレーンを管理し、データプレーンではオープンソースソフトウェアを活用している。当社の現在のクラウドコンポーネント/サービスは以下の通りである。

  • Elastic Compute: 当社のコントロールプレーンは、SSHを使用してLinuxベアメタルサーバーと通信する。仮想マシンモニタ(VMM)としてCloud Hypervisorを使用しており、VMMの各インスタンスは、さらなる分離/セキュリティのためにLinuxネームスペース内に格納されている。
  • ネットワーク: IPsecトンネリングを使用して、暗号化されたプライベートネットワーク環境を確立している。デュアルスタック構成でIPv4とIPv6をサポートし、パブリックおよびプライベートネットワークの両方を提供している。セキュリティのため、各顧客のVMは独自のネットワークネームスペースで動作する。ファイアウォールロードバランサーにはLinux nftablesを使用している。
  • ブロックストレージ、非複製: ストレージパフォーマンス開発ツールキット(SPDK)を使用して、仮想化ブロックストレージをVMに提供している。SPDKにより、将来的にスナップショットや複製などのエンタープライズ機能の追加が可能になる。セキュリティのベストプラクティスに従い、データ暗号化キー自体を暗号化している。
  • 属性ベースのアクセス制御(ABAC): ABACを使用すると、ユーザーの属性、役割、権限を定義し、リソースへのきめ細かいアクセス権限を与えることができる。ABACの設計についてはこちらを参照。
  • 今後の方針: 次に、K8sの管理やメトリクス/モニタリングサービスに取り組む予定である。特定のクラウドサービスから恩恵を受けるワークロードをお持ちの場合は、コミュニティフォーラムを通じてご連絡いただきたい。
  • コントロールプレーン: データプレーンサービスとリソースを管理する。これは、Postgresにデータを保存するRubyプログラムである。HTTPリクエストの処理にはRodaフレームワークを、データベースへのアクセスにはSequelを使用している。ウェブ認証はRodauthで管理している。データプレーンサーバーとの通信には、ライブラリnet-ssh経由でSSHを使用している。テストにはRSpecを使用している。
  • Cloudコンソール: Rodaフレームワークで提供されるサーバーサイドのウェブアプリ。ビジュアルデザインにはTailwind UIのコンポーネントを使用したTailwind CSSを使用している。また、インタラクティブ性のためにjQueryも使用している。

Ubicloudでハッキングを始めたい場合は、RubyとPostgresのバージョンを取得する方法はどのようなものでも構わない。これについて意見がない場合は、当社の開発チームでは、こちらで詳しく説明されているasdf-vmを使用している。

Greptileは、Ubicloudのソースコードをインデックス化するAI/LLMを提供しており、それに関する質問に回答することができる

FAQ

このようなものの構築経験はありますか?

当社の創業チームはAzure出身であり、それ以前はAmazonとHerokuで働いていた。また、スタートアップの経験もある。Microsoftに買収されたCitus Dataでは共同創設者および創業チームのメンバーだった。

OpenStackとはどう違うのか?

3つの違いがある。まず、Ubicloudはマネージドサービスとして利用できる(パッケージソフトとは異なる)。これにより、数週間ではなく数分で利用を開始できる。Ubicloudはマルチテナント向けに設計されているため、保存時および転送時の暗号化、仮想ネットワーク、秘密鍵のローテーションなどの機能が組み込まれている。

次に、私たちは当初、開発者をターゲットとしていた。これにより、迅速なフィードバックサイクルが実現し、今後2年以内に6つの主要サービスをGA版として提供できると期待している。OpenStackは現在も主に3つのクラウドサービスで使用されている。

最後に、私たちはシンプルさを追求している。OpenStackでは、10種類のハイパーバイザー、10種類のS3実装、5種類のブロックストレージ実装の中から選択しなければならない。ソフトウェアは、これらの実装がすべて互換性を持つように動作する必要がある。これはコンサルタントウェアにつながる。私たちはUbicloudでより独自性の強いアプローチを取るつもりだ。

マネージドとセルフホストがあるようで、セルフホストはDockerでコントロールプレーンを構築できるっぽい。ただローカル1台の中ででサクッと試せるようなものではなさそう。ちょっと興味はあるんだけど。

そういえばOpenShiftも試したいなと思いつつ、なかなか試せていない。

このスクラップは1ヶ月前にクローズされました