インフラ、基盤の自動化が徐々に必須レベルに近い感じになってきていますので、下記の様な方に向けてAWS自動化の心得を書きます。
①AWS利用しているが、自動化やIaCの知識はない
②システムの自動化を頼まれたがちゃんと運用できるのか不安
③AWS運用を効率化したい
※①、②は2年前の私の心境。今はAWSを効率よく運用できていると感じてます
まず言っておきたいですが、自動化(IaC)は便利です。
AWSで初めて自動化担当となった方の不安を低減できれば良いなと思います。
なぜ自動化するのかという点については下記も参考にしてみてください。
(クラウドのベストプラクティス集に自動化必須の旨が記載されています)
AWS Well-Architected 5本の柱を要約する(運用上の優秀性)
AWSをIaCで構築する際の心得3つ
①Bestは難しい、Betterを目指すので良い
エンジニアとして完璧なものを作りたいというマインドは大事ですが、IaCの手法はまだ発展途上です。完璧を目指し過ぎて納期に遅れることが無いようにしましょう。
②まずはIaCをやってみる
部分的(例えばサービス影響のない箇所など)にIaCを導入していくのもありです。
とりあえず自分一人で始めてみるくらいの気持ちでも大丈夫です。
(そしてノウハウたまったらチームに公開)
上手く管理できなかったら途中でリスクなく止めることもできます。
③設計書なくせるかどうかは微妙
IaCのメリットで設計書を無くせるというものがありますが、これは微妙です。
設計書と実機の値が乖離するという問題はどこでも起きがちですので、
当時私はこのメリットが大きいなと思っていました。
しかしプロジェクトメンバー全員がコードを読めるわけではないこと、
一覧性(サーバ何台あるかなどがすぐにわからない)にかける部分もあります。
※パラメータからコードと設計書を自動作成する仕組みがあることが
理想かなと思います。
※始め方:CDK(Python)で始める
AWSをIaCで管理するツールは多数(CloudFormation、CDK、Terraformなど)あります。
それぞれ特徴がありますが、まずやってみるというところではCDK(Python)で良いのではないかと思っています。
WindowsにCDK環境構築する手順(Python)
CDK(Python)の良い所はPythonの勉強も兼ねられるというところです。
※各ツールの比較をしたい場合は「Terraform CDK」などでググってみると機能比較を纏めているサイトが見つかりました。
最後に
運用工数削減のためにもどんどん自動化(IaC)が広まってほしいと思います。
私はインフラエンジニアなので、シェル以外のプログラミングをほぼやってこなかったのですが、時間忘れて作業してしまうほどにPythonは楽しいです。
周りの人に自動化肯定派が多かったので、運が良かったかもしれません。(人に恵まれてないと中々踏み出せないかも)