プログラミングマガジン

プログラミングを中心にIT技術をできるだけわかりやすくまとめます。

  • ホーム
  • GitLab
  • 【GitLab】アーキテクチャ
 
 
     
  • サーバー言語  
    • Python
    • Ruby
    • PHP
    • SQL
  •  
  • インフラ  
       
    • AWS
    •  
    • 基本
    • Git
  • Web
       
    • Web開発
    • JavaScript
    • Vue.js
    • React
  •  
  • 設計  
       
    • 実装設計
    • DB設計
  • 問い合わせ
  

【GitLab】アーキテクチャ

03.08

  • miyabisan2
  • コメントを書く

この記事は2分で読めます

GitLabのアーキテクチャの概要

単体のアプリケーションで成り立っているミドルウェアではなく複数の内部アプリケーションが存在し各ミドルウェアが連携しあって処理を行っています。

GitLabで利用されているミドルウェア

主要ミドルウェア

GitLabは下記5つのソフトウェアが主要ミドルウェアになります。

  • Nginx
  • Unicorn
  • PostgreSQL
  • Sidekiq
  • Redis

Nginx

GitLabのWebインターフェイスです。「GitLab-Workhouse」や「GitLab Pages」にProxyPass設定を行うことでリクエスト別にルーティングを行っています。

Unicorn

Railsで作成されたアプリを動かすためのアプリケーションサーバです。主要アプリケーションの「GitLab-Rails」が稼働しています。

PostgreSQL

GitLabで使用するデータの全てが格納されています。もちろん、内部に含まれているPostgreSQLの利用は必須ではなく外部のPostgreSQLやMySQL等を利用する事も可能です。

Sidekiq

複数のタスクを非同期に実行できるRedisの非同期処理ライブラリです。下記のような機能を実装してくれます。

  • マルチスレッドによるメモリの有効活用
  • リトライ処理
  • メール処理やバッチ処理等の重い処理の負荷分散

Redis

メモリ上にデータを保存できるKeyValueストアです。下記のようなデータが保存されます。

  • Sidekiqのタスク情報
  • ログインユーザーのセッション情報

その他ミドルウェア

他には下記のようなミドルウェアも含まれています。

  • Promethus
  • Logrotate

GitLabのアプリケーション

主要アプリケーション

GitLab-Rails

ユーザーから要求されたタスク処理を行っているGitLabのコアアプリケーションです。基本はモノシリックですが徐々に機能を外部化してきておりパフォーマンスも改善されてきています。

下記のAPIも提供しています。

  • Redisに入っているセッション情報の確認
  • Sidekiqへのタスクの作成
  • データベースへのデータの出し入れ

補完アプリケーション

  • GitLab-Shell
  • GitLab-Workhorse
  • Gitaly

GitLab-Shell

SSH経由でGitコマンドを受け付けてGit操作を行うためのアプリケーションです。

GitLab-Workhorse

GitLab-RailsへのHTTPリクエストを一旦全てこれが受け付けています。リクエストがGitLab-Rails宛かGit本体宛なのかを判断して転送するGo言語で記述されたリバースプロキシになります。元々はNginxやGitLab-Railsで行っていた処理を設定の負荷分散や負荷を軽減するために作られたアプリケーションになります。

Gitaly

ストレージ(実ディスク)に保存されたGitリポジトリへのアクセス処理を行います。元々GitLab-Shellの中にこの機能は含まれていましたがRedis連携のキャッシュ機能や、gRPCを利用したI/O最適化の用途で使われていたりします。

スポンサーリンク
  • 2020 03.08
  • miyabisan2
  • コメントを書く
  • GitLab
  • Tweets Twitter
  • このエントリーをはてなブックマークに追加
  • LINEで送る

関連記事

  1. 2020 03.11

    【GitLab】「Mattermost」について

  2. 2020 03.13

    【GitLab】「Merge Request(マージリクエスト)」について

  3. 2020 03.12

    【GitLab】「Issue Tracker」、「Issue Board」について

  4. 2020 03.08

    【GitLab】ディレクトリ構成や概要的知識

  5. 2020 03.08

    【GitLab】Dockerイメージ、Docker Hubについて

  6. 2020 03.14

    【GitLab】「GitLab CI/CD Jobs」について

  • コメント ( 0 )
  • トラックバック ( 0 )
  1. この記事へのコメントはありません。

  1. この記事へのトラックバックはありません。

返信をキャンセルする。

【DevOps】DevOpsについてやそれを支える様々…

【GitLab】Dockerイメージ、Docker H…

RETURN TOP

著者プロフィール

エンジニア歴10年で過去に業務系、Webデザイン、インフラ系なども経験あります。現在はWeb系でフロントエンド開発中心です。

詳細なプロフィールはこちら

スポンサーリンク

カテゴリー

  • Android
  • AngularJS
  • API
  • AWS
  • C++
  • CSS
  • cursor
  • C言語
  • DDD
  • DevOps
  • Django
  • Docker
  • Figma
  • Git
  • GitLab
  • GraphQL
  • gRPC
  • Hasura
  • Java
  • JavaScript
  • Kubernetes
  • Laravel
  • linux
  • MySQL
  • Next.js
  • nginx
  • Node.js
  • NoSQL
  • Nuxt.js
  • Oracle
  • PHP
  • Python
  • React
  • Redux
  • Rspec
  • Ruby
  • Ruby on Rails
  • Sass
  • Spring Framework
  • SQL
  • TypeScript
  • Unity
  • Vue.js
  • Webサービス開発
  • Webデザイン
  • Web技術
  • インフラ
  • オブジェクト指向
  • システム開発
  • セキュリティ
  • その他
  • データベース
  • デザインパターン
  • テスト
  • ネットワーク
  • プログラミング全般
  • マイクロサービス
  • マイクロソフト系技術
  • マルチメディア
  • リファクタリング
  • 副業
  • 未分類
  • 業務知識
  • 生成AI
  • 設計
  • 関数型言語
RETURN TOP

Copyright ©  プログラミングマガジン | プライバシーポリシー