DevOps環境(次世代開発基盤)

DevOpsとは、ソフトウェア開発手法の一つで、開発担当者と運用担当者が連携して協力する開発手法でソフトウェアを確実にリリースする手法です。GitlabのGitOptやGitLab RUNNERを用いたDevOpsツールとGoogleCloud™️を組み合わせることで開発・運用の精度向上や負荷の低減を期待できるCI/CD(継続的インテグレーションと継続的デプロイ)を実現します。
以下のような課題はございますか?
自動化に関するノウハウがなく手動でテストやビルドを行なっている
手動で行ってしまう
テスト環境でうまくいっていたプログラムが本番環境で動かないケースがある
環境が統一されていない
デプロイ手順が複雑怪奇になっており、俗人化してしまっている
デプロイの俗人化

時間が取れない
CI/CDは興味があるが、日々の実務が忙しく、なかなか試してみようと思わない
上記のような様々なケースにおいて、
アジャイル開発を促進する為の基盤構築をサポートをいたします。

DEVOPSとは?

DevOpsとは開発チーム(Development)と運用チーム(Operations)が協力することにより、ビジネスの価値を上げる概念を指します。開発チームと運用チームのミッションはどちらも「システムによってビジネスの価値をより高めるだけでなく、そのビジネスの価値をより確実かつ迅速にエンドユーザーに届け続ける」ですが、しかしながら、開発チームが「システムに新しい機能を追加する」ことは、運用チームの「システムの安定稼働」を脅かすことになり、「目指すミッション」は同じでも、達成へのアプローチが異なることから、対立関係になることが少なくありません。
「運用チームはサービスリリースの重要性を理解していない!」
「開発チームは運用のことをよく理解していない!」
という意見の対立が生まれてしまうのです。
開発チームと運用チームが協力することの重要性を説いたのがDevOpsとなります。



CI/CDとは
CI(Continuous Integration=継続的インテグレーション)
CD(Continuous Delivery=継続的デリバリー)
システム開発/運用においては、ビルドやテストを自動化(=CI)から、テスト済みコードのマージ&本番環境にリリース(=CD)するといった関係のライフサイクルがあるため、CIとCDを合わせてCI/CDと呼ばれています。

リポジトリ(ソース)

開発者

ビルド
自動テスト

テスト結果
CI
(継続的
インテグレーション)




デプロイ

CD
(継続的デリバリー)
リリース判断
開発環境
テスト環境
ステージング環境
本番環境
CI/CDとしての一連の流れを「パイプライン」と呼ぶ
テスト自動化とビルドの信頼性
(GitLab + GitLab Runnderを利用した一例)
GitLab上では「ビジネス課題を起点としたマージリクエスト」という機能があり、起票した課題(=イシュー)を起点に、ソースリポジトリより改修用ブランチを作成し、レビューアーによる承認をもってソースへ反映(マージ)という一連の流れを紐づけることが可能です。さらに関連製品であるGitLab Runnerを用意しておくことにより、そのマージをトリガーとしそのままCI/CDプロセスへ・・・
といった親和性の高いパイプラインが構築可能となります。

(クラウド型/オンプレミス型)
GitRunner
(仮想マシン、オンプレミス、Kubernetes、etc...)

開発者
マージ

ソース(リポジトリ)

イシュー(課題)
コンテナイメージ格納庫





コンテナイメージ格納庫
ビルド/自動テストを行なって検証済みのコンテナを、デプロイ時にダウンロード可能な領域丸ごとイメージとして格納
イシューを起点に
イシュー(課題)を起点としブランチを切る、といった、「課題と改修内容」が明確に紐づく

承認者
マージリクエスト

ビルド用
コンテナを起動
設定レシピ


設定レシピ
設自動テスト、ビルド、デプロイなど、CI/CDのレシピが書かれているファイル
環境依存のない空間
コンテナ内でテスト、ビルドが行われる。コンテナ管理でのテスト結果に問題がなかれば、環境依存が発生しないため信頼性が高い
各環境へデプロイ
オートスケーリングを目指したCI/CD(Gitlab+GKEの例)
コンテナベースのクラスター管理とスケール拡張を自動的に行うオーケストレーションであるKubernetes。そのフルマネージド版となるGKE(Google Kubernetes Engine)のセットアップがGitlab上からの簡易なオペレーションで展開可能となっております。



GitLab
Repository

GKE(Google Kubernetes Engine)

テスト環境

GitLAb Runner

GitLab Job Pod
(一時的なPOD)
ステージング環境
本番環境
自動スケーリング
アクセスの集中によりサーバがアクセスをさばき切れないケースにおいて、Kubernetesが設定した範囲内において、スペックを増強し(=スケールアウト)、負荷がさがればスペックを下げます(=スケールイン)。
弊社では規模に関わらず、柔軟な提案・対応が可能です。
まずはお気軽にご相談ください。