Engineering-SRE

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

こんにちは。SRE の chaspy です。先日オンラインイベントで登壇しました。 quipper.connpass.com 本記事では、その時の発表を完全にブログ化するのではなく、話した内容をベースに、あらためて今我々 SRE Team および開発組織・事業が抱えている課題とその…

自分たちのシステムを診断するために DX Criteria"システム"テーマを実施しました

はじめに こんにちは。SRE Team の @chaspy です。本日は 日本 CTO 協会が作成した DX Criteria を実施した話をします。 背景: 自己診断能力の獲得に向けて スタディサプリ小中高大のプロダクト開発部では、今年の4月より「技術戦略グループ」という組織を発…

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

小中高 SRE チームで Engineering Manager をやっている @yuya-takeyama です。 Quipper にはスタディサプリ ENGLISH の SRE である ENGLISH SRE チームと合わせて 2 つの SRE チームがありますが、この記事では自分たち小中高 SRE チームについての話です。…

Terraform の CI に tfmigrate を導入した話

こんにちは。 SRE の @suzuki-shunsuke です。 Terraform Monorepo の CI にtfmigrate を導入した話を紹介します。 なお、弊社の Terraform Monorepo に関しては過去の記事も参照してください。 Terraform リポジトリをマージして CI/CD を改善した話 - Quip…

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

こんにちは。 SRE の @suzuki-shunsuke です。 AWS IAM の管理を miam から Terraform に移行した話を紹介します。 なお、 AWS や miam に限らず「Terraform で管理されていない大量のリソースを Terraform で管理する」ことを検討している方には参考になる…

SRE と Developer のコラボレーションを支える仕組み

こんにちは。SRE の @int128 です。 Quipper の SRE チームでは、Platform の安定運用や改善だけでなく、Platform を利用する Developer のサポートも重要な仕事と位置付けています。 SRE チームで工夫していることを紹介します。 Issue に記録を残す SRE チ…

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

こんにちは。 SRE の @suzuki-shunsuke です。 Google Cloud Platform (以下 GCP) を Terraform で管理するように CI/CD を整備した話を紹介します。 背景 何度か本ブログで紹介したように、弊社では Terraform を使い AWS を始めとする様々なリソースを管理…

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

こんにちは。 SRE の @suzuki-shunsuke です。 AWS の IAM User 作成後に初期パスワードをユーザーに Slack の DM で通知する作業を自動化した話を紹介します。 背景 弊社では AWS を使っており、開発者は入社したらまず自分用の IAM User を作成します。 IA…

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

こんにちは。SRE の @int128 です。 Quipper では GitHub Actions Self-hosted Runner を一部のジョブで導入しています。本稿ではその目的と具体例を紹介します。 背景と解決したい課題 Quipper では以下の CI サービスを用途に合わせて利用しています。 Cir…

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

こんにちは。 SRE の @suzuki-shunsuke です。 Terraform のコードを管理する複数のリポジトリ (以下 Terraform リポジトリ) を一つにまとめて CI/CD の品質およびメンテナンス性を改善した話をします。 弊社のこれまでの CI/CD 改善の取り組み 弊社ではこれ…

SRE Team のオンボーディングのいま

こんにちは。SRE の @chaspy です。 Quipper の SRE Team ではじめて「オンボーディング」と呼ばれるものを行って約2年経ちました。 quipper.hatenablog.com その後、3人の仲間が入社し、そのたびにオンボーディングプロセスを改善してきました。 本記事では…

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

こんにちは。 SRE の @suzuki-shunsuke です。 100 個以上の Terraform state がある Monorepo で Terraform を v0.14 に upgrade しつつ Terraform Provider の自動 update を実現した方法を紹介したいと思います。 Terraform v0.14 の新機能とかにはあまり…

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

こんにちは。 SRE の @suzuki-shunsuke です。 Pull Request (以下PR) の CI の terraform plan (以下 plan) の実行結果(以下 plan file)を S3 に保存して、安全に terraform apply (以下 apply) 出来るようにしたとともに、 GitHub リポジトリの Require br…

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

こんにちは、SRE の @int128 です。 Quipper では日本やグローバル向けのサービスをそれぞれの Amazon EKS クラスタで提供しています。Service Level を保ちながらクラスタを運用していくには Cluster Autoscaler や Datadog Agent などのコンポーネントが必…

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

こんにちは。 SRE の @suzuki-shunsuke です。 Terraform の CI/CD を CircleCI から AWS CodeBuild に移行した話を紹介します。 背景 弊社では AWS のリソースを Terraform で管理しており、元々 CircleCI で CI/CD を実行していました。 リポジトリは mono…

巨大な .circleci/config.yml を分割した話

こんにちは。 SRE の @suzuki-shunsuke です。 6000 行を超える巨大な .circleci/config.yml を分割してメンテナンス性を改善した話を紹介します。 背景 我々 SRE は日々 Developer Productivity の改善に取り組んでいます。 その取り組みの一環で Developer…

Kubernetes HPA External Metrics を利用した Scheduled-Scaling

こんにちは。SRE の @chaspy です。 Quipper では Kubernetes Horizontal Pod Autoscaler (以下、HPA) を利用して Pod のオートスケーリングを実現しています。 HPA は非常に便利で、ほとんどのトラフィック増減に対応できます。しかし、オートスケーリング…

collectionごとのメモリ利用量(MongoDB)

一般的なDBのテーブルのことをMongoDBではコレクションと呼びます。 下のグラフはコレクションごとのキャッシュメモリの利用状況(1週間分)です。毎日同じ時間に特定のコレクションのメモリ使用率が増えていることがわかります。キャッシュメモリの上限は…

DBを分割する前にできること(MongoDBチューニング)

Quipperでは4つのMongoDBクラスター(国内2&グローバル2)を本番環境で運用しています。 これまでに幾度も壁にぶつかりながら培ったMongoDBのチューニングの事例を紹介します。 メモリの大きいインスタンスを使う I/O性能を最高にする WiredTigerのキャッシ…

ステージング環境の夜間停止によるコスト削減

こんにちは。SRE の @chaspy です。 今回、ステージング環境のリソースを使用していない時間に削減することで、コストを削減したのでその事例を紹介します。 前提: Pull Request namespace Quipper では本番環境、開発環境ともに Amazon EKS*1 を使用してい…

ALB Weighted Target Groups による EKS Cluster の Canary Switching

こんにちは。SRE の @chaspy です。 Quipper では Application Platform として Amazon EKS(以降、EKS)を利用しています。*1これまで Cluster を Upgrade する際には Blue/Green 方式で行っていましたが、今回 Canary 方式で Cluster の切り替えを行いまし…

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

こんにちは。SRE の @chaspy です。 Quipper では AWS 上で Kubernetes Cluster を運用してサービスを提供しています。 これまで kube-aws を用いて Kubernetes Cluster を Self Host してきましたが、このたび Managed Services である Amazon EKS に移行し…

Kubernetes Horizontal Pod Autoscaler による信頼性向上

こんにちは。SRE の @chaspy です。 みなさん Kubernetes Horizontal Pod Autoscaler は使っていますか?Quipper では先月導入したところ、便利すぎて仕事を奪われてしまいました。 本記事では、Horizontal Pod Autoscaler(以下 HPA)の基本原理を簡単に説…

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

こんにちは。SRE の @chaspy です。 現在、新サービスを作成する際、そのデータベースには AWS Aurora(Postgres) を使用しています。 その作成には Terraform を用いており、いくつか適当な引数を入れると Terraform のコードが自動生成される仕組みを用意し…

CI の修正をリリース前に本番と同じ条件下で検証出来る仕組みを構築した話

SRE の @suzuki-shunsuke です。 CI のコードの修正を安全にリリースするために、リリース前に本番と同じ条件下で動かして検証できる仕組みを構築した話について書きます。 背景 最初に背景を説明します。 Quipper では様々なプロダクトのソースコードがモノ…

みんなでつくる Production Readiness

こんにちは。SRE の @chaspy です。 以前、Production Readiness Checklist に関する記事を書きました。 quipper.hatenablog.com Production Readiness Checklist の運用開始から1年ほどの月日が経ち、27ものサービスが無事 Production へ出ていきました。 …

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

こんにちは。SRE の @chaspy です。 先日行われた SRE NEXT 2020 にて、SLO Review というタイトルで発表してきました。 本記事では、会場に来られた方には内容を追体験してもらえるように、来られなかった方には伝えたかった内容を持ち帰っていただけるよう…

Business Trip for Global Team

はじめに ビーチで"何もしない"を1日半することでリラックスできました Boracay のビーチからこんにちは。SRE の @chaspy です。 今回、Business Trip で Indonesia と Philippines に行ってきたのでその話をします。 なんのために行ったのか Developer との…

障害対応とポストモーテム

こんにちは。SRE の @chaspy です。 ユーザに価値が提供できなくなってしまうシステム障害は起きてほしくはありませんが、絶対に発生しないとは言い切れません。 そんなシステム障害は、そもそも発生頻度が不定、かつ多くないので、どのように対応すべきかを…

負荷試験との向き合い方

こんにちは。SRE の近藤(@chaspy)です。 先日、より高い信頼性でサービスを提供するために、スタディサプリ小中高大のサービスの最後の砦であるデータベース、MongoDB のインスタンスクラスのスケールアップを行いました。また、スケールアップをするにあ…