Studyplus Engineering Blog

スタディプラスの開発者が発信するブログ

スタディプラスを支えるインフラ技術(2021年)

スタディプラスでSREをしてます、ksugaです。

最近は寒くて、電気毛布が欠かせません。寝るとき足元に電気毛布を敷いて寝ると睡眠が深く、疲れが取れます。

毎年恒例になっている「スタディプラスを支えるインフラ技術」を書いていたら公開が年明けになってしまいました。振り返りも兼ねて2021年に何していたかブログを書いたので良ければご一読ください。

昨年までの記事はこちらです。

tech.studyplus.co.jp tech.studyplus.co.jp

はじめに

弊社には大きく分けて以下3つのサービスがあります。

  • 学習管理SNS「Studyplus」
  • 教育機関向け学習管理サービス「Studyplus for School」
  • 参考書読み放題アプリ「ポルト」

今回も「Studyplus」のインフラを中心に紹介します。

システム構成

Studyplusは一番大きなメインシステムと複数のサブシステムによって構成されています。

2021年ではEKSにメインシステムを移行しました 🎉

また、Kubernetesのバージョンアップを行いまして、2021年12月現在は1.21を利用しています。多少簡略化した図になりますが以下のようなサーバー構成となっております。

サーバー構成の概要図

環境は以下3種類で各環境ごとにKubernetesクラスタを作成するマルチテナント構成です。

  • 開発環境
  • ステージング環境(本番DBに接続しており、主にリリース前にアプリケーションの最終チェックをするQA環境)
  • 本番環境

今後はStudyplus for Schoolや他のサブシステムもEKS化を進めていく予定です。また、gRPCの利用やマイクロサービス間のより安全な通信のためにサービスメッシュ導入を進めていきたいです。

セキュリティ

2021年はセキュリティ強化についても対応をしてきました。

  • AWS SSOの導入
  • AWS WAF V2の導入
  • Amazon GuardDutyの通知強化
  • AWS IAMの権限整理

設定を入れるだけではなく、隔週でセキュリティ関連のAWSリソース勉強会を開催しました。いくつかのリソースを調べて比較検討しながら導入していきました。今後もセキュリティ強化を進めていく予定です。

利用中の主なAWSリソース

弊社で利用しているAWSリソースは以下になります。 ※簡略名称で記載しております。

  • EKS
  • ECR
  • EC2(ALB、Auto Scaling等含む)
  • Lambda
  • VPC
  • RDS for MySQL
  • Aurora MySQL
  • ElastiCache(Redis)
  • S3
  • CloudSearch
  • SQS
  • SES
  • Glue
  • Athena
  • CloudFront
  • IAM
  • KMS
  • ACM
  • Route53
  • SSO
  • WAF V2
  • GuardDuty

構成管理

Terraformを導入して2年以上経過しました。

なるべく最新バージョンを使うようにしており、2021年12月現在は1.0を使っています。 社内にもいくつか知見も溜まり、SREメンバー以外のコミットも増えてきています。

課題としてはEKSに移行するシステムからTerraformで管理しているため、まだコード化されていない部分があります。徐々にTerraformで管理する割合が増えるようにしていきたいです。

www.terraform.io

CI/CD

2021年はメインシステムのCI/CDを以下のフローに移行しました。

デプロイのイメージ図

メインシステム以外も含めるとこちらのフローに変更して1年以上運用してきましたが、今のところ快適に運用できています。

今後は他のシステムのCI /CDを変更していくだけではなく、Progressive Deliveryに移行していきたいです。というのもRubyのバージョンアップ時により安全なリリースを自動でしたいという社内ニーズが出てきたからです。ポストモーテムで話が出たりするようになってきたので導入を検討するタイミングとしては良いのかなと考えています。

監視・検知

2021年はメインシステムの監視をDatadogへ移行しただけではなく、APMの利用も開始しました。DatadogのAPMを入れたことでデプロイしたAPIのバージョンごとにパフォーマンス比較を見ることができるようになるなど可観測性が向上しました。

www.datadoghq.com

また、2021年はPagerDutyを導入しました。オンコールにPagerDutyを選択した理由は今後スケールしていくエンジニア組織を見据えてオンコールシフトが組めるというのと、デファクトになっているツールなので知見が手に入りやすかったからです。

ja.pagerduty.com

その他

その他に運用上必要な作業や冗長化、パフォーマンス向上を目的に改善作業も行なって来ました。

  • AWS ElastiCache Redisの冗長化(耐障害性向上)、バージョンアップ
  • AWS RDS MySQL 5.6を5.7にバージョンアップ
  • AWS RDSにAWS Graviton2対応インスタンスの導入
  • Ubuntu OSのアップグレード

etc

また、隔週金曜日に優先度は高くないけれど1日で終わりそうな改善作業をコツコツと行なう改善デーを1年間行なって来ました。TerraformのバージョンアップやPagerDutyの導入、Argo Workflowsの検証など目標にするには小さいけれど対応したいといったタスクを行うことができました。

最後に

2021年もSREチームで色々なことを成し遂げて来ました。「小さなことを積み重ねることが、とんでもないところへ行くただ一つの道」というイチロー選手の名言に当てはまる様な一年でした。私が入社した3年前に比べて多くのことが改善されて来ていると感じています。

2022年もスタディプラスユーザーだけでなくEdTech業界で信頼されるサービスになれるよう、信頼性向上や価値提供のスピードを上げるための小さな改善を積み上げていきたいです。