スタディサプリ Product Team Blog

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

Kubernetes の検索結果:

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

…リでは AWS の Kubernetes クラスタでサービスを開発および運用しています。 また、Kubernetes クラスタ上で GitHub Actions Self-hosted Runner を導入しています。 これらの仕組みを用いて前述の課題を解決することを考えました。 負荷試験では以下の技術スタックを採用しています。 負荷生成 シナリオ (Gatling) 実行環境 (GitHub Actions self-hosted runner on Kubernetes)…

社内留学制度を利用したら色々と上手くいった話

…いえ、同じ社内なのでKubernetesやDocker Composeなどの開発環境は共通しているし、他のチームのエンジニアともSlackやGitHub上で馴染みがある人が多いです。そのため、転職と比べてスタートダッシュが切りやすいこともメリットの一つです。 また、チームを変えるとチーム開発のやり方、使用している技術スタック、解くべき課題や、課題の性質も全て違うので、経験の幅を増やし、エンジニアとして良いキャリアを積むという観点でもお得感が強いです。 アンラーニングができる …

負荷試験、Gatlingを使ってやってみた

…を保っています。 SREチームの協力も得て、Kubernetes 上の Github Actions Self-hosted Runner で負荷試験をワンストップで実行できる仕組みにより、ボトルネックの発見と解決を速いサイクルで進めることができました。その改善に合わせて他チームでもGatlingを使用した負荷試験の活用につながっています。今後は、QAチームなどとも連携を強化しつつ性能評価などの品質管理へと接続していきたいと思っていっます。 皆様も快適な負荷試験を!以上です。

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

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

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

…ンについても同様に Kubernetes を用いたセルフサービスのためのプラットフォームを提供しており、新しいアプリケーションの構築も、それらの継続的なデプロイも、SRE チームの手を借りることなくできるようになっています。 CI/CD 等のためのツール類を含むプラットフォームは、ソースコードという形で成果物としてある程度目に見えやすいものですが、ツールだけ用意すれば自己完結チームとして開発が回り出すものでもありません。そもそも何故そのような形で開発をするのかということに対す…

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

…ner を運用する Kubernetes クラスタで Self-hosted Runner を運用する また、Self-hosted Runner を実行するインスタンスやコンテナを管理する方法も考える必要があります。 GitHub のドキュメントでは OS に手作業で Self-hosted Runner をインストールする方法が説明されていますが、この方法ではバージョンアップや台数追加などの日常運用に耐えられないと考えられます。 そこで Self-hosted Runne…

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

…目で行われました。 Kubernetes Cluster GitOps AutoScaling*6 SRE Culture*7 Architecture overview Observability Unicorn MongoDB AWS Secrets Manager monorepo CI/CD 各テーマはそれぞれ得意なメンバーがセッションオーナーとなり説明を行いました。 こういったものは、当然その一回限りでは完全に中身を理解することは難しいと思います。しかし、ここで"一…

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

…m 定義ファイルと Kubernetes マニフェストファイルはそれぞれ別のリポジトリで管理しているため、後者を選択しました。 最終的に、新しいクラスタを構築する手順は以下のようになりました。 SRE が Terraform で 新しい EKS クラスタを追加するための Pull Request を作成する SRE が Pull Request をマージする AWS CodeBuild で terraform apply が実行されて、自動的に以下のリソースが作成される 新し…

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

…uipper では Kubernetes Horizontal Pod Autoscaler (以下、HPA) を利用して Pod のオートスケーリングを実現しています。 HPA は非常に便利で、ほとんどのトラフィック増減に対応できます。しかし、オートスケーリングの宿命ではありますが、突発的なアクセス、いわゆるスパイクアクセスにはどうしても対応できません。CPU 利用率が急激に上がり、HPA がすぐに Desired Replicas を増やしたとしても、Node*1 のスケ…

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

…この仕組みについてはKubernetes 導入で実現したい世界とその先にある Microservices / モノレポの導入をご覧ください。 *4:Cluster 名に "staging" が含まれているものを jq の select でフィルタリングしています。 *5:Western Indonesian Time (Standard Time) *6:Philippine Time (Standard Time) *7:Pacific Daylight Time / Pa…

Docker Hub の Rate Limit 問題に対応した話

こんにちは。 SRE の @suzuki-shunsuke です。 Docker Hub から Docker image を Pull する際に Rate Limit に引っかからないように対応した話について書きます。 anonymous user に対する Docker Hub の Rate Limit は段階的に導入されていて、 2020-11-02 9am Pacific Standard Time に完全に導入されるそうです。 https://docs.docker.…

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

…クラスタですべての Kubernetes Resources が Running であることを確認する 1% のトラフィックを新クラスタに流す Datadog Dashboard でエラーレートを確認する 2 と 3 を繰り返して徐々にトラフィックを増やしていく。今回は 10%, 20%, 50%, 100% の刻みで増やしました。 トラフィックの増加は10分ごとに行ったので、合計1時間弱かかりました。 学んだこと: 日中にクラスタ切り替えを行うことができる ALB Weig…

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

…では AWS 上で Kubernetes Cluster を運用してサービスを提供しています。 これまで kube-aws を用いて Kubernetes Cluster を Self Host してきましたが、このたび Managed Services である Amazon EKS に移行しました。(以下、 Amazon EKS を EKS と表記します) 本記事では、 Kubernetes Cluster の移行で遭遇した問題をどのように解決したかを説明します。また、数多…

Elastic CloudのElasticsearch Serviceに移行しています

…た!) 具体的には、KubernetesのServiceリソースを利用しています。これはannotationsにAutodiscoveryの設定を定義すると、DataDogはモニタリングの対象に含めてくれます。 設定サンプル (annotations.yaml) apiVersion: extensions/v1beta1 kind: Deployment metadata: name: "${SERVICE_NAME}" spec: template: metadata: …

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

… です。 みなさん Kubernetes Horizontal Pod Autoscaler は使っていますか?Quipper では先月導入したところ、便利すぎて仕事を奪われてしまいました。 本記事では、Horizontal Pod Autoscaler(以下 HPA)の基本原理を簡単に説明したのち、実運用で導入する際の注意点について話そうと思います。 HPA とは何か 名前のままではありますが、Pod を水平方向(Horizontal)に自動的にスケールしてくれる君です。 …

みんなでつくる Production Readiness

… service: Kubernetes monorepo で新規サービスを作成するためのガイド How to create RDS Terraform や script で AWS Aurora を作成するためのガイド Environment Variables Configmap あるいは Secret(aws-secret-manager) を用いて環境変数をアプリケーションに設定するためのガイド CPU / Memory allocation Kubernetes に…

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

… Layer では Kubernetes による Self-Healing が有効です。 予期せぬ原因は大きく "Traffic の急増による Resource の枯渇" と "Hardware / Cloud の障害" に二分されると考えており、前者は AutoScaling および 事前の Scheduled Scaling、後者は、いつ単一の Instance / AZ が Down しても可用性に影響しないような設計をし、復旧時には自動的に復旧することが望ましいです。…

負荷試験との向き合い方

…Staging の Kubernetes Cluster 上で、Database に直接読み書きを行う Backend のアプリケーションにリクエストを大量に送ることにしました。そのため、テストクライアントは同じ namespace の既存の Pod を利用しました。 Quipperでは アプリケーションプラットフォームにKubernetesを使うことにより、Pull-Request ごとに namespace を作成し、全アプリケーションが deploy される仕組みを構築…

スタディサプリ/Quipper Product Meetup #3 を開催しました!

…elease) を Kubernetes 上に整備したので、この取り組みについて発表しました。 3.gRPC in スタディサプリ ENGLISH 〇登壇者:Yuta Kimura 〇概要:スタディサプリENGLISHがgRPC活用に至った過程、運用方法、Envoyを使ったgRPCの負荷分散、gRPCの良さ、つらみなどをお話ししました。 4.CQRS + ESをKinesis, Spark, RDB, S3でやってみた 〇登壇者:Tsubasa Matsukawa 〇概要:あ…

Production Readiness Check のはじめかた

…ットフォームとして Kubernetes を採用しており、Developer がビジネス要件に合わせて主体的に新しい Service を構築できる状況になっています。Quipper / StudySapuri のビジネス拡大に伴い、今では月に1つ以上新しい Service が増え続けています。 記事投稿日現在、StudySapuri / Quipper ともに Kubernetes Deployment 単位で40以上の Service*1 が動いており、このすべての詳細を …

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

…m Blog 3位 Kubernetes導入で実現したい世界とその先にあるMicroservices - Quipper Product Team Blog 4位 より良い面接を実現するために "Quipper採用面接ガイド" を公開しました - Quipper Product Team Blog 5位 QuipperにおけるReact Native活用事例 - Quipper Product Team Blog 6位 QuipperのWebエンジニア採用におけるコードテスト…

Quipper の Monorepo な Web アプリ開発における Git 戦略

…it ブランチ と Kubernetes を組み合わせた、開発から本番デプロイまでの流れを紹介したいと思います。 流れ ざっくりとした概要としては Git flow をアレンジしたものを使っています。 まず、開発のベースとなるものは develop ブランチです。ここから機能追加ブランチを切り、PR を develop に向けて出すのが基本です。PR 毎に Heroku で言うところの Review app のように、PR 毎に Kubernetes の namespace …

Kubernetes 上のアプリケーションから Stackdriver Logging に構造化ログを送る

…ムでは AWS や Kubernetes を用いたインフラの構築、CI/CD パイプラインの構築・改善等様々な Developer Experience の向上、社内のあらゆるサービスのマイクロサービス化のサポート、そしてそれに伴う複雑化にも耐え得るよう、サービスの安定稼働を支えるためのルール・ツール群を整備しています。 今日はその中でも、簡単かつより精緻に Logs-Based Monitoring が行えるよう、GCP の Stackdrider Logging に構造化…

Kubernetes Meetup Tokyo #14 で「Quipper のマイクロサービス化への道のり」というタイトルで登壇しました

…オフィスで行われた Kubernetes Meetup Tokyo #14 というイベントにおいて、発表の機会をいただきました。発表動画の撮影・配信も行われるホスピタリティの厚さにも驚きましたが、参加人数が多いこともあって様々なフィードバックをいただき、大変楽しませてもらいました。 発表スライド 動画 この記事では当日に質問されたことなど、スライドに書かれていない点について補足していきたいと思います。 Amazon EKS (Elastic Kubernetes Servic…

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

…ーとして注力しているKubernetes導入について紹介したいと思います。 今回は、Kubernetes自体がどういうものなのかということより、それをツールとしてどう使い、それでどういう世界を実現したいのかみたいなところを中心に紹介できたらと思います。 まず現在の状況ですが、Quipperでは、大きく分けてスタディサプリの小中高校生向けと日本以外向けの2つのサービスを展開しています。サービスとしての構成はほぼ同じですが、基盤としては別々のAWSアカウントで運営されています。こ…

Web Developer も知っておきたい Kubernetes における Sidecar Pattern と Ambassador Pattern

…の私自身の思いと、「Kubernetes による Microservices 基盤を作っていくメンバーがもっと必要」「Microservices を技術面だけでなく組織面でも Production Ready な形でやっていく上で Developer と SRE のつなぎ役が必要」という会社の状況が一致したので、異動して AWS, Kubernetes または MongoDB などと向き合っています。 3 行でまとめ Sidecar Pattern はアプリケーションのコンテ…