スタディサプリ Product Team Blog

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

Kubernetes の検索結果:

入稿devsチームで、校閲PDF出力機能のリニューアルをおこなった話【1/2 入稿ドメインとは?〜開発事例編】

…規サービス対応分の Kubernetes の rollout, service 設定追加 ingress リソースの追加 reverse-proxy に関する設定 などは、もともと汎用的にチェックリスト化できていたものについては指示を受けつつ、ファイルを揃えていくことができたものの、先に述べた図のような新しい設計にしたことで変化していたものとして、もう 1 つ、見落としていたものがありました。・・それは、コンポーネントから学習コンテンツの GitHub リポジトリを参照すると…

スタディサプリにおけるKarpenterの導入トラブル振り返り

…スタディサプリでは、Kubernetesを利用しているのですが、Nodeの運用自動化のために2023年3月から本番環境を含む全環境でKarpenterを導入しています。 Karpenterのおかげで開発者体験を向上させることができたり、コスト削減を行うことができました。便利で良いことが沢山ある一方、本番環境で問題が発生するなどいくつかハマったこともありました。 本ブログでは私たちがハマったポイントを通じて、Karpenterの導入を検討している方、あるいは既に本番環境でKar…

SLI の計測のために Envoy や service mesh を選択しなかった理由

…ため、各サービスの Kubernetes manifest と Envoy の運用はサービスを運用しているアプリケーションエンジニアのチームが責任を負い、SREチームはそのフォローをするという体制になっております。 参考:Kubernetes導入で実現したい世界とその先にあるMicroservices しかし、全てのチームに Kubernetes と Envoy に強い人がいるというわけではなく熟練度はチーム毎にばらつきがあります。 また、開発チームが増えていく中で、SREチ…

【 RECRUIT Job for Student 2022 Autumn】Kubecostの検証をしてみました

…ます。 そのためにはKubernetesで運用しているマイクロサービスのコストをチーム単位に集計できる構造が必要になってきます。そこでKubecostと呼ばれるツールを導入することにより、マイクロサービスごとにかかるコストの監視ができるのか調査しました。 Kubecostとは Kubecostは2019年に公開されて、Kubernetesクラスターの運用にかかるコストをアプリケーション、プロジェクト、チーム単位に集計して監視することができるツールです。 Kubecostの主な…

スタディサプリならではの開発現場の環境

…していることです。 Kubernetes環境 スタディサプリでは、インフラ基盤を全てKubernetesで構築しています。 本番環境や検証環境だけでなく、個人の開発環境までもです。各人に対して専用のNamespaceが発行されています。 スタディサプリのシステムは数多くのアプリケーションが複雑に連携して成り立っています。もしホストマシン上にこの開発環境を構築しようとすると、多くのマシンリソースを消費してしまうのはもちろんのこと、各アプリケーションの言語 / ライブラリバージョ…

スタディサプリのWebアプリケーションはこうやって開発されている

…で動いております。 Kubernetes を使うようになっていった歴史は他のブログ記事でも紹介されています。 Kubernetes導入で実現したい世界とその先にあるMicroservices Kubernetes Meetup Tokyo #14 で「Quipper のマイクロサービス化への道のり」というタイトルで登壇しました Self-Hosted Cluster から EKS への移行と Platform の Production Readiness いろいろな環境 スタ…

Darklaunchという便利なものと、その未来

…ction以外の社内kubernetesクラスタにデプロイ済みで、社内の誰でもいつでも気軽に実際に動作確認できる形になっています。 わかりやすく過去から将来へのタイムラインを図で示すとこんな感じです。 タイムライン prototypeはujihisaが最もラクに何も考えずさくっと作れるものにするため、Ruby on Railsで作りました。Rails最高ですよね、大好きです。いっぽう実際に清書するときにはチームでの長期的なメンテを考え、別の言語で書かれる可能性が高いです。具体…

スムーズな開発体験を支えるデータベースリストアの仕組み

…CS Task や Kubernetes Job を呼び出せる Step Functions 自体の監視やバージョンアップが不要 Terraform で構成管理できる Datadog で state machine の実行結果や所要時間をモニタリングできる Cons 複雑な条件判断は実装できない 複雑なワークフローを記述するにはある程度の慣れが必要なため、組織で継続的にメンテナンスしていくのが難しい ワークフローの JSON を Pull Request 上でレビューするのが…

チームのコラボレーションを支える"ミッションツリー"

… "Job" や "Kubernetes" などのサブ領域があり、そこから個別のミッションにつながっている様子がわかります。 基本的には設定されたミッションを記載しますが、それ以外に、今期誰もやる予定になっていないけれど関連するトピックを自由に生やしたりしています。 また、各ミッションにはコメントとして設定の背景を記載しています。 以下は僕の予算計画についてのミッションの背景です。*7 ミッションツリーを作ったきっかけ きっかけは偶発的で、ミッションの設定に悩んでいた時に、部…

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 - スタディサプリ Product Team Blog 4位 より良い面接を実現するために "Quipper採用面接ガイド" を公開しました - スタディサプリ Product Team Blog 5位 QuipperにおけるReact Native活用事例 - スタディサプリ Product Team Blog 6位 QuipperのWebエンジニア採用におけるコードテスト…