本記事について
標題の通りですが、架空の企業にて使う架空のソリューションサービス企画・要件定義・設計を行った記録になります。
本記事は企画編です。
そもそもの目的
自分自身の修行の為、
- 上流工程について理解を深める
- Dockerについて理解を深める
この2つの意図で始動しました。
サービスについて
Dockerコンテナを使ったdevopsを実現できる汎用的な構成を提案・提供するサービス(ソリューション)
実現方法
AWSの開発者向けサービス群を組み合わせて実現する。
Dockerとは?
Dockerは、コンテナ仮想化を用いてアプリケーションを開発・配置・実行するためのオープンソースソフトウェアあるいはオープンプラットフォーム。(Wikipediaより引用)
導入メリット:
アプリケーションの開発・保守対応におけるサーバー構築の大部分を自動化でき、なおかつ構成管理の側面も持つため、開発・検証・本番環境の差異を(必要な差異を除いて)なくすことができる。
参考画像1
devops とは?
DevOpsは、ソフトウェア開発手法の一つ。開発担当者と運用担当者が連携して協力する開発手法をさす。ソフトウェアを迅速にビルドおよびテストする文化と環境により、確実なリリースを、以前よりも迅速に高い頻度で可能とする組織体制の構築を目指している。(Wikipediaより引用)
導入メリット:
アプリケーションの迅速な改善対応が可能となる
参考画像2
対象企業
SaaSサービスを開発している企業で、Dockerをこれから導入したい会社という想定。
導入によって得られるメリットについて
その1:ワークロードの環境差異を最小化する
処方箋となるケース
プロダクトの稼働環境が元々運用管理チームにより管理されていたが、近年クラウド移行の推進により開発サイドの介入が増えた。それに付随して、開発環境では起こらなかったバグが本番環境で起こるなど、環境差異に起因する問題が顕在化している。
その2:環境構築の手間を最小化する
処方箋となるケース
開発環境においてプログラミング言語や各種ライブラリなどのバージョンが一元管理されておらず、開発やテストの為の環境を揃えるのに時間を要している
その3:迅速な開発体制を促進
処方箋となるケース
アジャイル開発の導入が始まっており、ビルド、デプロイなどリリース関係のフローを自動化・簡略化して迅速な開発スパンを回せる体制を構築したい
コンポーネント構成
メインコンポーネント
- Amazon ECS
- Amazon ECR
- AWS CodeBuild
- AWS CodeDeploy
- AWS CodePipeline
- AWS Systems Manager
サブコンポーネント
- AWS CloudFormation
- AWS IAM
- AWS CloudWatch Logs
- GitHub
要件定義編に続く。。。