Lock in $30 Savings on PRO—Offer Ends Soon! ⏳
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
失敗LT祭! 〜俺の話を聞いてくれ〜 メモリだいじに! / 20190220_hedgehog...
Search
FORTE
February 20, 2019
Technology
0
200
失敗LT祭! 〜俺の話を聞いてくれ〜 メモリだいじに! / 20190220_hedgehogs_miss_lt
FORTE
February 20, 2019
Tweet
Share
More Decks by FORTE
See All by FORTE
異夢同船〜異なる夢を持ちチームで作業する〜_サンプル/imudousen_sample
fortegp05
0
27
ラプラスの箱を開ける ~レトロゲームから学んだ工夫~/retro_games_any_03_01
fortegp05
0
45
ジモtechVol1_LT_フルリモート"され"力/jimotech_lt_1
fortegp05
0
39
超入門!サーバーサイドKotlin/sski1
fortegp05
0
150
MicronautでgRPCに入門!実践!サーバーサイドKotlin/sskm2_sample
fortegp05
0
70
アンチパターンから学ぶコミュニケーション/lcap_sample
fortegp05
0
150
Micronautで入門!実践!サーバーサイドKotlin/sskm1_sample
fortegp05
0
90
ITエンジニアとして生きる技術/tlie-sample
fortegp05
0
400
入門!実践!Kotlin Compose Multiplatformでデスクトップアプリ開発! / cmd_01_sample
fortegp05
0
600
Other Decks in Technology
See All in Technology
ML PM Talk #1 - ML PMの分類に関する考察
lycorptech_jp
PRO
1
810
GitHub Copilotを使いこなす 実例に学ぶAIコーディング活用術
74th
3
2.7k
AI駆動開発における設計思想 認知負荷を下げるフロントエンドアーキテクチャ/ 20251211 Teppei Hanai
shift_evolve
PRO
2
350
Edge AI Performance on Zephyr Pico vs. Pico 2
iotengineer22
0
140
[デモです] NotebookLM で作ったスライドの例
kongmingstrap
0
140
生成AI時代におけるグローバル戦略思考
taka_aki
0
130
生成AI活用の型ハンズオン〜顧客課題起点で設計する7つのステップ
yushin_n
0
130
SSO方式とJumpアカウント方式の比較と設計方針
yuobayashi
7
600
今年のデータ・ML系アップデートと気になるアプデのご紹介
nayuts
1
290
乗りこなせAI駆動開発の波
eltociear
1
1.1k
ガバメントクラウド利用システムのライフサイクルについて
techniczna
0
190
年間40件以上の登壇を続けて見えた「本当の発信力」/ 20251213 Masaki Okuda
shift_evolve
PRO
1
120
Featured
See All Featured
The Pragmatic Product Professional
lauravandoore
37
7.1k
The Hidden Cost of Media on the Web [PixelPalooza 2025]
tammyeverts
1
100
Understanding Cognitive Biases in Performance Measurement
bluesmoon
32
2.7k
How GitHub (no longer) Works
holman
316
140k
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.4k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.3k
Mobile First: as difficult as doing things right
swwweet
225
10k
Rails Girls Zürich Keynote
gr2m
95
14k
The Art of Programming - Codeland 2020
erikaheidi
56
14k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
55
3.1k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
35
2.3k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
16k
Transcript
失敗LT祭!〜俺の話を聞いてくれ〜 メモリだいじに! 2019/02/20 FORTE(@FORTEgp05)
自己紹介 FORTE (フォルテ) SIer → Web系 → スマホアプリ開発者。 2
今日話す内容 いのちメモリだいじに! Webシステム開発におけるメモリによる失敗話 3
メモリだいじに! ・SIer時代に新人でアサインされた案件。 2007年当時のお話。 ・業務向けのWebシステム開発に途中から参加。 ・イントラネットのみ公開のWebシステム。 200人ほどの部署向け。 4
システム構成概要 5 IE6 HTML JavaScript Java Servlet Apache Tomcat PostgreSQL
7.x
当時発生していたふたつの問題 6
当時の問題①データ取得が遅い 7 とある機能「機能A」でDBからデータ取得するのが遅い…。 原因はデータ量が多いため。 \ユックリ/
当時の問題②データ量が多すぎてIEが死ぬ 8 機能Aの検索条件によってはデータ量が多すぎてIE6が死ぬ。 (真っ白のままフリーズする) オオスギ
当時の問題 9 閃いた! DBが遅いなら、サーバーのメモリにデータを積めば 良いんじゃね!? 先輩
解決策 10 メモリ ServletContext.setAttribute()
解決策 11 取得が遅いデータは あらかじめメモリに積んでおく
解決策 12 DBから取得しないので早い! \ハヤーイ/
やったー!解決した! 13
やったー!解決した!んなわきゃない 14
失敗… 15 ・DBが遅いのはまずDBでチューニングすべき 当時は技術力不足で無理だった…。
失敗… 16 ・DBが遅いのはDBでチューニングすべき 当時は技術力不足で無理だった…。 ・メモリに対する影響を軽視しすぎ
失敗… 17 ・DBが遅いのはDBでチューニングすべき 当時は技術力不足で無理だった…。 ・メモリに対する影響を軽視しすぎ 4GBのサーバーに500MBほど保存していた…。 \メモリ4GB/
失敗… 18 ・IEが死ぬ問題は解決できてない ことあるごとにお客さんに怒られてました…
さらなる失敗 19
さらなる失敗 20 機能Aと同じような仕様の機能が3つ増えた。
さらなる失敗 21 機能Aと同じような仕様なので、 何も考えずに機能Aと同じような実装をした。
さらなる失敗 22
さらなる失敗 23
さらなる失敗 24
さらなる失敗 25 メモリ4GBのサーバーに、 500MB×4機能分の2GBのデータが常駐。
さらなる失敗 26 アクセス負荷でよくサーバーが応答不能に… メモリナイ
当時の問題②データ量が多すぎてIEが死ぬ 27 機能Aの検索条件によってはデータ量が多すぎてIE6が死ぬ。 (真っ白のままフリーズする) 最初の問題2つ目も解決してない オオスギ
お客さん「おれは怒ったぞー!!!!」 28
根本対策 29 機能Aに関しては全く新しい仕組みで実装し直した。 フロント、バック、DB、バッチ処理全てを一新。 これを半年で実施。
根本対策 30 機能Aに関しては全く新しい仕組みで実装し直した。 フロント、バック、DB、バッチ処理全てを一新。 これを半年で実施。 \デスマーチ/
失敗からの教訓 ・問題解決のためではなくユーザーのため 安易な手段に飛びつく前にちゃんと考える ・仮対策なら本対策するまで追い続ける ・メモリと性能は要注意 最近は技術の進歩でそこまででもないが、 少なくて早いに越したことはない 31
宣伝 Twitter:@FORTEgp05 Podcast:『aozora.fm』 お便り募集中! 技術書典6:「はじめる技術 つづける技術」を頒布予定! サークル「おからぼ」さんにて委託。 詳しくは#はじめる技術つづける技術にて! 32
おわり