HashiCorp Japan Meetupに参加してきた
はじめに
2023年4月14日にクラスメソッド日比谷オフィスにて、HashiCorpとClassmethodが合同でMeetupを開催しました。
今回そちらにお邪魔させていただいたので、拙い文章ですが参加レポートを書かせていただきます!
HashiCorpとは
この記事を読んでいる皆さんはご存知の方がほとんどだと思いますが、はじめに紹介だけさせて頂ければと思います。
HashiCorp社はIaC(Infrastructure as Code)の界隈では有名な、Terraformを開発している会社です。
ここでは細かい説明は省きますが、Terraform使ってない方はぜひ使ってみてください。
初めは難しく感じますが、コマンド数回でリソースが作られる様子は手動で構築していた身からすると、感動的です。
さらに、今回は本社からCTOのArmon Dadgarも登壇されて非常に貴重な会でした。
登壇者
テーマ | 登壇者 |
---|---|
The Rise of Platform Engineering | Armon Dadgar, HashiCorp Co-Founder & CTO |
Terraform Cloudを使ってStateファイルを楽に管理する | クラスメソッド 佐藤雅樹 |
WaypointでCDパイプラインを抽象化 | パーソルキャリア Kenny Song |
The Rise of Platform Engineering
Terraformを使うことで開発がどう変化するのかをプロダクトの説明ではなく、概念的に話をしていただいて非常に分かりやすかったです。
ざっくりとまとめてみます。
-
Devは様々なAppを開発する
- Appの稼働環境にはあまり意識しない→ビジネスとしてAppに価値がある
-
Ops(Infra)がクラウドを構築する
- 様々なプラットフォーム→これが負担になる
-
Terraformを使えば、様々なAppの稼働環境とAppの間に一枚クッションが入り、Devから見た実行環境が単一的に見えるようになるから、より開発に集中できるようになる。
-
チケット管理+手動構築していたインフラ構築を、APIベースにアプリ側から欲しいインフラをパッケージングして提供できるようになる
-
コード化することでインフラのライフサイクルもアプリのように一貫して管理できるようになる
-
さらにTerraform Vaultと組み合わせることでマシン間でのセキュリティを担保できる
-
Boundaryを活用すると、マシンと人のセキュリティも管理できる
-
Connect Consoleですべてのアプリケーションを管理することでサービスメッシュのような使い方、ネットワークの自動化ができる
-
GA前だが、今後waypointを使うことでより抽象化してプラットフォームとしてTerraformを利用できる
-
さらに複雑化するRuntimeを一元化して共通のパイプラインで、DockerやAWSリソースなど様々なリソースに対応できるようになる
-
PreProductionとして、外部CICDツールとの統合とObservabilityツールと統合することでプラットフォームとして、価値を見出すことができる
-
クラウドでアプリ開発を始める時のフェーズ1
- たくさんのアプリケーションが様々なプラットフォームに存在し、依存関係が複雑化し様々な混乱が生じる
- アプリとプラットフォームの間に、セキュリティ、コンプライアンス、コストの複雑性がある
-
フェーズ2
- 単一のプラットフォームを間に挟むことで中間のセキュリティ、コンプライアンス、コストの管理を一元化する
- プラットフォームチームとして分離する
-
フェーズ3
- プライベートクラウドについても、Terraformは利用できる(VMwareやシスコ)
- 完全にすべてのプラットフォームを一元化できる
-
ここまで来ると、問題はプラットフォームチーム
- 始めた当初はとても難しい
- まずはパイプラインを考える、TerraformCloudを使うとどのクラウドでも大丈夫
- パイプラインを整備することがプラットフォームの全体のスタートとする
- そこにVaultでセキュリティを適用する
-
HashiCorpは様々なツールを提供して、利用者でビルディングブロックのように組み合わせて利用してほしい
質問
-
HashiCorp製品のツール間の機能が明確なのは意図したものか
会社の発祥に関わる部分。10年前にオペレーションツールがひどいと感じたので、当時から0ベースで考えていた
パイプラインの要素全てにソリューションがあるか判断していた
Git、CircleCI、Jenkins、DataDogは存在していて、それは良いものだったが、デプロイツールがいまいちなかった
この部分は個別のレゴのように設計していた
2、3年かけて全体のツールを作る想定だったが、10年かけても終わらない(笑)
だから、各機能を順次提供し、必要な機能をユーザーに組み合わせて使ってもらうように提供している -
ChatGPTとかと連携は今後あるのか
可能性は模索しているものの、全てを任せるのではなく、90%正確なものを提供し、残りの部分はカスタマイズするような使い方になるのではないか
今時点でもChatGPTでそれなりのものはできる -
10年間でどう変わったか
10年前と比べると、世界中の会社の成熟度が増えた
当時明確なツールがなかったのが成長を妨げていた原因
さらにクラウドの普及が一緒に成長できたし、企業のマインドセットも向上した
また、レイヤー化されたアプローチ(VMWareにフォーカス)されていて、自動化の範囲はそこまでで、それ以上はアプリとされていた
既存のAnsible、chefなどは標準化されていなかったので、複雑性が増していた印象
アブストラクションのレイヤが上がってきたので、プラットフォームとして考えて全体を自動化できるようになった -
プラットフォームチームはどのようにバラバラな開発チームを統合するのか
簡単な答えがあるわけではない、いろんな考えがある
ビジネスに向けるのか、開発者のやりやすさによるのかの意思決定が必要
選択肢は無数にある、会社全体として何がいいのかを考えるべき
Jiraなどの管理ツールはまとめることでタスクの依存関係は担保して複雑性は軽減できる
TerraformCloudを使ってstateファイルを楽に管理する
- 管理用リソースの管理を負担を感じている
- 変更管理を簡単に管理したい
- アクセスコントロールしたい
こんな時にはterraformcloudがおすすめ
stateファイルとは、、、、ここでは省きます(笑)
このstateファイルの管理がかなり大事
-
ローカル
(会場にはいませんでした)- デフォルト設定でシンプルではある
- 故障・紛失で使用できなくなる・共有できない・競合が起きる
-
クラウドストレージサービス
(会場では一番多かったです)- ファイル共有が簡単・ファイルアクセスロックができる
- この管理用リソースの管理が悩ましい、、
-
terraformcloud
(会場では3割程度)- クラウドストレージサービスではアカウントごとに管理用リソースを作る負荷がかかる
- terraformcloudは同じアカウント内にWorkspaceとしてstateファイルの保存ができる
- 自前で管理リソースの準備が不要
- stateファイルのロック機能が標準搭載
- tfファイルにorganization/workspace情報を記載すると利用できる
- Githubなどと繋ぐこともできる
- 変更履歴をGUIで確認できる
- 変更差分も見やすい、Gitの差分みたい
- ロールバックも可能(インフラ変更は別途Runが必要、Stateのみ戻す)
- アクセス制御も簡単にできる
- Freeプランもある
WaypointでCDパイプラインを抽象化
アプリ開発がメインのキャリア
インフラに向けて言いたい
「アプリをデプロイしたいだけ、yaml,toml書きたくない、仕方なく書いている」
これがwaypointで実現できる
実行環境が多様化するに従って、様々なインプットファイル(Dockerfile,CICD定義など)が必要
様々なものをHCLで簡潔に、アプリ版Terraformのイメージ
中央集権的なサーバーが必要、ランナーをアプリをデプロイする環境ごとに準備する(Dockerでも何でもOK)
課題がいくつかあるものの、全体として使い勝手はかなり良い
- クレデンシャル情報にも簡単にアクセス可能(Terraform管理していれば)
- ECS、Lambda(OCIイメージ)、EC2(AutoScaringGroup)としてもデプロイ可能
- ALBを作成しR53へレコード作成することもできる
感想
全体として、Terraformの概念や実際のユーザーの話を聞くことができてメリット・デメリット・気をつけるべき部分を学ぶことができて、非常に良かったです。
さらになんといってもオフラインイベントならではの交流会で、様々な話をすることができたのでとてもいい時間を過ごすことができました。
興味のある方は、ぜひユーザーグループに参加してみてください!
Connpassページはこちら
Discussion