以前勉強会で発表した資料が時が経って情報が古くなってきたのでアップデートしてほしいという要望があったので、2017年版にアップデートしました。
SlideShare に投稿したものを文字起こしして掲載します。
クラウドを使う企業が増えてきたことで 発生してきたこと
- クラウドは簡単!
- プログラマがインフラもできるんじゃないか?
- インフラエンジニアを雇うのは人件費の無駄・・・
- 流行の「DevOps」や「SRE」ってプログラムでやるからプログラマ領域じゃないの?
- 結果:インフラエンジニア不要論!!
プログラマはここを嫌がる
- サーバーを触るのはイヤ
- 「デプロイするだけ」まで作ってほしい。
- コマンド一発デプロイがいい。
- ネットワーク?ナニソレ?
- インフラセキュリティーって何のこと?
- アクセス制御?ナニソレ?
プログラマにインフラスキルを 「尚可」で求めると失敗する理由
- プログラマ数人でプロダクト開発をクラウドを使って始めた。
- 「DevOps」や「SRE」を志向したら、インフラの学習コストが甚大!
- プログラマ不足になり、インフラで割かれた分の補充に「新しいプログラマを探そうとする」という愚行。(同じことを繰り返す)
- アクセス集中のスケール計算、セキュリティー制御の計算が甘く、メンテナンスを繰り返して信用を失う。
- インフラエンジニアを味方にしたほうがよい!
- インフラとプログラマは世界が違うんです!
その結果・・・
- みんなが不幸になってしまう!
- 誰も幸せになれない環境に・・・
インフラエンジニアは プロジェクトの加速装置となり得る
- Webサイトを運営するための、ドメイン制御(DNS)や証明書設置などは、 インフラエンジニアにお任せ!
- アクセス制御(セキュリティ)は、インフラエンジニアにお任せ!
- PaaS領域、ミドルウエア・開発フレームワークより下のレイヤーの設計・設定は、スケール設計とその運用戦略込みで、インフラエンジニ アにお任せ!
- テストを通した自動デプロイ戦略も相談可能。
- デプロイを楽にする戦略を一緒に練ろう!
- プログラムやデバッグ(テストコード含む)以外 の仕事は、インフラエンジニアに振ってもよい!
自動運用のキーワード 「DevOps」「SRE(Site Reliability Engineering)」
- DevOpsとは、開発(Development)と運用(Operations)が協力し、ビジネス要求に対して、より柔軟に、スピーディに対応できるシステムを作り上げるためのプラクティスのこと。(@IT より)
- 具体的には、デプロイ戦略や自動運用までシステムの一部と考え、開発段階からデプロイから運用までの流れをすべて組み込んでしまうことを言う。
- 「Chef」や「Puppet」、「Docker」といったツールが中心としてとらえられることがあるが、それだけではなく、クラウドであらかじめ準備されている仕組みを使えば十分実現可能なこともある。
- 「DevOps」から「SRE」時代になったことにより、やっていることは ほぼ一緒であるが、クラウドにあらかじめ組み込まれた仕組みをうまく使う傾向が出始めた。
プロジェクトを加速させるための インフラエンジニアとのイイ関係
- ミドルウエア、開発言語・フレームワークをどれを使うかを洗い出してくれれば、あとはうまく動くようにインフラエンジニアが設計してくれる。
- 互換があって動けばいいと割り切ることができれば、クラウドにあらかじめ用意された環境をそのまま利用できることも多く、負荷が軽減される。
- 既にあるサービスをパズルのように組み合わせ、独自構築は避けよう。
- スクリプトやクラウドに準備されたデプロイの仕組みをうまく利用し、簡単にデプロイ運用ができる環境を作ろう。
- イイ関係か築けるところは開発が加速する!
まとめ
- プログラマ領域とインフラ領域は別物であると認識し、無理にプログラマでインフラを作ろうとしない。
- プログラマにインフラスキルを「尚可」で求めない。
- 社内開発環境から、パブリックインフラまでをしっかりつないで設計してくれるエンジニアを探そう。
- 言語環境・フレームワーク整備までインフラエンジニアに任せ、プログラマはデプロイ手法だけ受け取って、プログラム開発に集中しよう!
- 社内環境の改善・開発の加速!