Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
シューマイ_Tech_Lead_Engineerから最新技術を学べ_Rails編_登壇資料.pdf
Search
最新技術のエンジニア勉強会!シューマイ! ~Tech Lead Engineer~
May 13, 2020
480
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
シューマイ_Tech_Lead_Engineerから最新技術を学べ_Rails編_登壇資料.pdf
最新技術のエンジニア勉強会!シューマイ! ~Tech Lead Engineer~
May 13, 2020
More Decks by 最新技術のエンジニア勉強会!シューマイ! ~Tech Lead Engineer~
See All by 最新技術のエンジニア勉強会!シューマイ! ~Tech Lead Engineer~
Rails_and_spice
shuuumai
2
430
_何となく_世界からオファーが来る_エンジニアのなり方LT.pdf
shuuumai
1
510
シェアリングサービスのトランザクションを支えるGo
shuuumai
0
250
循環的複雑度80超えの現行システムに Laravel × オニオンアーキテクチャ で立ち向かった話(栗原 史明 氏*株式会社うるる)
shuuumai
1
2.4k
シューマツワーカー サービス資料
shuuumai
0
600
POL流レバレッジの効いたエンジニア組織を作る
shuuumai
1
490
REACT_NATIVE_EXPOで行うアプリの簡単最速運用_渡邊様_登壇資料_.pdf
shuuumai
0
330
Featured
See All Featured
Reality Check: Gamification 10 Years Later
codingconduct
0
2.2k
Being A Developer After 40
akosma
91
590k
The Spectacular Lies of Maps
axbom
PRO
1
820
Efficient Content Optimization with Google Search Console & Apps Script
katarinadahlin
PRO
1
630
Organizational Design Perspectives: An Ontology of Organizational Design Elements
kimpetersen
PRO
1
750
Data-driven link building: lessons from a $708K investment (BrightonSEO talk)
szymonslowik
1
1.1k
How to Think Like a Performance Engineer
csswizardry
28
2.7k
Thoughts on Productivity
jonyablonski
76
5.2k
Mobile First: as difficult as doing things right
swwweet
225
10k
Google's AI Overviews - The New Search
badams
0
1k
Heart Work Chapter 1 - Part 1
lfama
PRO
7
36k
Agile that works and the tools we love
rasmusluckow
331
22k
Transcript
(C) Link and Motivation Group Railsのレールに乗ってたら鈍行だった話 ~ 大量データでもサクサク動くアプリケーションになるために ~ リンクアンドモチベーション
江上 真人
(C) Link and Motivation Group 2 リンクアンドモチベーション 江上 真人 役割:
テックリード&EM 趣味:料理 twitter: @MasatoEgami やってること: - モチベーションクラウドシリーズの設計・ 開発 - 性能改善プロジェクトのPM (※) 当社調べ。2019年6月時点。 はじめに 自己紹介
(C) Link and Motivation Group 目次 1. モチベーションクラウドシリーズのご紹介 2. 今日のテーマ
3. 最後に 3
1. モチベーションクラウドシリーズのご紹介
(C) Link and Motivation Group 5 すべての組織が、これで変わる - モチベーションクラウドシリーズ -
2016年リリース モチベーションクラウドは、組 織 状 態を診 断 ・ 改 善 することができる、 国 内 シェア No.1 (※)の組織改善クラウドサービスで す。 2019年リリース コミュニケーションクラウドは紙の社 内 報 やイントラネットに 代 わる、 社 内 コミュニ ケーションプラットフォームです。 2019年リリース チームワーククラウドはミドルマネジメント・ チームマネジメント強 化を実 現する、オー ルインワンコラボレーションツールです。 (※) 当社調べ。2019年6月時点。 モチベーションクラウドシリーズのご紹介 あらゆる組織の エンゲージメント向上をめざすクラウドSaaSです
(C) Link and Motivation Group モチベーションクラウドシリーズのミッション /ビジョン Mission すべての組織をこれで変える Vision
世界の経営指標を変える 6
(C) Link and Motivation Group モチベーションクラウドシリーズの価値 モチベーションクラウドシリーズには 二つの価値があります 7 お客様にとっての
モチベーションクラウドシリーズ 社会にとっての モチベーションクラウドシリーズ 組織状態を可視化し 離退職を防ぐ等、経営改善をする 楽しく働く人を増やし 世の中からブラック企業なくす
(C) Link and Motivation Group 月会費売上推移 モチベーションクラウドの 売り上げ(月額費)は右肩上がり 8 1万人以上規模の企業(いわゆるエンタープライズ企業)にも導入され始めてい
る
(C) Link and Motivation Group なぜそんな話をするのか? モチベーションクラウドでは大手顧客対応として 性能改善プロジェクト進行中 9 2019年10月 調査開始
2019年12月 改修も開始 2020年4月 1万人超の顧客でも利用可能に
2. 今日のテーマ
(C) Link and Motivation Group 今日のテーマ 11 Railsのレールに乗ってたら鈍行だった話 ~ 大量データでもサクサク動くアプリケーションになるために
~ Theme
(C) Link and Motivation Group Railsのレールに乗ってたら鈍行だった話 1 問題になった場所 12 1.
Railsが非効率な書き方になってる 2. APIから情報返しすぎてる 3. 統計情報を毎回計算してる 4. 非同期処理が直列になってる 5. 大量処理を同期的にやってる 6. ロックでエラーになる
(C) Link and Motivation Group Railsのレールに乗ってたら鈍行だった話 1 問題になった場所 13 1.
Railsが非効率な書き方になってる 2. APIから情報返しすぎてる 3. 統計情報を毎回計算してる 4. 非同期処理が直列になってる 5. 大量処理を同期的にやってる 6. ロックでエラーになる
(C) Link and Motivation Group 今日のテーマ 14 Railsが非効率な書き方になってる ~ 更新編
~
(C) Link and Motivation Group ActiveRecordのvalidation問題 15 N+1問題
(C) Link and Motivation Group ActiveRecordのvalidationへの対応 16 一括処理したい部分validation:falseにするorそもそも定義しないで、Validatorを 別途つくる
(C) Link and Motivation Group ActiveRecordのvalidationへの対応 17 activerecord-importも使ってクエリの発行数を抑える
(C) Link and Motivation Group ActiveRecordのcallback関数問題 18 N+1問題
(C) Link and Motivation Group ActiveRecordのcallback関数への対応 19 validationと同様、基本使わずcallbackがかかるようなメソッドを使わない
(C) Link and Motivation Group 今日のテーマ 20 Railsが非効率な書き方になってる ~ 参照編
~
(C) Link and Motivation Group ActiveRecordのオブジェクトがでかい問題 21 なにも指定しないと全column取得する ActiveRecordのオブジェクトは単純な数値や文字列よりかなり大きいのでメモリ も逼迫する
(C) Link and Motivation Group ActiveRecordのオブジェクトがでかい問題への対応 22
(C) Link and Motivation Group n+1問題 23
(C) Link and Motivation Group n+1問題への対応 24 includes, preload, eager_loadでクエリをまとめる
(C) Link and Motivation Group n+1問題への対応(見つけ方) 25 bullet導入
(C) Link and Motivation Group DBのindex問題 26 Rails特有の問題ではないけど、開発初期にリリース重視で開発して ると見落としがち
(C) Link and Motivation Group DBのindex問題への対応 27
(C) Link and Motivation Group DBのindex問題への対応(見つけ方) 28 1. データベースのslow.logをみる 2.
EXPLAINで検証しつつ、適切なindexをはる ※mysqlだとlog_queries_not_using_indexesをONにすればindex を使っていないクエリをslow.logに吐くことができる だれか Gemとか知ってたら逆に教えてください
(C) Link and Motivation Group そのほか問題になった場所への対応 29 1. Railsが非効率な書き方になってる 2.
APIから情報返しすぎてる 3. 大量処理を同期的にやってる 4. 統計情報を毎回計算してる 5. 非同期処理が直列になってる 6. ロックでエラーになる 設計を変える - 統計テーブル作る - アーキテクチャ変える - テーブルの責任を分離する - indexはる 仕様を変える - pagingする - 非同期にする コードを変える
(C) Link and Motivation Group 性能改善プロジェクトをやっていて感じること 30 - コードだけで解決できる問題は少ない 性能改善前、n+1など大量に出ていたのでそれが原因であること
が大半だろうと思っていたが、結局DB設計変更しないといけない ケースが3割(工数では5割)をしめた - 設計変えるより仕様変える方が大変 SaaSということもあり、仕様変更は各所への連携など開発外の タスクが増えるので大変 開発初期からpagingなど想定可能なものは対応しといた方がい い
3. 最後に
(C) Link and Motivation Group 募集職種 下記職種を募集しています 【仕事内容】 ・フロントエンドの設計、開発、計測 ・高速に動作して使いやすく、再利用可能なUIコンポー
ネントライブラリの開発 ・StoryBook, Cypress, webpackなどを利用したフロン トエンド開発基盤の構築や改善 ・最近取り組んでいること https://qiita.com/advent-calendar/2019/mcs 【必須スキル】 ・SPAのフロントエンドの設計、開発、運用スキル ・AWSやGCPなどのクラウド上でのWebアプリケーショ ンの開発経験 ・フロントエンドにおけるユニットテスト、E2Eテストの 知識 ・リンクアンドモチベーションのビジョン・ミッションへの共感 ・継続した技術への興味と学習習慣 フロントエンドエンジニア (モチベーションクラウド) 【仕事内容】 ・モチベーションクラウドのAPI、Webアプリケーション の設計、開発、テスト、計測、運用 ・アプリケーション要件に基づいたアーキテクチャの設 計、ミドルウェアの選定 ・パフォーマンスチューニング、モニタリング環境の構築 ・最近取り組んでいること https://qiita.com/advent-calendar/2019/mcs 【必須スキル】 ・RailsなどのWAFを用いたWebサービスの開発経験 ・AWSやGCPなどのクラウド上でのWebアプリケーションの 開発経験 ・ソフトウェアのパフォーマンスに関する知識 ・リンクアンドモチベーションのビジョン・ミッションへの共感 ・継続した技術への興味と学習習慣 サーバーサイド エンジニア (モチベーションクラウド)
(C) Link and Motivation Group 募集職種 下記職種を募集しています 【仕事内容】 ・アプリケーションやミドルウェアの運用 ・アプリケーションに関わるセキュリティの設計と運用
・開発環境、リリースフロー、テスト環境の整備 ・最近取り組んでいること https://qiita.com/advent-calendar/2019/mcs 【必須スキル】 ・TCP/IP, HTTP などのネットワークプロトコルやアーキテ クチャに対する理解 ・少なくとも1つ以上の言語を用いたソフトウェア開発経験 ・AWSやGCPなどのクラウド上でのWebアプリケーションの 運用経験 ・Webアプリケーションセキュリティに関する知識 ・リンクアンドモチベーションのビジョン・ミッションへの共感 ・継続した技術への興味と学習習慣 SRE (モチベーションクラウド) 【仕事内容】 ・品質ポリシーの策定 ・開発するサービスやアプリケーションに対するテスト分 析、設計、実装 ・テスト自動化の促進や、開発支援ツールの開発・運用・支 援業務 ・最近取り組んでいること https://qiita.com/advent-calendar/2019/mcs 【必須スキル】 ・ソフトウェア品質やソフトウェアテストに関する知識、経 験 ・ソフトウェアのテスト設計経験 ・テスト自動化(Web/モバイルネイティブアプリケーショ ン)の知識、経験 ・Webアプリケーションセキュリティに関する知識 ・リンクアンドモチベーションのビジョン・ミッションへの共感 ・継続した技術への興味と学習習慣 QAエンジニア (モチベーションクラウド)