スタディサプリ Product Team Blog

株式会社リクルートが開発するスタディサプリのプロダクトチームのブログです

Terraform の検索結果:

AWS SSO を導入してセキュリティと利便性を改善した話

…n Set などは Terraform で管理するようにしました。 ssosync による Google Workspace と AWS SSO の同期 SSO User, Group は ssosync という AWS 公式のツールを使って Google Worksapce を同期するようにしました。 ssosync を実行するために Google Cloud Project (以下 GCP) の Service Account を作ったりする手順に関しては ssosync…

GitHub Actions Self-hosted Runner と Gatling による負荷試験

… ノードグループ (Terraform) Gatling を実行するための GitHub Actions Runner (Kubernetes manifests) データベースなどの AWS リソース (Terraform) 本番に近いデータが必要な場合、個人情報をマスク済みのスナップショットを利用できます *1 試験対象のアプリケーション アプリケーションリポジトリに Pull Request を作成するとプレビュー環境がデプロイされます 専用のノードグループに配置される…

Poetry, Docker, Build, and Run

…使い分けています。 Terraform のリソースgoogle_cloudbuild_trigger のgithub.pull_request と github.push にあたる設定を使い分けることで、PR が出されたときとマージされたときを区別しています。 またcloudbuil.yaml のdeploy コマンドで指定する名前を ${_APP_NAME}-${_ENV}${_PR_NUMBER} として、「pull リクエスト トリガーに使用する GitHub 固有のデ…

HashiTalks Japan 2021 で弊プロダクトの Terraform Platform について登壇しました

…けのイベントです。 Terraform や Vault など、 HashiCorp の様々なプロダクトに関して自由に登壇し、ナレッジを共有するイベントです。 2021年9月30日にオンラインで開催されました。 資料や動画が下記で公開されているので、ぜひご覧ください。 https://events.hashicorp.com/hashitalksjapan HashiTalks: Japan 発表資料 - Speaker Slides - HashiCorp User Grou…

スタディサプリ/Quipper オンラインミートアップ#3で How to measure "Site Reliability Engineering" というタイトルで登壇しました

…を実行する仕組みを、Terraform module を利用してコードとして定義できるようなものなどを検討しています AWS の複数アカウント化、Organization 化、SSO 対応 組織やプロダクトが大きくなっていく中で、セキュリティの重要性は上がり続けています。 現状は本番環境とそれ以外が VPC では分離されているものの、AWS アカウントは単一のものとなってしまっています セキュリティのため、それぞれの環境に対してアクセスできる人だったり、アクセスする方法につい…

SRE チームをよりサステナブルにするために Vision/Mission/Values を作った話

… そうならないよう、Terraform によるセルフサービスのためのプラットフォームを提供しており、開発チームのメンバーはデータベースだけでなくキャッシュサーバやメッセージキューなど、あらゆるクラウドリソースを自分たちで設計し、調達することができるようになっています。 また、アプリケーションについても同様に Kubernetes を用いたセルフサービスのためのプラットフォームを提供しており、新しいアプリケーションの構築も、それらの継続的なデプロイも、SRE チームの手を借りる…

Terraform の CI に tfmigrate を導入した話

…nsuke です。 Terraform Monorepo の CI にtfmigrate を導入した話を紹介します。 なお、弊社の Terraform Monorepo に関しては過去の記事も参照してください。 Terraform リポジトリをマージして CI/CD を改善した話 - Quipper Product Team Blog Pull Request の terraform plan の実行結果を S3 に保存して安全に apply - Quipper Produc…

AWS IAM の管理を miam から Terraform に移行した話

…を miam から Terraform に移行した話を紹介します。 なお、 AWS や miam に限らず「Terraform で管理されていない大量のリソースを Terraform で管理する」ことを検討している方には参考になる内容かと思います。 背景 本ブログでも何度か紹介したとおり、弊社では AWS のリソースを Terraform で管理しています。 しかし、実は IAM に関しては miam という別のツールで主に管理されていました。 miam は AWS IAM …

Kubeflow Pipeline の魅力を最大限に引き出すにはやっぱりコンポーネント化スキルが必要

…の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…

AWS - GCP の ID 連携を使い、 AWS CodeBuild で Terraform を使って GCP を管理

…以下 GCP) を Terraform で管理するように CI/CD を整備した話を紹介します。 背景 何度か本ブログで紹介したように、弊社では Terraform を使い AWS を始めとする様々なリソースを管理しています。 quipper.hatenablog.com しかし、 GCP はあまりちゃんと管理できていないという課題がありました。 弊社のサービスはほぼすべて AWS 上で動いており、 IaC が既に整備されています。 一方で GCP も以前から使っていますが …

AWS IAM User の初期パスワード通知を自動化

…、 miam から Terraform への移行を検討する際にネックだったので、自動化することにしました。 仕組み IAM User が作成されたら CloudWatch Event の CreateUser Event によって Lambda Function を呼び、 Lambda で初期パスワードを DM するようにしました。 弊社では IAM User の名前は Slack User の Display Name と同じにするというルールがあるので、 Slack Us…

GitHub Actions Self-hosted Runner の導入と安定運用に向けた軌跡

…eBuild(主に Terraform など AWS リソースにアクセスする場合) Google Cloud Build(主に Google Cloud のリソースにアクセスする場合) Jenkins(定期実行や手動実行に特化したジョブ) このうち GitHub Actions は以下の点が優れていると感じています。 monorepo 構成の場合にマイクロサービスごとに独立して Workflow を定義できる 公開 Action のエコシステムが発達している Workflow…

Terraform リポジトリをマージして CI/CD を改善した話

…nsuke です。 Terraform のコードを管理する複数のリポジトリ (以下 Terraform リポジトリ) を一つにまとめて CI/CD の品質およびメンテナンス性を改善した話をします。 弊社のこれまでの CI/CD 改善の取り組み 弊社ではこれまで Terraform の CI/CD を日々改善してきました。 その幾つかは既にブログで紹介していますのでそちらをご参照ください。 Terraform の CI/CD を CodeBuild に移行した話 - Quipp…

100 以上の Terraform 環境をいい感じに v0.14 に upgrade した方法

… 100 個以上の Terraform state がある Monorepo で Terraform を v0.14 に upgrade しつつ Terraform Provider の自動 update を実現した方法を紹介したいと思います。 Terraform v0.14 の新機能とかにはあまり触れず、 upgrade するために何をしたかという点にフォーカスします。 Terraform 公式のドキュメントも参照してください。 なお、弊社の Terraform の CI/…

Pull Request の terraform plan の実行結果を S3 に保存して安全に apply

…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…

ArgoCD と Renovate によるコンポーネントの継続的なデプロイ

…deBuild で Terraform を実行して AWS リソースを管理していることを踏まえると、以下の方法が考えられます。 新しい EKS クラスタの作成時に Terraform から初期化スクリプトを自動実行する 新しい EKS クラスタを初期化するための CodeBuild Project を用意し、初期化スクリプトを手動実行する Terraform 定義ファイルと Kubernetes マニフェストファイルはそれぞれ別のリポジトリで管理しているため、後者を選択しまし…

Renovate の Tips

…prove もする Terraform のリポジトリで安全に自動マージする 正規表現を使って update する depName を使って設定を簡略化する 更新対象のファイルごとに Pull Request を分割する PR が溜まらないように PR の数を制限する CI で設定をテストする 設定方法について renovatebot/config-help で質問してみる Reviewer を設定する https://docs.renovatebot.com/configur…

Terraform の CI/CD を CodeBuild に移行した話

…nsuke です。 Terraform の CI/CD を CircleCI から AWS CodeBuild に移行した話を紹介します。 背景 弊社では AWS のリソースを Terraform で管理しており、元々 CircleCI で CI/CD を実行していました。 リポジトリは monorepo になっており、様々なサービスのリソースが同じリポジトリで管理されています。 Terraform の State はサービス・環境ごとに分割されており、現在 70 個以上の …

Self-Hosted Cluster から EKS への移行と Platform の Production Readiness

…ernetes や Terraform など、SRE が密接に関わる OSS は Go 製のものが多いため、コードを読んだり、upstream にパッチを投げたり、Plugin を書いたりする際に Go が書けることは有益だからです。また、現在の SRE Team には Go が得意なメンバーが多いこともその理由の1つです。今回、自分自身も(簡単なツールではありますが)仕事で Go を書ける機会を持てて良かったと思います。 Managed Node Groups の制限事項 …

RDS のセルフサービス化のための自動化の工夫

…す。 その作成には Terraform を用いており、いくつか適当な引数を入れると Terraform のコードが自動生成される仕組みを用意しています。 これで盤石...と思った1年前の私ですが、この仕組みにはいくつか問題点がありました。本記事ではその問題点とそれを改善した話をします。 既存の仕組みの問題点 以下、大きく2つの問題点がありました。 開発環境用のデータベースが本番環境用のデータベースのスナップショットからリストアされることが考慮されていない 開発環境用のデータベ…

みんなでつくる Production Readiness

…reate RDS Terraform や script で AWS Aurora を作成するためのガイド Environment Variables Configmap あるいは Secret(aws-secret-manager) を用いて環境変数をアプリケーションに設定するためのガイド CPU / Memory allocation Kubernetes における resource requests / limits の設定ポリシー Design Doc Product…

SRE NEXT 2020 で「SLO Review」というタイトルで登壇しました #srenext

…anagement(Terraform)の委譲などをしてきており、SLI/SLO もその施策の一環です。 さて、そういう流れで SLI/SLO を定義し、レビューすることを決めましたが、今回は以下の4ステップで徐々に進めることにしました。 システムと組織を紐付け、オーナーシップを決める・決められる仕組みを作る 1人でプロセスをまわし、実現方法を確立する Developer と一緒に SLI/SLO を定義し、プロセスをまわす Error Budget Policy を定義して…

Business Trip for Global Team

…anagement(Terraform)の Developer への委譲、SLI/SLO の策定とレビューサイクルを開発チーム自身に回してもらうことなどがあげられます。これらは(特に SLI/SLO は)Site Reliability Engineering のプラクティスを開発チームへの委譲すること意味します。 今回の Business Trip ではあらためて Site Reliability Engineering のコンセプトを説明しつつ、我々がどう変わっていこうと…

Quipper Product Blogを再開して1年が経ちました

…uipperにおけるTerraformの運用 - Quipper Product Team Blog 13位 React Nativeアプリのメモリリークを追いかける - Quipper Product Team Blog 14位 グローバルサービスでのタイムゾーンとの向き合い方 - Quipper Product Team Blog 15位 モバイルエンジニアが H.265/HEVC 使った方がいい理由(わけ) - Quipper Product Team Blog 16位…

Kubernetes導入で実現したい世界とその先にあるMicroservices

…、AnsibleとかTerraformといった構成管理ツールをWebエンジニアが理解し主体的に運用していくというのはなかなか難しいと感じています。ツール自体を理解することもそうだし、それらのツールが社内でどう使われているのか、テンプレートがどういう構成になっていてそれがどういうルールでデプロイされているのかと言った社内の決めごとを理解する必要もあり、なかなか難しいと思っています(Kubernetesを使った上で、その上にHelmのような高機能なテンプレートエンジン付きなパッケ…

QuipperにおけるTerraformの運用

…AWS上に構築され、Terraformを使って構成管理をしています。そこで、私達がTerraformを運用するために工夫している点を紹介したいと思います。 Terraformとは? Vagrantなどを提供するHashiCorp社製のインフラ構成管理ツールで、AWSやGCPなどが提供している各種クラウドサービスをリソースという単位で構築、コード化出来るツールになります。 (AWSのEC2インスタンスを5台立ち上げるための設定例) resource "aws_instance"…