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
Smaregi_Real Wantedly 2020.02.18
Search
smaregi
February 18, 2020
Programming
2.4k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Smaregi_Real Wantedly 2020.02.18
smaregi
February 18, 2020
Other Decks in Programming
See All in Programming
コードレビューのボトルネックを"する側"と"される側"の両面から解消する
yub0n
2
1.6k
Agents on Rails - Rails at Scale 2026
irinanazarova
0
560
設計次第でAIコードの読む量は減らせる / designing-for-code-reading
minodriven
35
17k
Next.js: The final boss of Web Performance
guaca
0
250
sbt 2.0: takeoff
eed3si9n
0
160
現場と育てるRailsモデリング 〜Spreadsheetから始めたモデル設計〜
siroemk
2
590
Agentic Software Factoryに、すごく賢いIF文を。 / super smart IF statement into the Agentic Software Factory.
rkaga
8
2.2k
dotNET_vulnclicker_intro.pdf
deka_morita
0
140
re:Inventに行く前に知っておきたい現地参加のノウハウ
nokomoro3
0
420
Workers Cache を知る
syumai
0
360
contenteditable と日本語入力に向き合う
colorful12
0
200
JIS keyboard support in Omarchy
lef237
0
110
Featured
See All Featured
Leadership Guide Workshop - DevTernity 2021
reverentgeek
1
400
brightonSEO & MeasureFest 2025 - Winning Strategies for Black Friday CRO & PPC - Christian Goodrich
cargoodrich
3
870
How People are Using Generative and Agentic AI to Supercharge Their Products, Projects, Services and Value Streams Today
helenjbeal
2
360
Stop Working from a Prison Cell
hatefulcrawdad
274
21k
Building Experiences: Design Systems, User Experience, and Full Site Editing
marktimemedia
1
630
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
Taking LLMs out of the black box: A practical guide to human-in-the-loop distillation
inesmontani
PRO
3
2.5k
Rebuilding a faster, lazier Slack
samanthasiow
85
9.7k
How to Think Like a Performance Engineer
csswizardry
28
2.9k
Fireside Chat
paigeccino
43
4.1k
Testing 201, or: Great Expectations
jmmastey
46
8.3k
Breaking role norms: Why Content Design is so much more than writing copy - Taylor Woolridge
uxyall
1
450
Transcript
Smaregi, Inc.
会社説明
会社説明
会社説明 - スマレジ
会社説明 - スマレジ
会社説明 - スマレジ
会社説明 - スマレジ
会社説明 - スマレジ・ウェイター
会社説明 - スマレジ・ウェイター
会社説明 - スマレジ・タイムカード
会社説明 - スマレジ・タイムカード
自由な出社時間 ブログ手当 副業OK ランチ会 会社説明 - スマレジの制度
None
5つの「しくじり」から学ぶ SaaSプロダクト開発の心得 Smaregi, Inc.
前田利一 自己紹介 Toshikazu Maeda 開発部 部長 2002年よりITエンジニアとしての キャリアをスタート。 JavaによるWeb系アプリ開発に従 事。業務システムや共通基盤系の経
験を積む。2011年にPLUGRAM(現 在のスマレジ)に入社し、「スマレ ジ」の企画・開発における中心メン バーとして参画。現在は、大阪本社 で開発部門のマネージャーとして、 企画・開発に携わる。
坂田秀一 開発部 課長 1998年よりITエンジニアとしての キャリアをスタート。 様々な業務システム開発を経験した のち、2011年にPLUGRAM(現在の スマレジ)に入社し、「スマレジ」 の企画・開発における中心メンバー として参画。現在は、大阪本社の開
発部門サブマネージャーとして、 バックエンド及びインフラの面で開 発に携わる。 自己紹介 Shuichi Sakata
プロダクト プロダクト
1. あぁ、物理名 2. レスポンスを待つ! 3. デフォルト設定 プロダクト
1. あぁ、物理名 2. レスポンスを待つ! 3. デフォルト設定 プロダクト
プロダクト - あぁ、物理名 スマレジ • APIを公開している • 取引データを取得・更新するAPI • 「釣銭」の物理名:
charge
プロダクト - あぁ、物理名 「釣銭」の物理名: charge
プロダクト - あぁ、物理名 charge ?
プロダクト - あぁ、物理名 charge change
プロダクト - あぁ、物理名 1. 一度公開すると変更が難しい 2. 事前のチェックは入念に… 学び
1. あぁ、物理名 2. レスポンスを待つ! 3. デフォルト設定 プロダクト
プロダクト - レスポンスを待つ! スマレジ • APIを公開している • 取引送信API • e.g.
販売を行った時に会員ア プリに通知を送る
プロダクト - レスポンスを待つ! 販売後の処理 1. スマレジサーバーに取引データを 送信・保存 2. ユーザーサーバーに取引データを 送信
プロダクト - レスポンスを待つ! ユーザーサーバーに取引データを 送信する処理 1. 送信先からレスポンスがあれば次 の処理を実行する
プロダクト - レスポンスを待つ! 送信先からレスポンスがあれば…
プロダクト - レスポンスを待つ! レスポンスなければどうするの?
プロダクト - レスポンスを待つ! レスポンスがない理由はたくさんある 1. 送信先のサーバー処理に時間がか かる 2. サーバー間の通信不調
プロダクト - レスポンスを待つ! 処理がタイムアウト(1分)するまで レスポンスを待ってしまう…
プロダクト - レスポンスを待つ! レスポンスがないと… 1. 取引データの保存処理が未完了 2. レジも通信中のまま操作できない 状態が続く…続く、続く
プロダクト - レスポンスを待つ! 1. 外部システムと連携する時は、 非同期通信にする (あたりまえやん) 学び
1. あぁ、物理名 2. レスポンスを待つ! 3. デフォルト設定 プロダクト
プロダクト - デフォルト設定 スマレジ • 在庫数の更新処理が同時に実行さ れる場合がある
プロダクト - デフォルト設定 トランザクション1 トランザクション2 200 199 200 トランザク ション開始
199 200 トランザク ション開始 終了 参照 終了 -1 -1
プロダクト - デフォルト設定 トランザクション1 トランザクション2 200 199 200 トランザク ション開始
199 200 トランザク ション開始 終了 参照 終了 -1 -1
プロダクト - デフォルト設定 トランザクション1 トランザクション2 200 199 200 トランザク ション開始
199 200 トランザク ション開始 終了 参照 ? -1 -1
プロダクト - デフォルト設定 あれ、計算あわへんやん
プロダクト - デフォルト設定 トランザクション分離レベルのデフォルト設定 Oracleなど MySQL 紳士 (マージして書き込み) 暴れん坊 (俺のデータで上書き)
プロダクト - デフォルト設定 そんなん、言うといてもらわんと…
プロダクト - デフォルト設定 1. 想定していた挙動になるように、 トランザクション分離レベルを変 更 対策
プロダクト - デフォルト設定 1. データベースソフトウェアの 挙動の相違を確認する 学び
インフラ インフラ
1. アーカイブ処理の件数が 通常平均の300倍に! 2. DBサーバーのCPU使用率が激 増! インフラ
1. アーカイブ処理の件数が 通常平均の300倍に! 2. DBサーバーのCPU使用率が激 増! インフラ
インフラ - アーカイブ処理の件数が通常平均の 300倍に! 契約A 最終ログイン 2020/01/01 契約C 最終ログイン 2020/01/05
契約B 最終ログイン 2019/12/01 一定日数ログインされていないアカウントをDB サーバーからエクスポートした上で削除する ※ただし、ログインすると自動的にアーカイブ から復帰処理が行われる アーカイブ処理 契約B 最終ログイン 2019/12/01
インフラ - アーカイブ処理の件数が通常平均の 300倍に! 契約A 最終ログイン 2020/01/01 契約B 最終ログイン 2019/12/01
契約C 最終ログイン 2020/01/05 契約B 最終ログイン 2019/12/01 ログインすると自動的にアーカイブから復帰処 理が行われる 復帰処理
インフラ - アーカイブ処理の件数が通常平均の 300倍に! ある日のアーカイブレポート件数 1,200件!!
インフラ - アーカイブ処理の件数が通常平均の 300倍に! 調査を進めていくと・・・
インフラ - アーカイブ処理の件数が通常平均の 300倍に! 各契約者の 最終ログイン日時が 更新されていない!
インフラ - アーカイブ処理の件数が通常平均の 300倍に! ということは・・・
インフラ - アーカイブ処理の件数が通常平均の 300倍に! ログインしているのに、 ログインしていないって 判断されたんですね…
インフラ - アーカイブ処理の件数が通常平均の 300倍に! 復帰するアカウントの数…(-_-;)
インフラ - アーカイブ処理の件数が通常平均の 300倍に! しかし、なぜ更新されなかったのか?
インフラ - アーカイブ処理の件数が通常平均の 300倍に! 最終ログイン日時更新 バッチの cron設定がされていな かった
インフラ - アーカイブ処理の件数が通常平均の 300倍に! なぜ?
インフラ - アーカイブ処理の件数が通常平均の 300倍に! 少し前にサーバー移行を 実施した時にcronの設定 が漏れていたから
インフラ - アーカイブ処理の件数が通常平均の 300倍に! コードでサーバー構築するのを さぼったからですね・・・。
インフラ - アーカイブ処理の件数が通常平均の 300倍に! 1. 日時バッチが正常稼働しているかを モニタリング 2. アーカイブ前に対象件数を把握でき る仕組みを構築
対策
1. アーカイブ処理の件数が 通常平均の300倍に! 2. DBサーバーのCPU使用率が激 増! インフラ
なぜか… CPU使用率が 90%を超える状 態が続いていた インフラ - DBサーバーのCPU使用率が激増!
状況確認すると… • 複数リロード • リロードでHTTPのプロセスは死 んでるのに、PHPのプロセスは増 加する一方 • CPU負荷が高いSQLクエリの多重 実行されていた
インフラ - DBサーバーのCPU使用率が激増!
調査結果… HTTPとPHPは別プロセ スであったため、リロー ドやブラウザを閉じた場 合も、SQLクエリは、実 行中のままとなっていた インフラ - DBサーバーのCPU使用率が激増!
インフラ - DBサーバーのCPU使用率が激増! 1. リロードやブラウザを閉じたこと を検知し、対応するSQLクエリを 強制的に終了する仕組みを構築 対策
インフラ インフラまとめ
インフラ 1. 定期バッチは成功/失敗に限らず監視 2. 負荷テストはサーバー内プロセス数も 確認 3. 影響度が大きい定期バッチは確認と実 施の二段階で事故を防ぐ 4.
サーバー構築は設定漏れ防ぐIaCで 学び
仲間募集 仲間募集
• Webエンジニア • インフラエンジニア • iOSエンジニア 仲間募集 - 募集職種
仲間募集 - お話しましょう しくじり談義希望のかたは、 ぜひブースへお越しください
ご清聴ありがとうございました m(_ _)m