Terraform の検索結果:
…合、quipper/terraform リポジトリの label 上限に引っかかるためです - また、あまりサービス名が長いと書きづらく、発音しにくいため、略称を使われるなど、1 のように無理なく認知されることが難しくなります。また略称を使われることで Slack や GitHub 等でのググラビリティの低下も懸念されます - 略称は避けるべきですが、やむを得ずどうしても略称が必要ならば、公式に略称を提供して、その使用を徹底してください。 今後追加が予定されているもの 数年前…
…、各コンポーネントはTerraform の定義をコピーしていくだけなので、そこまで見通しが悪くなることもありませんでした。 ただ、エラー時に各所に散らばったエラーを漁って、周辺時刻での状況を把握する作業はまだ複数のステップが必要な状況で、このあたりは改善の余地がありそうです。 メッセージング CQRS ではメッセージングは必須ではありませんが、コマンドの発行やイベントの更新を処理するためにメッセージングが使用されることもよくあります。 その場合には、メッセージのエラーや重複を…
…響範囲を抑えられる Terraform などでジョブの構成を管理し、Pull Request で変更できる 解決策 Step Functions の実現性検証 スタディサプリでは主に AWS を利用しているため、フルマネージドなワークフローエンジンである Step Functions に白羽の矢が立ちました。 Amazon Aurora のリストア処理は AWS API で完結するため、まずは Step Functions で Amazon Aurora のリストア処理を試み…
…nsuke です。 Terraform Modules を Monorepo で versioning して管理するようにした話を紹介します。 先日紹介したとおり、弊プロダクトではインフラを Terraform の Monorepo で管理しており、 CI は GitHub Actions + tfaction で実行しています。 blog.studysapuri.jp 弊プロダクトの Terraform Modules の管理手法は、この 2.5 年の間に 2 回ほど変化が…
…nsuke です。 Terraform Monorepo に対する Renovate の大量の Pull Request を処理するための技術について紹介します。 背景 過去ブログで何度か紹介しているように、弊プロダクトでは Terraform の Monorepo を管理しています。 先日、 CI を AWS CodeBuild から GitHub Actions + tfaction に移行しました。 blog.studysapuri.jp working directo…
…ce で行えるよう Terraform monorepo platform を進化させてきました。 Service の Monitoring、 Incident response も各サービスチームがオーナーシップを持って実施できており、SRE チームがいないとできないことはかなり減ってきたように思えます。 事業としては利用ユーザを獲得しながらも、パフォーマンスなどユーザー体験を損ねないためのパフォーマンスの維持・改善だけでなく、中学講座ベーシックコースをフルリニューアルした…
…nsuke です。 Terraform の CI を AWS CodeBuild (以下 CodeBuild) から GitHub Actions + tfaction に移行した話を紹介します。 これまでの Terraform Workflow (CodeBuild) 弊プロダクトの Terraform の CI に関しては過去の記事でも何度か紹介していますが、 元々 CodeBuild 上で CI を実行していました。 かつては CircleCI 上で実行していましたが、…
…n Set などは Terraform で管理するようにしました。 ssosync による Google Workspace と AWS SSO の同期 SSO User, Group は ssosync という AWS 公式のツールを使って Google Worksapce を同期するようにしました。 ssosync を実行するために Google Cloud Project (以下 GCP) の Service Account を作ったりする手順に関しては ssosync…
… ノードグループ (Terraform) Gatling を実行するための GitHub Actions Runner (Kubernetes manifests) データベースなどの AWS リソース (Terraform) 本番に近いデータが必要な場合、個人情報をマスク済みのスナップショットを利用できます *1 試験対象のアプリケーション アプリケーションリポジトリに Pull Request を作成するとプレビュー環境がデプロイされます 専用のノードグループに配置される…
…使い分けています。 Terraform のリソースgoogle_cloudbuild_trigger のgithub.pull_request と github.push にあたる設定を使い分けることで、PR が出されたときとマージされたときを区別しています。 またcloudbuil.yaml のdeploy コマンドで指定する名前を ${_APP_NAME}-${_ENV}${_PR_NUMBER} として、「pull リクエスト トリガーに使用する GitHub 固有のデ…
…けのイベントです。 Terraform や Vault など、 HashiCorp の様々なプロダクトに関して自由に登壇し、ナレッジを共有するイベントです。 2021年9月30日にオンラインで開催されました。 資料や動画が下記で公開されているので、ぜひご覧ください。 https://events.hashicorp.com/hashitalksjapan HashiTalks: Japan 発表資料 - Speaker Slides - HashiCorp User Grou…
…を実行する仕組みを、Terraform module を利用してコードとして定義できるようなものなどを検討しています AWS の複数アカウント化、Organization 化、SSO 対応 組織やプロダクトが大きくなっていく中で、セキュリティの重要性は上がり続けています。 現状は本番環境とそれ以外が VPC では分離されているものの、AWS アカウントは単一のものとなってしまっています セキュリティのため、それぞれの環境に対してアクセスできる人だったり、アクセスする方法につい…
… そうならないよう、Terraform によるセルフサービスのためのプラットフォームを提供しており、開発チームのメンバーはデータベースだけでなくキャッシュサーバやメッセージキューなど、あらゆるクラウドリソースを自分たちで設計し、調達することができるようになっています。 また、アプリケーションについても同様に Kubernetes を用いたセルフサービスのためのプラットフォームを提供しており、新しいアプリケーションの構築も、それらの継続的なデプロイも、SRE チームの手を借りる…
…nsuke です。 Terraform Monorepo の CI にtfmigrate を導入した話を紹介します。 なお、弊社の Terraform Monorepo に関しては過去の記事も参照してください。 Terraform リポジトリをマージして CI/CD を改善した話 - スタディサプリ Product Team Blog Pull Request の terraform plan の実行結果を S3 に保存して安全に apply - スタディサプリ Produc…
…を miam から Terraform に移行した話を紹介します。 なお、 AWS や miam に限らず「Terraform で管理されていない大量のリソースを Terraform で管理する」ことを検討している方には参考になる内容かと思います。 背景 本ブログでも何度か紹介したとおり、弊社では AWS のリソースを Terraform で管理しています。 しかし、実は IAM に関しては miam という別のツールで主に管理されていました。 miam は AWS IAM …
…のtrigger はTerraform で管理されています (一部抜粋) cloudbuild.yaml steps: # Build - name: 'gcr.io/cloud-builders/docker' args: ['build', '-t', 'gcr.io/${PROJECT_ID}/trainer:${SHORT_SHA}', '-t', 'gcr.io/${PROJECT_ID}/trainer:${_ENV}', '.'] dir: 'recommend…
…以下 GCP) を Terraform で管理するように CI/CD を整備した話を紹介します。 背景 何度か本ブログで紹介したように、弊社では Terraform を使い AWS を始めとする様々なリソースを管理しています。 quipper.hatenablog.com しかし、 GCP はあまりちゃんと管理できていないという課題がありました。 弊社のサービスはほぼすべて AWS 上で動いており、 IaC が既に整備されています。 一方で GCP も以前から使っていますが …
…、 miam から Terraform への移行を検討する際にネックだったので、自動化することにしました。 仕組み IAM User が作成されたら CloudWatch Event の CreateUser Event によって Lambda Function を呼び、 Lambda で初期パスワードを DM するようにしました。 弊社では IAM User の名前は Slack User の Display Name と同じにするというルールがあるので、 Slack Us…
…eBuild(主に Terraform など AWS リソースにアクセスする場合) Google Cloud Build(主に Google Cloud のリソースにアクセスする場合) Jenkins(定期実行や手動実行に特化したジョブ) このうち GitHub Actions は以下の点が優れていると感じています。 monorepo 構成の場合にマイクロサービスごとに独立して Workflow を定義できる 公開 Action のエコシステムが発達している Workflow…
…nsuke です。 Terraform のコードを管理する複数のリポジトリ (以下 Terraform リポジトリ) を一つにまとめて CI/CD の品質およびメンテナンス性を改善した話をします。 弊社のこれまでの CI/CD 改善の取り組み 弊社ではこれまで Terraform の CI/CD を日々改善してきました。 その幾つかは既にブログで紹介していますのでそちらをご参照ください。 Terraform の CI/CD を CodeBuild に移行した話 - スタディサ…
… 100 個以上の Terraform state がある Monorepo で Terraform を v0.14 に upgrade しつつ Terraform Provider の自動 update を実現した方法を紹介したいと思います。 Terraform v0.14 の新機能とかにはあまり触れず、 upgrade するために何をしたかという点にフォーカスします。 Terraform 公式のドキュメントも参照してください。 なお、弊社の Terraform の CI/…
…R) の CI の terraform plan (以下 plan) の実行結果(以下 plan file)を S3 に保存して、安全に terraform apply (以下 apply) 出来るようにしたとともに、 GitHub リポジトリの Require branches to be up to date before merging の設定を無効化することで Experience を向上した話を紹介します。 課題 Terraform の CI/CD を CodeBu…
…deBuild で Terraform を実行して AWS リソースを管理していることを踏まえると、以下の方法が考えられます。 新しい EKS クラスタの作成時に Terraform から初期化スクリプトを自動実行する 新しい EKS クラスタを初期化するための CodeBuild Project を用意し、初期化スクリプトを手動実行する Terraform 定義ファイルと Kubernetes マニフェストファイルはそれぞれ別のリポジトリで管理しているため、後者を選択しまし…
…prove もする Terraform のリポジトリで安全に自動マージする 正規表現を使って update する depName を使って設定を簡略化する 更新対象のファイルごとに Pull Request を分割する PR が溜まらないように PR の数を制限する CI で設定をテストする 設定方法について renovatebot/config-help で質問してみる Reviewer を設定する https://docs.renovatebot.com/configur…
…nsuke です。 Terraform の CI/CD を CircleCI から AWS CodeBuild に移行した話を紹介します。 背景 弊社では AWS のリソースを Terraform で管理しており、元々 CircleCI で CI/CD を実行していました。 リポジトリは monorepo になっており、様々なサービスのリソースが同じリポジトリで管理されています。 Terraform の State はサービス・環境ごとに分割されており、現在 70 個以上の …
…ernetes や Terraform など、SRE が密接に関わる OSS は Go 製のものが多いため、コードを読んだり、upstream にパッチを投げたり、Plugin を書いたりする際に Go が書けることは有益だからです。また、現在の SRE Team には Go が得意なメンバーが多いこともその理由の1つです。今回、自分自身も(簡単なツールではありますが)仕事で Go を書ける機会を持てて良かったと思います。 Managed Node Groups の制限事項 …
…す。 その作成には Terraform を用いており、いくつか適当な引数を入れると Terraform のコードが自動生成される仕組みを用意しています。 これで盤石...と思った1年前の私ですが、この仕組みにはいくつか問題点がありました。本記事ではその問題点とそれを改善した話をします。 既存の仕組みの問題点 以下、大きく2つの問題点がありました。 開発環境用のデータベースが本番環境用のデータベースのスナップショットからリストアされることが考慮されていない 開発環境用のデータベ…
…reate RDS Terraform や script で AWS Aurora を作成するためのガイド Environment Variables Configmap あるいは Secret(aws-secret-manager) を用いて環境変数をアプリケーションに設定するためのガイド CPU / Memory allocation Kubernetes における resource requests / limits の設定ポリシー Design Doc Product…
…anagement(Terraform)の委譲などをしてきており、SLI/SLO もその施策の一環です。 さて、そういう流れで SLI/SLO を定義し、レビューすることを決めましたが、今回は以下の4ステップで徐々に進めることにしました。 システムと組織を紐付け、オーナーシップを決める・決められる仕組みを作る 1人でプロセスをまわし、実現方法を確立する Developer と一緒に SLI/SLO を定義し、プロセスをまわす Error Budget Policy を定義して…
…anagement(Terraform)の Developer への委譲、SLI/SLO の策定とレビューサイクルを開発チーム自身に回してもらうことなどがあげられます。これらは(特に SLI/SLO は)Site Reliability Engineering のプラクティスを開発チームへの委譲すること意味します。 今回の Business Trip ではあらためて Site Reliability Engineering のコンセプトを説明しつつ、我々がどう変わっていこうと…