横河電機のDevOps Journey なぜOSS版からTerraform Enterpriseへ移行したのか
続いて、横河電機 開発DX推進部長の藤原匠氏が、同社のDevOps推進の過程でTerraformを導入した経緯を紹介した。横河電機はグローバル展開が進んでいる製造業で、主に制御、計測、情報に関する事業を展開。顧客は何らかの自社製品を工場で生産している企業が多く、工場にあるセンサー類からのデータを統合した制御システムなどを提供している。
同社では早い段階から開発環境の効率化に取り組んでおり、藤原氏は「DevOps Journey」として経緯を紹介した。2013年、製品セットアップをChefで自動化し始めたことから始まる。同社の製品はインストール後に様々な設定をする必要があり、設定をJSONで記述してChefに読み込ませるようにした。翌年の2014年にHashiCorpのVagrantと組み合わせることで、検証環境を自動的に構築できるようになり、社内で普及していった。
2016年からはAWSの利用を開始し、翌年にはビルドのためのシステムをクラウドへと移行した。ここでIaC(Infrastructure as Code)を実践するためにOSS版のTerraformを使い始めたという。当時はAWSのみだったので、「AWS CloudFormation」も選択肢にあった。あえてOSS版 Terraformを選択した理由として藤原氏は「将来を考えると、マルチクラウドに対応したほうがいいだろうとの結論に至ったため」と明かす。2019年からはMicrosoft Azureを使用することになり、マルチクラウドを想定した選択は「目論見通り」と藤原氏は言う。
とはいえ、OSS版Terraformでは課題も見えてきた。「機能的には特に問題ないものの」と断りを入れつつ、藤原氏は当時の課題を3点挙げた。まずはチームで利用する場合の実行環境の構築や管理だ。GitHubでプルリクエストやレビューをするなかで、OSS版では手間がかかってしまっていた。次にサポートについて、Terraformは利用者が多いため、課題やトラブルが起きてもWebで検索すればおおよそ解決策は見い出せた。しかし「企業での利用を考えると、有償でもサポートが欲しかった」と藤原氏は述べる。最後に挙げたのは、既存コード再利用時の不具合だ。何らかのソースを流用すると(差分をとれるコマンドはあったものの)意図しない設定が混入する可能性があった。
対策を模索していたところ商用版のTerraform Cloudを発見し、HashiCorpにコンタクトして導入を開始。導入効果として藤原氏は4点を挙げた。1点目はマネージドサービスで実行環境の構築や管理の工数が削減できたこと。「本家本元の開発をしているHashiCorpが管理するSaaSサービスなので安心感がありますし、構築や管理でやらなくてはならないことがずいぶん減りました」と藤原氏は言う。
2点目はGitHubとの連携だ。Terraform Cloudの標準機能でGitHub連携があるため、プルリクエストをトリガーに自動でTerraformを実行できる。「ささっと設定して始められるのは、使う立場として非常に便利。OSS版で創意工夫していた時と比べて工数がかなり削減できて、お支払いしている料金よりもかなり得をしているのでは」と藤原氏は満足げだ。
3点目は公式のサポートで得られる安心感、そして4点目はコストとセキュリティの検証である。クラウドサービスの設定適用前にコストを検証できるため、不必要な利用料を防ぎコストの最適化に役立てられる。
ここまで進めた結果、次に浮上したのがリモートワークにおける育成の課題だ。藤原氏は「Terraformがある種の言語のようにコーディングが必要なので、(コロナ禍で)リモートワークとなりコーディングできる人を増やすところが難しいと感じていました」と話す。そうしたなか「モブプロ(モブプログラミング)」スタイル(考える人とタイピングする人など手分けして複数人でコーディングすること)を通じて、Terraform未経験者のスキル習得につなげられたという。
あらためてIaCの価値として、藤原氏は次のように述べる。「IaCがインフラ設定をコード化するため、ソフトウェア開発と同じアプローチがとれます。また作業結果がコードとして残り、再現性が高いため今後の資産とすることができます。これまでの活動を通じて、IaCに投資していくことは組織として重要ではないかと私は考えています」
さらなる活用に向けて藤原氏は意欲的だ。「当初Terraform Cloudを導入したころと比べると、かなり機能が充実してきています。継続的に改善されていくところがSaaSの利点であり、Terraform Cloudはそれを体現していると思います。一方、我々がTerraform Cloudの各種機能を有効に活用できているかと問われれば『まだまだ』ですので、ガードレールのようにセキュリティを担保できるようなポリシーを充実させていきたいです。またSelf-hosted agentにも興味があるので今後試してみたいと思います」と熱く語る。
なおSelf-hosted Agentとは、オンプレミス環境をTerraform Cloudとつなげてプロビジョニングする機能だ。クラウド環境の自動化はTerraform Cloudで実現できているものの、社内でまだ手が届いていないインフラにも自動化を進めていくことが期待できる。またシークレットや暗号鍵などの管理に使えるVaultとの連携に挑戦する予定だそうだ。
さらに各種Terraformプロバイダの利用や開発も構想にある。開発環境では様々なSaaSを利用している。たとえば定番のSlackやGitHub、オンラインホワイトボードのMiroなど。これらの管理は手動で行うことが多いものの、APIがあればコードで管理が可能となる。「できるだけコードで管理されている世界を目指したい」と藤原氏は話し、同時に「自社製品をお客様に迅速に届けられるようにプロバイダを自作できれば」と夢を語る。
最後にTerraform導入を検討する現場に向けて、藤原氏はエールを込めて3点のポイントを語った。1点目はスモールスタートが可能であることだ。横河電機のようにOSS版から始めてもいいし、Terraform Cloudには無料プランもある。「まずは試してみることをお勧めします」と藤原氏。
2点目はマルチクラウドサポート。先述したように、Terraformであればクラウドを超えて活用できるのがメリットとなる。現状あるいは今後マルチクラウドでの運用があるなら、複数のクラウドサービスプロバイダを横串で管理できるメリットや拡張性には着目しておいたほうがいいだろう。
3点目は組織内IaC標準ツールとしての活用。横河電機では個人レベルで開始して、徐々にスケールさせて組織内IaC標準ツールへと定着させてきた。藤原氏は「スケール可能ないいツールですので、こうしたものを活用して皆さまの業務をより効率的に、より無駄なく進めていただければいいかなと思います」と述べてセッションを締めた。