Amaziaを支える技術2022年版(サーバーサイド編)
こんにちは。サーバサイドエンジニアの今井です。
弊社では、国内最大級のマンガアプリ「マンガBANG!」、そして大人女子が楽しむ漫画アプリ「マンガトート」を展開しています。
そのサーバサイドに使用している技術要素をご紹介します。
開発言語
Ruby 2.7.6
フレームワーク
Rails 6.1.4
テスト
RSpec
Rswag
AWS
ECS、ECR、Elastic Beanstalk、WAF、CloudFront、RDS、S3、DynamoDB、LambdaFunction、StepFunction、Glue、Athena、CodePipeline、CodeBuild、CodeDeploy
CI/CD
CircleCI
AWS CodePipeline
IaC
Terraform
サーバサイドではRuby on Railsを採用しておりまして、CircleCIにより、デプロイ、テスト、Swaggerファイル生成などを自動で行っています。
自動で行うテストには、RSpecとRswagを利用しており、さらにRuboCopで静的なコード解析も行っています。
AWSは便利なサービスがあれば積極的に利用をしていまして、様々なサービスを使い分けています。
またAWSの構築にはTerraformを利用しています。
弊社アプリの特徴としては、毎日7:00と19:00に漫画が無料で読めるフリーメダルが回復するというイベントがあり、その時間に急激な負荷がかかります。
いわゆるスパイクと呼ばれる状態が定期的に発生することになるため、様々な対策を講じています。一例を挙げるとデータストアの使い分けがあります。データストアとしてメジャーなRDBは急激なアクセス変動は苦手としているため、RDBの利用はマスタデータに限定し、ユーザーの行動データなどはNoSQLのDynamoDBに格納するというようにして大規模なトランザクションを捌いています。
また、アプリの会社では珍しいかもしれませんが、テストケースの作成にもかなり力を入れています。RSpecにより内部ロジックのテストを行い、RswagではアプリからアクセスされるAPIのI/Fのテストを行うことにより、デグレードが起きない開発環境になっているため、安心して機能追加を行える環境が整っています。
最近は、AWSの専門家が入りましたので、AWSを利用する際に、相談できる体制も整いました。
このようなアーキテクチャ、体制でやっておりますので、興味のある方はぜひご応募ください。
※Amaziaでは一緒にマンガBANG!を作ってくれるエンジニアを募集しています。
詳しくは採用情報をご覧ください。