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
みんなのIMAPを可視化する / Visualize IMAP Everybody
Search
linyows
July 14, 2020
Programming
2
510
みんなのIMAPを可視化する / Visualize IMAP Everybody
Fukuoka.go#16 で発表した資料です。Junly 14, 2020
linyows
July 14, 2020
Tweet
Share
More Decks by linyows
See All by linyows
リバースエンジニアリングとGoでSlackの認知負荷を下げる / Reducing cognitive load in Slack with Reverse-engineering and Go
linyows
2
81
透過型SMTPプロキシによる送信メールの可観測性向上 / Improved observability of outgoing emails with transparent smtp proxy
linyows
2
700
プロダクションで使うGo Pluginの利便性とパフォーマンス性 / Simplicity and Performance of Go plugin for Production
linyows
0
310
求められるソフトウェアエンジニア像とキャリア戦略 / Engineers and Career Strategies Required Now
linyows
2
320
CloudflareのCAPTCHAを使って ユーザ体験を下げず不正利用を排除する / Cloudflare's captcha case study that does not degrade ux
linyows
0
240
なぜNotionを使うのか2022 / Why use notion as our workspace in 2022
linyows
3
5.7k
Denoの仕組み / How deno works as TypeScript runtime
linyows
2
660
透過型SMTPプロキシによるメール送信集約とキュー輻輳回避の検討 / A Study on Aggregation of Email Transfer and Avoidance of QueueCongestion using a Transparent SMTP Proxy
linyows
0
2.1k
Goでつくる透過型SMTPプロキシ / Transparent SMTP proxy in Go
linyows
1
820
Other Decks in Programming
See All in Programming
TypeScriptとGraphQLで実現する 型安全なAPI実装 / TSKaigi 2024
hokaccha
5
2.7k
『Railsオワコン』と言われる時代に、なぜブルーモ証券はRailsを選ぶのか
free_world21
2
470
Webアプリをできるだけコードを手書きしないで作ってみる
tomokusaba
2
230
GitHub Actionsの痒いところを埋めるサードパーティーランナー
dora1998
1
240
Jetpack Composeとデザインシステム
rmakiyama
0
230
Direct Style Effect Systems The Print[A] ExampleA Comprehension Aid
philipschwarz
PRO
0
410
Open AI APIを使う前に知っておきたいアカウントTier の話
akki_megane
0
130
TypeScriptでもLLMアプリケーション開発 / LLM Application In Typescript
rkaga
5
1.3k
Going beyond Apache Parquet's default settings
xhochy
0
150
The Design of Everyday APIs - PyCon 2024
roguelynn
0
150
Three ways to use AI on Android: The Good, the Bad and the Ugly
marxallski
0
120
ペパボOpenTelemetry革命
pyama86
2
740
Featured
See All Featured
Building Better People: How to give real-time feedback that sticks.
wjessup
356
18k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
228
16k
What the flash - Photography Introduction
edds
64
11k
How To Stay Up To Date on Web Technology
chriscoyier
782
250k
How to name files
jennybc
65
94k
Documentation Writing (for coders)
carmenintech
60
4k
The Brand Is Dead. Long Live the Brand.
mthomps
49
30k
Build The Right Thing And Hit Your Dates
maggiecrowley
25
2k
Designing with Data
zakiwarfel
96
4.8k
Fantastic passwords and where to find them - at NoRuKo
philnash
39
2.5k
Building an army of robots
kneath
300
41k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
23
1.7k
Transcript
Fukuoka.go#16 Tomohisa Oda / July 14, 2020 VisualizeIMAP Everybody
Fukuoka.go#16 @linyows Blog: tomohisaoda.com Affiliation: GMO pepabo, inc.
Fukuoka.go#16 ๏ ϗεςΟϯάࣄۀ෦Senior Engineering Lead ࣄۀ෦ͷCTOVPoEͷΑ͏ͳͷ ๏ ϖύϘݚڀॴभେֶڞಉݚڀ 2020Պݚඅ࠾IUUQTLBLFOOJJBDKQHSBOU,",&/)*130+&$5, ܰྔίϯςφʹΑΔେنߴूੵϝʔϧϗεςΟϯάج൫ʹ͓͚Δૹ৴ػೳͷߴػೳԽ
In Pepabo…
Fukuoka.go#16 Private Projects ΞϓϦέʔγϣϯ͕ࣗϦϙδτϦ͔Β࠷৽ͷίʔυΛݕ ͯࣗ͠ಈͰσϓϩΠͱσϦόϦʔΛߦ͏πʔϧ MJOVYͷVTFS໊લղܾΛ(JU)VCͷ5FBNϝϯόʔϦϙδτ ϦͷΞΫηεݖݶऀ͔Βߦ͏πʔϧ
Fukuoka.go#16 Pepaboϗετ͍ͯ͠·͢
Fukuoka.go#16 ๏ Domain — DNS ๏ Web — HTTP, SSH,
FTP and WebDav… ๏ Mail — SMTP, POP, IMAP… ๏ Database — (MySQL, SQLite…) ϩϦϙοϓϔςϜϧ͕ϗετ͍ͯ͠Δͷ ͍ΖΜͳٕज़Λѻ͍ͬͯ·͢
Fukuoka.go#16 ๏ Domain — DNS ๏ Web — HTTP, SSH,
FTP and WebDav… ๏ Mail — SMTP, POP, IMAP… ๏ Database — (MySQL, SQLite…) ϩϦϙοϓϔςϜϧ͕ϗετ͍ͯ͠Δͷ ຊίίͷ
Fukuoka.go#16 Mail ͍ͬͯ·͔͢ʁ
Fukuoka.go#16 ͍·Ͳ͖ϝʔϧʁ͔ͭͬͯͳ͍ʁ͍͍͍ʜ — Chat Type — Messaging Type
Fukuoka.go#16 ΄Βɺࢥ͍ग़͠·͔ͨ͠ʁͪΌΜͱ͍ͬͯ·͢Ͷʁ
Fukuoka.go#16 େมਃ͠༁͋Γ·ͤΜ
Fukuoka.go#16 େମ(NBJMPS(4VJUFͰ͢ΑͶʁ
Fukuoka.go#16 ͍ʹ͑͠ͷٕज़ͱ͍͑ɺMailʹมΘΔ ΦʔϓϯͳMessagingγεςϜͳ͍
Fukuoka.go#16 MailͷΈ
Fukuoka.go#16 Architecture RFC 5598 ʹ͋Γ·͕͢ʜ
Fukuoka.go#16 Architecture ͬͱγϯϓϧͳͭ ͜ΕͰ࠷খߏͳͷͰࠜຊతʹ ΣϒΑΓෳࡶ Mail Submission Agent :587 Mail
Transferring Agent :25 Mail Delivery Agent :993 Postfix Postfix Dovecot ✉ ✉ SMTP SMTP LMTP IMAP
Fukuoka.go#16 ϩϦϙοϓϔςϜϧʹ͍ͭͯ
Fukuoka.go#16 Our Status 120 100k 2.2k Over /min ͜ͷΑ͏ͳنײ
Fukuoka.go#16 Our Status 120 100k 2.2k Over /min ͜ͷΑ͏ͳنײ ϝʔϧαʔόʹΔ
ϝʔϧΞΧϯτ Max ϝʔϧαʔόͷ ؒʹૹΔϝʔϧ ௨ʢDeliveredʣ
Fukuoka.go#16 Our Challenges ๏ ૹ৴ ๏ IP BanɺBlack ListೖΓ ΞΧϯτͬऔΓෆਖ਼ར༻
ѱҙͷͳ͍େྔϝʔϧ৴ ๏ ड৴ ๏ ϑΟογϯάɺΟϧεɺεύϜϝʔϧഉআ ๏ Disk I/Oෛՙ
Fukuoka.go#16 ๏ ૹ৴ ๏ IP BanɺBlack ListೖΓ ΞΧϯτͬऔΓෆਖ਼ར༻ ѱҙͷͳ͍େྔϝʔϧ৴ ๏
ड৴ ๏ ϑΟογϯάɺΟϧεɺεύϜϝʔϧഉআ ๏ Disk I/Oෛՙ Our Challenges
Fukuoka.go#16 ๏ ͍͍ετϨʔδΛങ͑ղܾ͢Δ ๏ Ձ֨ଳͷαʔϏεͳͷͰݫ͍͠ ๏ ݱঢ়ɺෛՙͷߴ͍ΞΧϯτΛҠઃͯ͠Ϧιʔε ফඅΛۉ͢ઓུ ๏ ࣌ʹSFTUBSUʜ
IMAP Disk I/O
Fukuoka.go#16 ๏ ओʹPrometheusΛ͍ͬͯΔ ๏ ֤Proxyϝʔϧαʔόʹ͍Εͨnode_exporterʹΑΔϦιʔεࢹ ๏ mtailͰϝʔϧΩϡʔେखϓϩόΠμʔͷόϯεϝʔϧͷࢹ ๏ blackbox_exporterͰsmtp, pop,
imapͷPortࢹ ݱঢ়ͷࢹेͰͳ͍ Monitoring
Fukuoka.go#16
Fukuoka.go#16
Fukuoka.go#16
Fukuoka.go#16 imap_exporterΛ࡞ͬͨ
Fukuoka.go#16 ๏ ϛυϧΣΞʹґଘ͠ͳ͍ΑΓநతͳϓϩτίϧϨϕϧͳϝτϦΫεΛऔಘ͢Δ ๏ Mail User Agent͕ඞͣߦ͏Ұ࿈ͷίϚϯυΛൃߦ͔͔ͯͬͨ࣌ؒ͠ΛͱΔ ๏ Connection /
Login / List / Select / Fetch / Logout ๏ IMAP ClientɺطଘϞδϡʔϧΛ͏ͷͰͳࣗ͘લͰ࣮͢ΔʢIMAPͷؾ࣋ͪʹͳ Δʣ imap_exporter
Fukuoka.go#16 ๏ RFC2060ΛΑʔ͠ಡΉͧͱ ࢥͬͨΒ్தͰ૬ͳϘϦϡʔ Ϝ͕͋Δ͜ͱʹؾͮ͘ ๏ SMTP͕ϖʔδ΄Ͳʹରͯ͠ ϖʔδ IMAPͷ༷RFC2060
Fukuoka.go#16 ๏ ͜Μͳ͜ͱ͋Ζ͏͔ͱɺຊ୨͔ΒऔΓग़͢ ిࢠϝʔϧϓϩτίϧʕجຊɾ࣮ɾӡ༻ 2000/11
Fukuoka.go#16 ๏ IMAPʹͭͷεςʔτ͕͋Γ ๏ ະೝূ ๏ ೝূࡁ ๏ બࡁ ๏
ϩάΞτ ๏ ͦΕͧΕͷεςʔτʹ͓͍ͯΫϥΠΞϯτ͕ൃߦ͢ΔλάΛͬͯαʔόʔͱΫϥΠΞϯ τͷίϛϡχέʔγϣϯΛߦ͏ IMAP ίϚϯυ λά
Fukuoka.go#16 IMAP ΫϥΠΞϯτͷ࣮
Fukuoka.go#16 Ϩεϙϯεʹλά͕͋Δ͔Ͳ͏͔Λ ఆ͍ͯ͠Δ͚ͩͷγϯϓϧͳ࣮
Fukuoka.go#16 telnetopensslΛ͏Α͏ͳΠϝʔδͰίϚϯυΛ࣮ߦ͢Δ
Fukuoka.go#16 ๏ ࠨͷάϥϑखݩ͔ΒαϯϓϧΞΧϯτʹ ଓͨ͠ྫ ๏ ͜ΕΛશͯͷϝʔϧαʔόʹಋೖ͢Δ༧ఆ ๏ Disk I/OෛՙʹରԠ͢Δࢳޱ͕Έ͔ͭΕͱ͍ ͏ఔ
๏ IMAPͷঢ়ଶΛՄࢹԽ͢Δ͜ͱʹؒҧ͍ͳ͍ ๏ Ұ࿈ͷಈ࡞ΛFirst Loading Latencyͱ͍͏໊ લΛ͚ͭͨ First Loading Latency
Fukuoka.go#16 ๏ imap_exporterΛ࡞ͬͯMail Delivery AgentΛՄࢹԽ͠Α͏ͱ͍ͯ͠Δ ๏ IMAPϓϩτίϧSMTPͱҧͬͯ૬ෳࡶ ๏ ϓϩτίϧ༷Λཧղ͢Δ͜ͱͰGoඪ४ϥΠϒϥϦͰͬ͘͞ͱΫϥΠΞϯτ࣮Ͱ͖ͨ ͜ͷΑ͏ʹɺEngineeringͰϗεςΟϯάͷϝʔϧΛࢧ͍͑ͯ·͢ɻ࠷ۙɺMREͱ͍͏৬छ
ΛͿ্͍ͪ͛ͯ·͢ʂʂʂʂ Conclusion
Fukuoka.go#16 Messaging Reliability EngineeringʢMREʣɺਓͱਓͱ͕ιϑτΣΞΛ௨ͯ͡ ίϛϡχέʔγϣϯΛ͢ΔγεςϜʹ͓͍ͯɺεέʔϥϒϧͰ৴པੑͷߴ͍ιϑτ ΣΞγεςϜΛ࡞͠·͢ɻMREɺΠϯϑϥετϥΫνϟͱӡ༻ΛదԠͤ͞Δ Site Reliability EngineeringͷจԽΛMessagingͰड͚ܧ͍ͩͷͰ͢ɻجຊ తͳ͜ͱSREͱಉ͡Ͱ͕͢ɺѻ͏ٕज़͕ओʹϝʔϧͰɺϝʔϧͷӡ༻ΛιϑτΣ
ΞͰΤϯδχΞϦϯά͢Δ͜ͱʹͳΓ·͢ɻʮMREϖύϘʯͰݕࡧʂ Messaging Reliability Engineeringͱ
Fukuoka.go#16 Thank youaʕ⊙౪⚆ʔ