こんにちは、技術本部SRE部ZOZO-SREブロックの鈴木です。普段はSREエンジニアとしてZOZOTOWNの裏で動いているオンプレミスとクラウドの構築・運用・保守に携わっています。
ZOZOTOWNのインフラは大半がIaC化されていますが昔からあるリソースに関してはその限りではありません。弊社で導入しているAkamaiもIaC化されていないリソースの1つでしたが、頻繁な更新などによって重複した設定が入っている箇所がある等、長く運用しているとどうしても陥ってしまう沼にハマっていました。本記事ではこの沼から抜け出そうと部分的にもIaC化を導入して問題を解決したことを、Akamaiのネットワークリストを例に紹介します。同様の問題を抱えていた方の参考になれば幸いです。
はじめに
まずはじめに、本記事で登場するキーワードであるInfrastructure as Code(以下IaC)について簡単に説明します。
IaCとは、インフラ構成をコード化して、コードの内容を自動でプロビジョニングすることです。コード化することによってソフトウェア開発における便利なツールが使えるようになり、様々な恩恵を受けられます。
ZOZOTOWNにおいては大半のリソースがIaCによって管理されているものの、昔からあるリソース、そもそもIaC化にかかるコストが効果に見合わないものはIaC化されないという柔軟な運用になっています。弊社では数多くのSaaSを導入しており、今回テーマとなるAkamaiも費用対効果が見合わないものとして導入当時にIaC化されていなかったリソースです。
Akamaiは弊社で利用しているCDNサービスであり、様々な用途で利用されています。以下のブログでもAkamaiを利用した事例について書かれています。
Akamaiをいろいろなところで使うに従って設定情報は増えていきます。Akamaiの設定のうち、頻繁に変更するものとして「ネットワークリスト」があります。ネットワークリストはIPおよびGEOを単位としたリストを作り、ネットワークファイアウォールのブロック制御等を行うことができます。弊社では特定のIPのみ通信を通したいときなど、用意しておいたネットワークリストにIPを追加することで通信を許可できるように設定しています。
課題
Akamaiをしばらく運用するに従い、いくつか課題点がでてきました。
ネットワークリストの更新はAkamaiのコンソールから行っていました。ネットワークリストの更新が頻繁になるにつれ、このIPはなんのために追加したものなのか、いつ誰が追加したものなのかを追うのが困難になっていました。Akamaiのコンソール上にも設定変更の履歴が表示されるものの変更内容の詳細までは表示されません。それぞれのネットワークリストにはコメントをつけられるものの文字数制限があり、必要な情報すべてを書けませんでした。リストの内容の検索ができなかったため、内容の重複するようなリストがいくつも作成されるなど、次第に積み重ねによる使いにくさがどんどん増えていきました。
「設定の内容が可視化できていない」ことが私達の課題点でした。
これらの解決策としてパラメータシートのような資料を作り、設定を記録していくことが考えられますがメンテナンス性に難があります。そこで私達はAkamaiの設定情報をIaC化することで解決を図りました。今回のIaC化はひとまずネットワークリストのみに対象を絞ります。目標としては「ネットワークリストの設定変更の履歴を追える」「CI/CDを用いたデプロイが可能」の状態を目指し、AkamaiのすべてをIaCを目指すところまでは行わないことに決めました。
AkamaiのIaC化
AkamaiをIaC化する上で使えるツールとしては「Akamai API」「Akamai CLI」「Terraform」の3つがあります。
Akamai APIを用いることでAkamaiの提供する機能をAPIで操作できます。APIを直接利用して操作するため、コーディングが必要となりますが自由度が高く複雑なインフラも簡単に構築できます。
Akamai CLIはAkamaiを操作するためのCLIツールです。GUIを使わずにAkamaiを操作でき、工夫次第でIaC化などにも有用なツールです。
Terraformは代表的なIaCツールであり、Akamai社がTerraformのProviderを提供しているため、ほとんどの設定がTerraform上で管理可能です。代表的なIaCツールであり、IaC化したコードのデプロイ等の機能だけでなく、インポートや実際の環境との差分検知など便利な機能が多数あります。
Akamai CLIを用いてTerraformの設定ファイルを生成も可能です。初期構築の際など複雑な設定をする際にはこちらの機能を利用するとお手軽にIaC化を進められます。弊社でもWEARチームがAkamai CLIからTerraformの設定ファイルを作成して適用する流れをProperty Managerの設定の際に利用しています。
それぞれのツールについて簡単に比較したものが以下になります。
観点 Akamai API Akamai CLI Terraform
柔軟な設定 ◎ ◎ ○
既存設定のインポート △ △ ◎
導入スピード △ △ ○
各種機能が揃っており、代表的なIaCツールでありメンバーも特別な学習をすることなく利用できる点に魅力を感じ、今回はTerraformを用いてIaC化を行いました。特にすでにあるAkamaiの設定を手軽にインポートできる機能はAkamaiをすでに長く利用していた私達の求めていたものでした。
続きはこちら