orangeitems’s diary

40代ITエンジニアが毎日何か書くブログ

新しいものが良いと言い切れるのか問題

 

インフラエンジニアという職域自体が「古い考え方」なんだと我ながら思う。今、モダンな考え方はCI/CDと呼ばれている分野だ。

CI=Continuous Integration(継続的なインテグレーション)
CD=Continuous Delivery(継続的なデリバリー)

こんな難しい言い方しなくてもさ、と思っていたが随分言葉としては一般化してしまっったので受け入れよう。つまりは、アプリケーション開発者がサクっと修正してサクっとリリースすることを、どんどんやっていけるということを意味する。

CI/CDがわざわざ叫ばれるようになった理由を考えてほしい。これまでは、改修プロジェクトみたいに案件化し、修正内容をまとめリリースするまで半年くらい平気でかかっていた。リリース時には関係者が待機し不具合がないか見つめ、問題なければ安心して帰宅する(夜通しなこともある)。これが伝統的な開発現場の姿だ。ところが、世の中の環境の変化は激しいので、半年に1度じゃ遅いんだ、と。もっとテキパキやれませんか。その答えがCI/CDである。

CI/CDが実現された世界では、こんないいことがある。

・開発者が、ローカルでの開発環境をスパっと手に入れられる。ローカル開発環境構築手順書などいらず、コマンド2つくらいで即座に開発開始が可能だ。しかも、環境のバージョン等は全て管理されているので、自分の環境では動くのに実行基盤上では動かない、のようなことが起こりにくい。

・開発者が変更したものをソースコード管理サーバー(Gitなど)に反映すると、勝手にクラウド側で連携して、実行基盤上で動くようにしてくれる。この実現は全て自動化しているため、インフラエンジニアの関与がない。

・開発者が変更した内容について、即座に実行基盤上に反映するのではなく、権限を保持している人がステージング環境で動作確認した上で本番反映させるようなことが、仕組みとして確立している。

つまりは、開発者ファーストの世界観である。開発者が変更を意図し、ソースコードを修正し、それが実行基盤上で反映されるまでに、余計な関係者が登場しない。変更をするにあたってのインフラエンジニア側との調整、のようなものがない世界だ。

初めにこの話を聞いたときに、いやいやそれでも、動かすのはデータセンターでありサーバーであり、そしてネットワークなのだからインフラはあるよね。それを抽象化しきるのは無理があるだろうと思った。

そう思ってから2年ほど経つが、AWSがいい資料を出していてくれた。

 

aws.amazon.com

デベロッパーの皆さんがアプリケーションのコードを書いた後は、そのアプリケーションをユーザーが使えるようにするためにデプロイされているかと思います。最後にデプロイした時のことを覚えてらっしゃいますか?最後のデプロイと、その前のデプロイと、比べてみて、大きく違いますか、もしくはほぼ同じでしょうか ?

もし現在、人の手で行っているデプロイがあれば、それを自動化するタスクの小さな一歩を踏んでみませんか。

デプロイ全体を自動化しようとすると、そのタスクはとてつもなく大変に感じられるかもしれません。しかし、一度に全て自動化するのではなく、小さなタスクを一つ一つ自動化のパイプラインに当てはめていけば、最終的には全体の自動化が可能となります。

今回の記事では次の 3 つのポイントから、デプロイの自動化でご利用いただける AWS のサービスについてお話しします。

 

この記事はとても端的ながら、CI/CDが乗り越えるべき課題を提示してくれている。

「3. 繰り返し可能な、インフラの変更」という段落が、次世代のインフラエンジニアが取り組むべき課題を示している。いくら「1.リリースの自動化」や「2. イメージの Build」まで実現したところで、それを動かす基盤の構築と、可用性を保ち続けているかどうかを確認(監視)、そして完全性を担保する(バックアップ)ことが必要になるのは、現行のレガシーな設計と何も変わらない。

もしCI/CDの世界に開発現場が挑むなら、この全体の基盤をうまく整え、開発者がスムーズにCI/CDできる舞台づくりをしながら、そして実行基盤がうまく動いていることを監視し障害予兆を知り、適切に対応していく役回りが必要、ということになる。

この役回り、今、以下のように呼ばれている。

SRE=Site Reliability Engineering=サイト信頼性エンジニアリング

SREエンジニアという言葉もあるが、Eとエンジニアが微妙にかぶってるな、と思った・・のは本筋ではないが・・。

SREエンジニアになるということは、CI/CDを実現するツール全体について精通しなければならず、それは多少インフラエンジニアのスキルセットを超えることとなる。パブリッククラウドのツールにしろ、OpenShiftのようなオンプレミスでも実現できる基盤にしろ・・、新しいスキルセットが必要となる。ミドルウェア自体の知識が、これまでのインフラのスキルセットにアドオンされる形で重要になる。

 

ま、それはそれで、CI/CDの世界になっても、インフラエンジニアはSREエンジニアにスライドでジョブチェンジすればいいのかなと少しほっとしながらも、さて、本当にそっちの新しい世界、良いものと言い切れるのですかい?という思いはまだ消えていない。

そんなことを言っている間に平気で10年過ぎそうな気もするし、それはそれで旧来のアーキテクチャーもみんな慣れきっていて困ってないし。

あと、CI/CDを実現するソフトウェアがどんどんバージョンアップしていくのに追随するのも大変そうだな、とか。

どうしたものだろうか、新しい世界の解像度は上がってきたが、私自身はまだ新しい世界に踏み出すべきかどうかの結論は出せていない。