この間ようやくDevOps環境構築キットEponaというものをOSSとしてリリースしました。
DevOps
DevOpsという言葉は様々な場所で聞きますが、理解するのがとても難しいです。 ずっと頑張って学んでいますが、まだまだ奥深く、いくらでも掘り下げるところがあります。
ぼくがDevOpsを説明する際、紹介するのがこちらの記事にあるDevOpsの定義です。 Gene KimはDevOpsの大家です。そしてそのGene KimのいうDevOpsの目的は「市場で勝てるようにすること」であり、よりシンプルな定義は「Better、Faster、Safer、Happier」です。 これを実現する文化や技術は、おおよそDevOpsと結びつきます。広い。この定義の広さがまず難しい。
そしてその理論的な根拠は様々な概念によって支えられています。
- wikipedia:リーン生産方式
- wikipedia:制約理論
- wikipedia:トヨタ生産方式
- アジャイル
- 学習する組織
- etc
また、ぼくはDevOpsを水平分業から垂直統合への移行だとも捉えています。 DevとOpsとが分離していたものを、ギュッと凝縮して、その過程で出てくる様々な無駄をなくします。
聞こえは良いです。一方でこの過程は、中の人に対して様々なことを強制します。これは、DevSecOps、BizDevOpsも同様ではないでしょうか。
- これまで見なくて良かったものを見ること
- 気にしなくて良かったものを気にすること
それを楽しい、あるいはやり甲斐として感じてくれる組織文化がないと、DevOpsはきっとハマらないだろうなとも感じています。組織文化大事。
環境構築
EponaというOSSは環境構築をするためのものですが、DevOpsと環境構築がどう関連するのでしょうか。
DevOpsでは、制約条件(ボトルネック)を見つけ、それを解消するということを繰り返していきます。 そして、その制約条件は「一般的に」以下のように変化していくとされています。
- 環境の構築
- コードのデプロイ
- テストの準備と実行
- 過度に密結合なアーキテクチャ
最初のボトルネックは、環境構築なんですよね。であれば、まずはそこをなんとかせなばなぁという課題意識の元で、Eponaを作り始めました。
AWS
本当に、AWSを学び始めるところから始まりました。
AWSに詳しい人の助けを借りながら、このサービスはこう使うんだなと試行錯誤しました。現在進行形で試行錯誤しています。AWSの中の方にもたくさん助けていただきました。
今更ですが、APIで環境が作れるというのは本当に良いものだと感じました。
課題
大小たくさんあります。話せるもの、話せないものも、たくさんです。 制度面では運開分離がありますし、技術面でも多数です。ツッコミどころもいろいろありますが、これからも少しずつ改善していきます。