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
570
みんなのIMAPを可視化する / Visualize IMAP Everybody
Fukuoka.go#16 で発表した資料です。Junly 14, 2020
linyows
July 14, 2020
Tweet
Share
More Decks by linyows
See All by linyows
研究を支える拡張性の高い ワークフローツールの提案 / Proposal of highly expandable workflow tools to support research
linyows
0
310
非コンテナ環境において宣言的Deploymentを手軽に実現する / Declarative deployment in non-container environments
linyows
0
71
メール送信サーバの集約における透過型SMTP プロキシの定量評価 / Quantitative Evaluation of Transparent SMTP Proxy in Email Sending Server Aggregation
linyows
0
670
透過型SMTPプロキシによる送信メールの可観測性向上: Update Edition / Improved observability of outgoing emails with transparent smtp proxy: Update edition
linyows
2
330
研究の再現性を高める 仕組みをGoでつくる / Creating a system to improve the reproducibility of research using go
linyows
1
170
奥が深いメールのシステム / The depth of Email system
linyows
4
490
IaCにおけるテスト考察 / Tests in IaC
linyows
2
560
リバースエンジニアリングとGoでSlackの認知負荷を下げる / Reducing cognitive load in Slack with Reverse-engineering and Go
linyows
2
340
透過型SMTPプロキシによる送信メールの可観測性向上 / Improved observability of outgoing emails with transparent smtp proxy
linyows
2
1.1k
Other Decks in Programming
See All in Programming
.NET Frameworkでも汎用ホストが使いたい!
tomokusaba
0
170
sappoRo.R #12 初心者セッション
kosugitti
0
260
AWS Organizations で実現する、 マルチ AWS アカウントのルートユーザー管理からの脱却
atpons
0
160
プログラミング言語学習のススメ / why-do-i-learn-programming-language
yashi8484
0
140
Open source software: how to live long and go far
gaelvaroquaux
0
650
第3回 Snowflake 中部ユーザ会- dbt × Snowflake ハンズオン
hoto17296
4
380
新宿駅構内を三人称視点で探索してみる
satoshi7190
2
110
color-scheme: light dark; を完全に理解する
uhyo
6
460
メンテが命: PHPフレームワークのコンテナ化とアップグレード戦略
shunta27
0
190
SpringBoot3.4の構造化ログ #kanjava
irof
3
1k
ML.NETで始める機械学習
ymd65536
0
210
2024年のWebフロントエンドのふりかえりと2025年
sakito
3
260
Featured
See All Featured
Why You Should Never Use an ORM
jnunemaker
PRO
55
9.2k
Speed Design
sergeychernyshev
27
800
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
10
1.3k
Intergalactic Javascript Robots from Outer Space
tanoku
270
27k
Git: the NoSQL Database
bkeepers
PRO
427
65k
The Art of Programming - Codeland 2020
erikaheidi
53
13k
A designer walks into a library…
pauljervisheath
205
24k
Producing Creativity
orderedlist
PRO
344
39k
GraphQLとの向き合い方2022年版
quramy
44
13k
Stop Working from a Prison Cell
hatefulcrawdad
267
20k
Music & Morning Musume
bryan
46
6.4k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
114
50k
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ʕ⊙౪⚆ʔ