Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
株式会社Relic_臺健太郎_RubyWorldConference2022発表資料.pdf
Search
kenkentarou
November 18, 2022
Programming
260
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
株式会社Relic_臺健太郎_RubyWorldConference2022発表資料.pdf
kenkentarou
November 18, 2022
More Decks by kenkentarou
See All by kenkentarou
BigQuery・Glue・S3・QuickSightの連携をしたお話
kenkentarou
0
240
Other Decks in Programming
See All in Programming
難しいけど、読めた。- OSSの入口に立った話。
sts11142
0
130
iOS 27でニュースアプリはどう変わる!? 〜日経電子版の新機能対応と、開発事例から〜
lynnswap
7
13k
mrbgem 三角測量 開発
ogom
0
180
AHC070解法紹介
eijirou
0
150
Findy - エンジニア向け会社紹介/Findy Company Deck
findyinc
6
400k
モデルのリファクタリングが難しいと思ったら、そもそも複雑だったのはビジネス仕様だった ? / is-the-business-domain-the-real-complexity
hatsu38
0
440
JPUG勉強会 OSSデータベースの内部構造を理解しよう(第2回)
oga5
0
290
Augmenting AI with the Power of Jakarta EE
ivargrimstad
0
390
ソニーのクラウド共通基盤の変遷とAI時代の開発スタイルに合わせた進化 / The Journey of Sony’s Common Cloud Platform and Its Evolution for AI-Native Development
kenjiyoneyama
0
220
動作中のプログラムの中身をリアルタイムに覗く / Realtime Debugger for CSharp with Roslyn
prota
1
1.7k
Starting & Sustaining Code-Based E2E Testing for Non-Coding QA Teams( #jasstniigata )
teyamagu
PRO
1
840
[2026-09-26]空論ジェネリックプロセス~テスト資産とAIで紡ぐ、再現可能なパフォーマンスチューニングの話~
tosite
0
250
Featured
See All Featured
The agentic SEO stack - context over prompts
schlessera
0
950
BBQ
matthewcrist
89
10k
Code Reviewing Like a Champion
maltzj
528
40k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
12
1.3k
Money Talks: Using Revenue to Get Sh*t Done
nikkihalliwell
0
510
Joys of Absence: A Defence of Solitary Play
codingconduct
1
530
Building a Modern Day E-commerce SEO Strategy
aleyda
45
9.2k
The Impact of AI in SEO - AI Overviews June 2024 Edition
aleyda
6
1.2k
How to Get Subject Matter Experts Bought In and Actively Contributing to SEO & PR Initiatives.
livdayseo
0
200
Building Adaptive Systems
keathley
44
3.2k
Building the Perfect Custom Keyboard
takai
2
890
Highjacked: Video Game Concept Design
rkendrick25
PRO
1
470
Transcript
© Copyright 2020 Relic Inc. All rights reserved. Rubyとパブリッククラウドを活⽤した クラウドネイティブなシステム開発
Rubyとパブリッククラウドの親和性 株式会社Relic エンジニア 臺 健太郎 だい けんたろう ⼩ネタ共有アプリ における
Rails, Nuxt.js, TypeScript, AWS(CFn,CDK,SAM), GCP, Docker, GitHubActions, CircleCI, etc 臺
健太郎 だい けんたろう ⼤阪府出⾝。2019年9⽉にはじめてプログラムを書き、 その後、株式会社Relicに⼊社。(エンジニア歴は2年7ヶ⽉) https://twitter.com/kenkentarouu Speaker紹介 https://www.facebook.com/kentaro.di/ https://www.slide-commenter.com/
3 ⽬次 開発プロダクト概要 昨今の新規事業開発のトレンド Rubyを新規事業開発に使うメリット Ruby/パブリッククラウド連携の分類 Ruby on Rails(Web API)からプッシュ通知配信
Ruby on Rails(Web API)とBigQueryの連携 Pumaとクラウドによる堅牢なRubyアプリケーションの構築 RakeタスクとAmazon ECSを連携したバッチ処理 Sinatraを使ったAWS SAMによるサイドApp開発 まとめ
開発プロダクト概要
まちの⼩ネタ共有アプリ 開発プロダクト概要 Loupeは株式会社NTTドコモの新規事業創出プログラム「39works」から⽣まれ、 株式会社Relicがサービス提供しています。 https://lp.loupe-app.com/
昨今の新規事業開発のトレンド
昨今の新規事業開発のトレンド 短期間での⾼速なプロダクト開発/検証 MVPから本格商⽤までの⼀貫したスケーラビリティ パブリッククラウドの活⽤による低⼯数/低コストで フルマネージドなインフラ運⽤ 既存事業の 短命化 導入期 成長期 成熟期
衰退期 売 上 高 時 間
Rubyを新規事業開発に使うメリット
パブリッククラウドとのインテグレーションを⽬的とした ライブラリが豊富 Ruby Style Guide やRuby on Rails によるコーディングルールが充実 していることで新規事業特有の流動性の中でもコード品質の維持が容易
サーバレスコンピューティングとの相性もよく フェーズに応じたアプリケーションの柔軟なスケールが可能 Rubyを新規事業開発に使うメリット
Ruby / パブリッククラウド連携の分類
⼤分類 クラウド連携 Rubyとの親和性の背景 機能開発 • push通知配信基盤 • AWS SDK データ分析基盤
• FirebaseAnalytics/BigQuery連携 • GCP SDK (データ分析基盤と連携) 実⾏基盤 • サーバーのスケーラビリティ • バッチ処理基盤 • ServerlessApplicationの構築 • Puma + Fargate • Fargate + EventBridge + Rakeタスク • AWS Serverless Application Modelと の連携 • 今回ご紹介するRubyとパブリッククラウド連携の事例整理 Ruby / パブリッククラウド連携の分類
Ruby on Rails(Web API)から プッシュ通知配信
Ruby on Rails(Web API)からプッシュ通知配信 Rubyアプリケーションと プッシュ通知の配信/予約を連携 • ユーザーのアクションをトリガーにした膨⼤なpush通知の安定配信を実現 • アプリの通信遅延の抑⽌のために⾮同期処理基盤SidekiqやRedisを活⽤
AWS Cloud Amazon ECS Amazon ECS Redis ジョブを enque ジョブを deque ジョブを 実⾏ aws-sdk-sns ⾮同期処理 Amazon SNS エンド ポイントA エンド ポイントB トピックA publish publish publish エンド ポイントC subscribe エンド ポイントC APNs(iOS) GCM(Android) 各端末のエンドポイント へpush push配信 push通知のトリガー APP worker
Ruby on Rails(Web API)と BigQueryの連携
• FirebaseAnalytics取得した投稿の閲覧(PV)数などのデータを分析する必要 • BigQueryで保管し、そのデータをRuby on Rails (WebAPI)により呼び出す機構を構築 • gem「 google-cloud-bigquery」を活⽤しシームレスにBigQueryのデータ分析を実現
Ruby on Rails(Web API)とBigQueryの連携 Ruby on Rails (WebAPI) pageviewなどのイベント BigQueryのSQLパラメータを 付加してAPIリクエスト Ruby on Rails(WebAPI)を介して BigQueryの実⾏結果を受け取る 連携 リクエスト・ レスポンス 1⽇⼀回定期的にFAのデータをBigQueryに エクスポートしてBigQuery上で永続化 BigQuery データを蓄積 Firebase Analytics ユーザー 管理画⾯
Pumaとクラウドによる 堅牢なRubyアプリケーションの構築
Rubyでアプリケーションを作る時には同時処理能⼒の⾼いPumaを使うこと ができ、パブリッククラウドと連携することでRubyのエコシステムの恩恵を 受けたスケーラブルなサービスを構築できる Ruby/RackアプリケーションサーバーPumaのクラスタモードを活⽤してプ ロセスを複製してマルチスレッド化した上でスレッド数を増やし、より効率 的に多くのリクエストを受け付けることが可能 Amazon ECSが提供する「AutoScaling」機能を組み合わせることで、⾼いス ケーラビリティを持つシステムを構築 Pumaとクラウドによる堅牢なRubyアプリケーションの構築
• PumaとAmazon ECSが提供する「AutoScaling」機能を組み合わせて効率的にスレッ ド等を管理 概念図 worker: 2 worker = pumaの親プロセスからforkした⼦プロセス
max connections: 1000 ・ ・ ・ ・ 増減 Amazon ECS CPU: 2core thread: 3 pool: 6 Auto Scale DBのmax connectionsを⽬安にworker数やthread数を柔軟に調整 Auto Scaleにより 接続できるthread数を 柔軟に増加 socket 空いているworkerにリクエストを 素早くルーティング Amazon RDS
RakeタスクとAmazon ECSを連携した バッチ処理
• 従来のコンテナや仮想サーバ⾃体にcronを設定する⽅法よりも、より簡単にバッチ処 理の構築/拡張を実現 RakeタスクとAmazon ECSを連携したバッチ処理 AWS Cloud VPC Amazon ECS
Fargate Container Amazon ECR Rule Amazon EventBridge cron(0 11 * * ? *) ECSTaskScheduleで管理 ターゲット push task 更新 バッチ処理タスク実⾏ (Rakeコマンド) GitHub Actions RakeタスクとAmazon ECSの タスクスケジューリングを組み合わせ てバッチ処理⽤のタスクを⾃動配備
Sinatraを使った AWS SAMによるサイドApp開発
• 投稿がSNS等でシェアされた際のリンク先として、OGPを含むwebページを表⽰する webアプリをRuby製WebアプリケーションフレームワークSinatraを使って実装。 Sinatraを使ったAWS SAMによるサイドApp開発 Sinatraの特性を⽣かして、 最⼩限の記述量でアプリを構築 ローカル SAM Dockerfileや
Sinatraのソース Template AWS Cloud Amazon ECR Amazon S3 Sinatraアプリケーションのイメージをpush AWS CloudFormation Stack AWS Lambda Amazon API Gateway 反映 Sinatra AWS SAMをベースにサーバレスアーキテクチャで ホスティングし⾼可⽤性とスケーラビリティを実現
まとめ
Rubyとパブリッククラウドの掛け合わせにより 低コスト/低⼯数で安定した機能開発 豊富なライブラリを活⽤しデータ分析基盤との連携も容易に Rubyのエコシステムとパブリッククラウドの掛け合わせにより 堅牢なバックエンドサーバーを構築 まとめ
株式会社Relicでは今後も新規事業開発にRubyを活⽤し 数々のサービスを世に送り出していきます。 今年、島根県に開設した拠点「松江イノベーションスクエア」 ご清聴ありがとうございました!