Kubernetesを超えて: 宣言的、ゼロダウンタイム、ゼロストレス


Dewyは、Kubernetes以外の環境でアプリケーションを宣言的にデプロイするためのソフトウェアです。サーバー上のアプリケーションとデータを常に最新の状態に保ちます。
Server command
アプリケーションサーバーの自動デプロイ

Dewyは新しいリリースを継続的に監視し、グレースフルリスタートで自動的にデプロイします。実行中のプロセスへの影響はゼロです。 シグナルベースの手動再起動やマルチポート構成もサポートしています。
Server command
ネットワーク境界を越えたデプロイ

AWS S3やGoogle Cloud Storageにアーティファクトをアップロードすれば、あとはDewyにお任せ。本番サーバーはリポジトリへの直接アクセス、VPN、複雑なファイアウォールルールなしで自動的に更新を取得します。
Container command
ゼロダウンタイムのコンテナデプロイ

Containerコマンドは、ヘルスチェック、自動トラフィック切り替え、設定可能なレプリカ数により、コンテナ化されたアプリのゼロダウンタイムローリングアップデートを実現します。ランタイムを含めてすべてをデプロイしたい場合に最適です。
Assets command
データベースマイグレーションの自動化

リポジトリからschema.sqlをデプロイし、デプロイ後フックを使用してsqldefなどの冪等性のあるマイグレーションツールを実行します。開発者はスキーマを定義するだけで、Dewyがマイグレーションプロセス全体を自動化し、チームを手動のデータベース操作から解放します。
Core Benefits

プラットフォームなしで宣言的に
Kubernetesは宣言的デプロイを主流にしましたが、アプリケーションを宣言的にデプロイするために完全なオーケストレーションプラットフォームは必要ありません。DewyはKubernetesスタイルのデプロイをシンプルな環境(VPS、VM、ベアメタル)に提供します。複雑さもオーバーヘッドもありません。
Built-in Benefits

セキュアバイデザイン
Dewyはプルベースアーキテクチャを採用しており、サーバーがレジストリに更新をポーリングします。インバウンド接続は不要です。これにより、プッシュベースのデプロイに関連する一般的な攻撃ベクトルを排除します。すべてのデプロイを追跡する監査ログと組み合わせることで、誰が何をいつデプロイしたかを完全に可視化し、制御できます。すべてのレジストリ認証は、標準的な認証情報管理を通じて安全に処理されます。

低コスト、高価値
Dewyは外部依存関係のないシングルバイナリとして動作します。複雑なオーケストレーター、高価なインフラストラクチャは不要です。VPS、仮想マシン、物理サーバーに最適で、Kubernetesのオーバーヘッドなしにエンタープライズグレードのデプロイ自動化を提供します。プロフェッショナルなデプロイプラクティスを維持しながら、インフラストラクチャコストを削減できます。
Highly Practical
簡単に使え、エンタープライズユースも
シングルバイナリ、依存関係ゼロ、どこでも動作。セットアップには数分しかかかりませんが、監査ログ、通知、ゼロダウンタイムデプロイを備えたエンタープライズグレードのデプロイ自動化を手に入れることができます。複雑なオーケストレーター、急な学習曲線は不要。シンプルに実現された強力なデプロイ自動化です。

Frequent Questions
気になる疑問を解決
DewyはAnsible、シェルスクリプト、CI/CDツールとどう違いますか?
Ansibleとシェルスクリプトは命令的です。実行するステップを定義します。Dewyは宣言的です。望ましい状態を定義すると、Dewyがそれを継続的に維持します。CI/CDツール(GitHub Actionsなど)はビルドとテストを処理しますが、Dewyはデプロイメンテナンスに焦点を当てています。Dewyはプルベースでもあります。サーバーはプッシュを受け取るのではなく、更新を取得します。これによりSSHアクセス要件がなくなり、セキュリティが向上します。
Dewyを使用するにはDockerやKubernetesが必要ですか?
Dewyはベアメタルサーバー、VM、VPSで、コンテナプラットフォームなしで動作します。serverコマンドはバイナリを直接デプロイし、assetsコマンドは静的ファイルをデプロイします。Dockerは不要です。containerコマンドにはDockerが必要ですが、それはオプションです。DewyはKubernetesが過剰になる環境向けに特別に設計されています。
Go以外の言語で書かれたアプリケーションにDewyを使用できますか?
はい、もちろんです。Dewy自体はGoで書かれており、例ではGoアプリケーションがよく使われますが、任意の言語でアプリケーションをデプロイできます。serverコマンドは、コンパイルされたバイナリ(Rust、C++など)またはインタープリタ言語(Node.js、Python、Ruby)に使用します。containerコマンドは、任意の言語のコンテナ化されたアプリケーションに使用します。唯一の要件は、アーティファクトがセマンティックバージョニング(SemVer)またはカレンダーバージョニング(CalVer)に従うことです。
複数のサーバーにデプロイするにはどうすればよいですか?
各サーバーでDewyを実行し、すべて同じレジストリを指すようにします。各インスタンスは独立して更新をポーリングし、最新バージョンをデプロイします。レジストリのレート制限を回避するには、RedisやHashiCorp Consulなどの共有キャッシュバックエンドを使用します。これにより、複数のDewyインスタンスがバージョン情報を共有し、API呼び出しを削減できます。すべてのサーバーは自動的に同じバージョンに収束します。
Dewyは既存のCI/CDパイプラインにどのように適合しますか?
Dewyは、デプロイフェーズを処理することで、CI/CDパイプラインを補完します。CI/CD(GitHub Actions、GitLab CIなど)はアプリケーションをビルドし、アーティファクトをレジストリ(GitHub Releases、S3、GCS、またはコンテナレジストリ)にアップロードします。
Dewyはそのレジストリを監視し、新しいバージョンを本番環境に自動的にデプロイします。この分離により、CI/CDは本番サーバーへのSSHアクセスやデプロイ認証情報を必要としません。
デプロイが失敗した場合はどうなりますか?
Dewyには複数の安全機構があります。before-deployフックが失敗した場合、デプロイは中止され、現在のバージョンが実行し続けます。デプロイは成功したがアプリケーションの起動に失敗した場合、Dewyはエラーをログに記録し、通知を送信します(設定されている場合)。以前の7つのリリースはディスクに保持されているため、シンボリックリンクを変更することで手動でロールバックできます。Dewyは、持続的な障害中のアラート疲労を防ぐために、エラー通知を制限します。
Dewyは無料ですか?オープンソースですか?
はい、DewyはMITライセンスの下で完全に無料でオープンソースです。個人プロジェクト、商用アプリケーション、エンタープライズデプロイメントに、コストなしで使用できます。ソースコードはGitHubで入手可能で、コントリビューションを歓迎します。