Upgrade to Pro — share decks privately, control downloads, hide ads and more …

自動化の第一歩 -インフラ環境構築の自動化について-

自動化の第一歩 -インフラ環境構築の自動化について-

2025/05/10(土)に開催された「IT・自動化ネタ ライトニングトーク|豊橋会場&オンライン開催」における私の発表「自動化の第一歩 -インフラ環境構築の自動化について-」の発表資料です。 #RPALT

イベントページURL : https://rpacommunity.connpass.com/event/351411/

Avatar for Makky12

Makky12

May 11, 2025
Tweet

More Decks by Makky12

Other Decks in Technology

Transcript

  1. 1 KDDI Agile Development Center Corporation 自己紹介 ◼ 氏名:鈴木 正樹

    ◼ 所属:KDDIアジャイル開発センター(KAG) 名古屋オフィス ◼ 役割:クラウドアーキテクト & バックエンドエンジニア AWS(特にサーバーレスやInfrastructure as Code)が大好きで、主にそれらに関する 情報発信を積極的に行っています。 好きなサービスはAWS LambdaとAWS CDK。主にJAWS-UG名古屋 & JAWS-UG CDK支部で活動。 ◼ Certification: ◼ AWS Solution Architect Associate(2023) ◼ AWS Community Builder(2023~) ◼ : @makky12(SUZUKI Masaki@クラウドエンジニア) ◼ Blog:https://makky12.hatenablog.com/
  2. 2 KDDI Agile Development Center Corporation 本日のアジェンダ • はじめに •

    IaC(Infrastructure as Code)について • CI/CD(Continuous Integration/Continuous Delivery/Deployment)について • まとめ & 告知
  3. 3 KDDI Agile Development Center Corporation 注意事項 • 発表資料・発言内容は、すべて個人の見解・知見になります ◦

    所属企業・団体・コミュニティなどの公式見解とは一切関係ありません • 本日紹介するクラウド・サービス・ツールの正式な情報は、それぞれの公式サイトをご確認 ください • クラウドについては、AWSの比重が高くなっております。ご理解下さい ◦ 単に「私が一番知っているクラウドがAWS」というだけです
  4. 5 KDDI Agile Development Center Corporation 「自動化」のはじめの一歩:インフラ環境構築自動化のすすめ • 今日のイベントで「自分も自動化をやってみたい」と思った人も多いはず •

    ただ「何から始めたらいいか分からない」というのも事実… ◦ アプリの「何を」「どうすれば」自動化できるかがわからない…という人もいると思います ↓ • 「自動化の第一歩」におすすめなのが「インフラ環境構築の自動化」!(※) ※ 以下「インフラ環境構築の自動化」を口頭では「インフラ自動化」と略します
  5. 6 KDDI Agile Development Center Corporation なぜ「インフラ環境構築の自動化」がおすすめなのか • そもそも、インフラ環境を構築しないとアプリは動かない ◦

    「アプリの自動化」はまずアプリが動く環境を作ってからの話 • 「インフラ環境の構築」はとても面倒 ◦ 例えばクラウドの場合、マネジメントコンソールにログインして1つ1つ手作業で作成しなければならない • 手順書などのマニュアルを作成して実施 → 作業者のスキルに依存/ヒューマンエラーの要因に… ◦ 最近はアプリのインフラ環境も複雑化し、手作業で行うのには限界がある ↓ • 「インフラ環境構築の自動化」は「省力化/工数削減」の第一歩
  6. 7 KDDI Agile Development Center Corporation 「インフラ環境構築の自動化」で重要な手法 • IaC(Infrastructure as

    Code) ◦ インフラ環境の構成や設定をコード(≒定義ファイル)にて定義する手法 ◦ 各種クラウドでもIaCに対応したサービス(※)や各種ツールが存在する • CI/CD(Continuous Integration/Continuous Delivery/Deployment) ◦ コードの内容をリポジトリ(GitHubなど)に統合し、ビルドやテスト、デプロイを自動を行う手法 ◦ もともとはソフトウェア(≒アプリ)開発プロセスの手法だが、インフラ構築でも適用可能 • これらの手法を使って「インフラ環境構築の自動化」を実現する ※:AWSの「CloudFormation」、Azureの「Development Environment」など
  7. 9 KDDI Agile Development Center Corporation IaC(Infrastructure as Code)の特徴 インフラ環境の構成や設定をコード(≒定義ファイル)にて定義する手法

    • インフラ構成・設定をコード(=定義ファイル)で定義する ◦ アプリのソースコードを記載する感覚で、インフラ環境を構築できる ◦ (各種クラウドのIaCサービスは)YAML/JSONにも対応しており、プログラミング言語の習得は不要 • アプリエンジニアでなくても可能 • 「同じコードからは、誰が何回やっても同じ結果になる」という性質がある(≒冪等性) ◦ デプロイ時に作業者のスキルに依存せず、ヒューマンエラーも発生しにくい ◦ これがIaCの大きな特徴&メリット(もちろん、そうなるようにうまく運用することも必要) ↓ • IaCにより「インフラ環境構築の自動化」の他「アプリとインフラの分離」も実現可能
  8. 10 KDDI Agile Development Center Corporation IaC(Infrastructure as Code)でよく使われるツール IaCでよく使われるツール

    • Terraform ◦ インフラ定義をHCL(Hashicorp Configuration Language)と呼ばれる専用言語で記載 ◦ 各種クラウド(AWS, Azure, GCPなど)に対応しているので、様々なクラウド環境で使用可能 • AWS CDK(AWS Cloud Development Kit) ◦ AWSの構成を、プログラミング言語にて定義可能(TypeScript, Pythonなど) ◦ AWSのインフラ環境を作成する際に便利(特にアプリエンジニアにとって) • Pulumi ◦ 各種クラウドの構成を、プログラミング言語にて定義可能(TypeScript, Pythonなど) ◦ アプリエンジニアが各種クラウドの環境を構築する際に便利かも • Serverless Framework ◦ 各種クラウド(メインはAWS)で、サーバーレスなインフラ環境を構築するのに便利 ◦ ver4.xから一定規模以上の企業での利用が有料になったため、最近はちょっと下火かも…(個人利用なら無料)
  9. 12 KDDI Agile Development Center Corporation CI/CDの特徴 CI/CD:Continuous Integration/Continuous Delivery/Deployment

    • CI:継続的インテグレーション(Continuous Integration) ◦ 統合リポジトリでコードを管理し、そこでコードのビルドやテストを行う ◦ 統合リポジトリでコードのテストをもれなく行えるので、品質面でも信頼ができる状態になる • 実施するテストの内容は確認が必要 • CD:継続的デリバリー (Continuous Deploy/Delivery) ◦ コードの内容をベースに、実際にインフラ環境を各種クラウドに構築する(=環境構築を自動化できる) ◦ CI後のコードは統合リポジトリに取り込まれるので「最新の構成」をチームで共有できる ↓ • 「IaCコードをCIでテスト」→「CDでインフラ環境を自動で構築」という流れができる
  10. 13 KDDI Agile Development Center Corporation CI/CDでよく使われるツール • GitHub ◦

    ソースコードの統合リポジトリ ◦ 「GitHub Actions」という機能を使って、テスト・ビルドやデプロイも可能 ◦ これ1つでソースコード管理からCI/CDのライフサイクルを実行することが可能 • CircleCI ◦ クラウドベースのSaaS型CI/CDサービスで、CI/CDライフサイクルを実行可能 ◦ リポジトリの機能はないが、GitHubと連携可能(=ソースコード管理とCI/CDの分離) • AWS CodePipeline ◦ AWSの継続的デリバリーサービス(※1) ◦ こちらもGitHubと連携してCI/CDを実行することが可能(※2) ※1:正式にはCodeBuild/CodeDeployなど各種Codeサービスを組み合わせてCI/CDを構築するサービスです ※2:リポジトリ機能については「CodeCommit」というサービスがありますが、現在新規利用はできません
  11. 15 KDDI Agile Development Center Corporation まとめ 「自動化の第一歩」におすすめなのが「インフラ環境構築の自動化」 ◦ そもそも、インフラ環境を構築しないとアプリは動かない

    ◦ インフラ環境構築はとても面倒 「インフラ環境構築の自動化」 にはIaCやCI/CDといった手法を導入する ◦ インフラ環境の定義や設定は、IaCにてコード(ファイル)ベースで実施する ◦ CI/CDを利用して、コードのビルドやテスト、および各種クラウドへのインフラ環境構築を自動化する IaCやCI/CDには各種ツールがあるので、それらを利用する ◦ 各ツールともにいろいろな特徴があるので、プロジェクト/チームに適したものを利用する ◦ 例)マルチクラウド対応可否/プログラミング言語での記述…etc.
  12. 札幌オフィス SAPPORO OFFICE 秋田オフィス AKITA OFFICE 高崎オフィス TAKASAKI OFFICE 金沢オフィス

    KANAZAWA OFFICE 舞鶴オフィス MAIZURU OFFICE 広島オフィス HIROSHIMA OFFICE 福岡オフィス FUKUOKA OFFICE 那覇オフィス NAHA OFFICE 仙台オフィス SENDAI OFFICE 東京本社 TOKYO MAIN OFFICE 三島オフィス MISHIMA OFFICE 名古屋オフィス NAGOYA OFFICE 大阪オフィス OSAKA OFFICE