433 Views
October 22, 24
スライド概要
ソフトウェアエンジニア
terraformのすゝめ Takuma Kobayashi, Finatext © 2024 Finatext Holdings Ltd.
自己紹介 ● 小林拓磨(X: @takuma5884rbb) ● 2023 (株)Finatext 入社 ● ソフトウェア・AWSエンジニア ○ Go・AWSを用いた証券取引サービスの開発・運用 ○ Terraformを用いたIaC ○ 新卒エンジニア採用 ● 2024 Japan AWS Jr. Champions ● 趣味 ○ 料理 ○ ランニング © 2024 Finatext Holdings Ltd. 1
Speaker’s background ● DevOpsエンジニア ● メインのスキルはバックエンド ○ 要するにアプリケーション寄り ● AWS学習のかなり早い段階でIaCに触れていました © 2024 Finatext Holdings Ltd. 2
https://www.terraform.io/ © 2024 Finatext Holdings Ltd. 3
よく言われるIaCのメリット インフラ構築の手順・目的・ ソフトウェア開発と同様の 背景をドキュメント化できる サイクルでレビュー・適用できる © 2024 Finatext Holdings Ltd. 設定の適用が冪等 4
よく言われるIaCのメリット、その中でも... インフラ構築の手順・目的・ ソフトウェア開発と同様の 背景をドキュメント化できる サイクルでレビュー・適用できる © 2024 Finatext Holdings Ltd. 設定の適用が冪等 5
存在して欲しいリソースとそのプロパティを 漏れなく記すドキュメント © 2024 Finatext Holdings Ltd. 6
リソースのドキュメントがあると何が嬉しいのか? 1. 設定が文字で残る(grepできる) 2. リソースの依存関係を明示的に理解できる © 2024 Finatext Holdings Ltd. 7
Hashicorp Configuration Language(HCL) ● インフラの設定を記述するのに適したデータ記述言語の一種 ● 関数型っぽさもある “HCL is a toolkit for creating structured configuration languages that are both human- and machine-friendly, for use with command-line tools.” (https://github.com/hashicorp/hcl) © 2024 Finatext Holdings Ltd. 8
Terraformの記述例(resource block) © 2024 Finatext Holdings Ltd. 9
HCLのSyntax <BLOCK TYPE> "<BLOCK LABEL>" "<BLOCK LABEL>" { # Block body <IDENTIFIER> = <EXPRESSION> # Argument } プロパティを一つずつ埋めていく シンプルな記法 © 2024 Finatext Holdings Ltd. 10
設定が文字で残る(grepできる)とよかった例 ● S3のランサムウェア対策(AWS Backup / S3 Object Lock / SCPsのDeleteObject) ○ 洗い出しにIaCが重宝した © 2024 Finatext Holdings Ltd. 11
リソースのドキュメントがあると何が嬉しいのか?(再) 1. 設定が文字で残る(grepできる) 2. リソースの依存関係を明示的に理解できる © 2024 Finatext Holdings Ltd. 12
マネジメントコンソール使ってますか? © 2024 Finatext Holdings Ltd. 13
マネコンは結構よしなにやってくれている ● Lambdaにトリガーを設定したときのpermission ● SESのドメイン認証 © 2024 Finatext Holdings Ltd. 14
AWSの基本はAPI action API © 2024 Finatext Holdings Ltd. 15
AWSの基本はAPI リソース×アクション(CRUD)の組に対応した APIがあり、開発者はそれらを利用して リソースを操作する action API © 2024 Finatext Holdings Ltd. 16
コンソールの裏側 action API マネジメント コンソール API © 2024 Finatext Holdings Ltd. 17
コンソールの裏側 必要なリソースをまとめて作成するような アクションを行っている action API マネジメント コンソール API © 2024 Finatext Holdings Ltd. 18
TerraformがAPIを叩いている resource block action API © 2024 Finatext Holdings Ltd. 19
TerraformがAPIを叩いている resource block action API 必要なリソースを網羅的に記述することが必要 © 2024 Finatext Holdings Ltd. 20
必要なリソースを網羅的に記述するために、 AWSに対する広い理解が必要 IaCというツールの枠を超え、AWS自体の理解を深める手段としての活用もできる © 2024 Finatext Holdings Ltd. 21
まとめ データ記述言語を用いたIaC(=Terraform)のメリット 1. Terraformはリソースの状態を実直に記述する 2. リソースのプロパティがコードで表現されていると、一覧性に長ける 3. 暗黙的なリソースの依存関係を意識したリソース管理ができる © 2024 Finatext Holdings Ltd. 22