正式なドキュメントは英語版であり、この日本語訳はAI支援翻訳により作成された参考用のものです。日本語訳の一部の内容は人間によるレビューがまだ行われていないため、翻訳のタイミングにより英語版との間に差異が生じることがあります。最新かつ正確な情報については、英語版をご参照ください。

Linuxパッケージからのパッケージとイメージ

  • プラン: Free、Premium、Ultimate
  • 提供形態: GitLab Self-Managed

GitLabがバンドルされた依存関係を含むパッケージとDockerイメージを提供する理由について、基本的な情報を以下に示します。

これらの方法は、物理および仮想マシンへのインストール、およびシンプルなDockerインストールに最適です。

目標

これらのパッケージには、いくつかの主要な目標があります:

  1. インストール、アップグレード、メンテナンスが非常に簡単です。
  2. 幅広いオペレーティングシステムをサポートします。
  3. クラウドサービスプロバイダーの広範なサポート。

Linuxパッケージのアーキテクチャ

GitLabのコアはRuby on Railsプロジェクトです。しかし、GitLabはアプリケーション全体としてより複雑で、複数のコンポーネントを持っています。これらのコンポーネントが存在しないか、または誤って設定されている場合、GitLabは動作しないか、予測不能な動作をします。

GitLab開発ドキュメント内のGitLabアーキテクチャ概要は、これらのコンポーネントの一部とそれらがどのように相互作用するかを示しています。これらの各コンポーネントは、設定され、最新の状態に保つ必要があります。

ほとんどのコンポーネントは外部依存関係も持っています。たとえば、Railsアプリケーションは多くのRuby gemに依存しています。これらの依存関係の一部は、それら自身の外部依存関係も持っており、それらが正しく機能するためにはオペレーティングシステム上に存在する必要があります。

さらに、GitLabには毎月のリリースサイクルがあり、最新の状態を保つために頻繁なメンテナンスが必要です。

以前にリストされたすべての事項は、GitLabインストールを維持するユーザーにとってチャレンジとなります。

外部ソフトウェア依存関係

GitLabのようなアプリケーションにとって、外部依存関係は通常、次のチャレンジをもたらします:

  • 直接的および間接的な依存関係間でバージョンを同期させ続けること。
  • 特定のオペレーティングシステム上でのバージョンの可用性。
  • バージョンの変更により、以前使用されていた設定が導入または削除される可能性があります。
  • ライブラリが脆弱とマークされていても、新しいバージョンがまだリリースされていない場合のセキュリティ上の影響。

オペレーティングシステムに依存関係が存在するとしても、他のサポートされているOSに必ずしも存在するとは限らないことに注意してください。

メリット

バンドルされた依存関係を持つパッケージのいくつかの利点:

  1. GitLabのインストールに必要な労力が最小限です。
  2. GitLabを起動して実行するために必要な設定は最小限です。
  3. GitLabのバージョン間のアップグレードに必要な労力が最小限です。
  4. 複数のプラットフォームがサポートされています。
  5. 古いプラットフォームでのメンテナンスが大幅に簡素化されます。
  6. 潜在的な問題のサポートに必要な労力が少なくなります。

欠点

バンドルされた依存関係を持つパッケージのいくつかの欠点:

  1. 既存のソフトウェアとの重複の可能性。
  2. 設定の柔軟性が低くなります。

システムパッケージを使用できるのに、なぜLinuxパッケージからパッケージをインストールするのか

答えは単純に、必要なメンテナンスが少なくなるからです。バージョンに互換性がない場合に既存の機能を損なう可能性のある複数のパッケージを処理する代わりに、1つだけを処理します。

複数のパッケージでは、複数の場所で正しい設定が必要です。設定を同期させ続けることは、エラーが発生しやすい可能性があります。

現在のすべての依存関係を維持し、将来導入される可能性のある依存関係に対処するのに十分なスキルと時間がある場合、上記の理由はLinuxパッケージからのパッケージを使用しない理由としては十分ではないかもしれません。

この方法を選択する前に、2つのことを念頭に置いてください:

  1. 大多数のユーザーによってテストされていないライブラリのバージョンを使用する場合、存在する可能性の数により、遭遇する問題に対するサポートを得ることがより困難になる可能性があります。
  2. Linuxパッケージからのパッケージは、コンポーネントを独立して実行する必要がある場合に、不要なサービスをシャットオフすることも可能です。たとえば、Linuxパッケージインストールで非バンドル型PostgreSQLデータベースを使用できます。

アプリケーションに多くの可動部分がある場合、Linuxパッケージのような非標準ソリューションの方が適している可能性があることに留意してください。

複数のサービスを持つDockerイメージ

GitLab DockerイメージはLinuxパッケージに基づいています。

このイメージから生成されるコンテナには複数のプロセスが含まれることを考慮し、この種のコンテナは「fat container」と呼ばれることもあります。

このようなイメージには賛否両論がありますが、その理由は以前に述べたことと同様です:

  1. 非常に簡単に開始できます。
  2. 最新バージョンへのアップグレードは非常に簡単です。
  3. 複数のコンテナで別々のサービスを実行し、それらを稼働させ続けることはより複雑であり、特定のインストールでは必要ない場合があります。

この方法は、コンテナとスケジューラを使い始めたばかりの組織や、より複雑なインストールに対応できない組織に役立ちます。この方法は優れた導入方法であり、小規模な組織に適しています。