string(4) "blog"

CONTENTS

2019.7.29

沖縄旅行_ワークショップ

written by 山本 竜二

エンジニアの山本です。

初日のサバイバルゲームに続き、社員旅行(合宿?)2日目は朝から大忙しでした。

早朝から数人で近くのビーチに行って泳ぎ、みんなで朝食の準備。

朝から山盛りの朝食をとったあとは、ワークショップです。

内容的にちょっと堅苦しい感じになりますがご了承ください。

ワークショップの主な議題は以下の通り。

  1. 会社方針
  2. DevOps
  3. DesignOps

その中から、DevOpsについて少しお話します。

DevOpsとは

一般的にDevOpsは、

開発者と運用者が協力しあう開発手法

と定義されています。

Development(開発) + Operations(運用) = DevOps ですね。

一見すると当たり前の事のように思えますが、次の理由からこの両者には大きな壁があります。

  • 開発者:新しいサービスを作り出す攻めの姿勢
  • 運用者:安定したサービスを提供する守りの姿勢

サービス(ビジネス)の価値を高めるという共通の目的があるのだから、協力しあってより良いサービスを作りたいですよね。

そこで登場するのがDevOpsを支援するツールや技術です。

DevOpsツールを導入すれば、コード修正後のテスト、デプロイ、リリースといった、これまで手順書を見ながらポチポチとやっていた手作業を、ほぼ自動化する事が可能です。

自動化による冪等性(誰が何度やっても同じ結果が得られる)が保証できれば、安心してリリースできるし、安心して運用できますね。

毎回神経を使う部分を自動化する事で、開発に注力する事ができます。

DevOpsを語る上で重要な要素が2つあります。

  • 継続的インテグレーション(CI)
    • コード修正後のビルド、テストを自動化
  • 継続的デリバリー(CD)
    • CIに加えて、デプロイ、リリースまでも自動化

※両方をまとめて、CI/CDと表現する事もあります。

DevOpsとCI/CDの関係をまとめたのが下図です。

AWSにおけるDevOpsの一例

最後に、AWSにおけるDevOpsの一例を紹介しておきます。

※ 上図はテストプロセスを含んでいません。

流れ

  1. 開発者がコードを修正し、Githubの特定ブランチにプッシュ(ここは手動)
  2. Githubのコード一式を取得してS3へアップ(CodePipeline)
  3. S3のコード一式を取得してビルド(コード、Docker)し、DockerイメージをECRに登録(CodeBuild)
  4. ECRの新しいDockerイメージを使って、Blue/Greenデプロイ(CodeDeploy)
  5. Green環境で動作確認を行い、問題なければ切り替えを実施(CodeDeploy上で手動/自動)

あくまで一例ですが、このような感じでAWSの各サービスを使えば、比較的簡単にDevOpsが実現できます。

今回は簡単な説明になってしまいましたが、機会があればもう少し突っ込んだ内容で書きたいと思います。

一覧に戻る
お問合わせ