精緻な解析と制御が可能な恒常性のあるメール基盤の設計 / IOT40 matsumotory

精緻な解析と制御が可能な恒常性のあるメール基盤の設計 / IOT40 matsumotory

精緻な解析と制御が可能な恒常性のあるメール基盤の設計
高集積マルチアカウント基盤と流量制御の両立

松本亮介, 小田知央 (ペパボ研究所), 笠原義晃, 嶋吉隆夫, 金子晃介 (九州大学),
栗林健太郎 (ペパボ研究所), 岡村耕二 (九州大学)
2018.03.05 情報処理学会 第40回インターネットと運用技術研究発表会

2b692bd83f4418103142a053ecf5ff59?s=128

MATSUMOTO Ryosuke

March 05, 2018
Tweet

Transcript

  1. ߴूੵϚϧνΞΧ΢ϯτج൫ͱྲྀྔ੍ޚͷཱ྆ দຊ྄հ, খా஌ԝ (ϖύϘݚڀॴ), ּݪٛߊ, ౢ٢ོ෉, ۚࢠߊհ (۝भେֶ), ܀ྛ݈ଠ࿠ (ϖύϘݚڀॴ),

    Ԭଜߞೋ (۝भେֶ) 2018.03.05 ৘ใॲཧֶձ ୈ40ճΠϯλʔωοτͱӡ༻ٕज़ݚڀൃදձ ਫ਼៛ͳղੳͱ੍ޚ͕Մೳͳ ߃ৗੑͷ͋Δϝʔϧج൫ͷઃܭ
  2. 1. എܠͱ໨త 2. ؔ࿈ݚڀ 3. ఏҊख๏ͷઃܭͱ࣮ݧతͳ࣮૷Ҋ 4. ·ͱΊͱࠓޙͷ՝୊ 2 ໨࣍

  3. 1. എܠͱ໨త

  4. • ࠓ΋޿͘࢖ΘΕ͍ͯΔϝʔϧ • ϝʔϧαʔϏεࣄۀऀ΋·ͩ·ͩݱ໾ • ϋʔυ΢ΣΞίετΛޮ཰ར༻͢ΔͨΊʹΞΧ΢ϯτ΍υϝΠϯΛߴूੵԽ • େྔૹ৴ɺspamϝʔϧɺϝʔϧ஗ԆɺΞΧ΢ϯτ৐ͬऔΓ౳ • ݁ՌతʹγεςϜ؅ཧɾϢʔβαϙʔτίετͷ૿Ճ

    • ಛఆͷΞΧ΢ϯτ΍υϝΠϯͷϦιʔε΍ྲྀྔ઎༗ʹΑΔෆ҆ఆੑ͕՝୊ 4 ݚڀͷഎܠ
  5. • ߴूੵԽͷͨΊʹ୯Ұͷαʔόϓϩηε܈Ͱෳ਺ͷυϝΠϯΛॲཧ • υϝΠϯʢԾ૝υϝΠϯʣ୯ҐͰͷ੍ޚػೳ͕ݶఆత • શͯͷυϝΠϯʹରͯ͠ಉҰͷಉ࣌઀ଓ਺౳ͷ੍ݶΛ੩తʹઃఆ • ੍ݶա৒ʹΑΓαʔόϦιʔεΛे෼ʹ࢖͍੾Δ͜ͱ͕೉͍͠ • υϝΠϯ୯ҐͰαʔόϓϩηε܈Λىಈ

    • ϝʔϧιϑτ΢ΣΞ΍ϓϩηε୯Ґͷશͯͷ੍ޚઃఆ͕Մೳ • ϓϩηε਺͕υϝΠϯ਺ʹґଘͯ͠ߴूੵʹऩ༰Ͱ͖ͳ͍ 5 ैདྷख๏ɿߴूੵϚϧνΞΧ΢ϯτܕͷྲྀྔ੍ݶ
  6. • υϝΠϯ୯ҐͰαʔόϓϩηεΛىಈͤͭͭ͞ߴूੵԽΛ࣮ݱ͢Δج൫ • ͱ͋ΔηογϣϯͰҰఆظؒىಈ͠ɺঢ়ଶͷมԽʹૉૣ͘ରԠՄೳͳί ϯςφΞʔΩςΫνϟΛԠ༻ → FastContainerΞʔΩςΫνϟ※1 • υϝΠϯ୯ҐͰਫ਼៛ʹղੳ΍ྲྀྔɾϦιʔε੍ޚ͕Մೳͳج൫ •

    ίϯςφʹΑΔϋʔυ΢ΣΞϦιʔε੍ޚΛυϝΠϯ୯ҐͰ࣮ࢪՄೳ • ίϯςφ୯ҐͰͷϦιʔεෆ଍͸ߴ଎ʹεέʔϧΞ΢τՄೳ 6 ఏҊख๏ɿਫ਼៛ʹղੳՄೳͳ߃ৗੑͷ͋Δϝʔϧج൫ ˞দຊ྄հ ۙ౻Ӊஐ࿕ ࡾ୐༔հ ྗ෢݈࣍ ܀ྛ݈ଠ࿠ 'BTU$POUBJOFS࣮ߦ؀ڥͷมԽʹૉૣ͘దԠͰ͖Δ߃ৗੑΛ࣋ͭγε ςϜΞʔΩςΫνϟ Πϯλʔωοτͱӡ༻ٕज़γϯϙδ΢Ϝ࿦จूɼɼʢʣ ೥݄
  7. 2. ؔ࿈ݚڀ

  8. • શυϝΠϯશମ·ͨ͸઀ଓΫϥΠΞϯτ୯Ґͷ੍ޚʢPostfix΍Sendmailʣ • ಉ࣌઀ଓ਺ɺ͋Δ͍͸୯Ґ࣌ؒ͋ͨΓͷ઀ଓ਺ • ୯Ґ࣌ؒ͋ͨΓͷϝοηʔδ഑ૹཁٻ਺ • ୯Ґ࣌ؒ͋ͨΓͷૹ৴Մೳͳड৴ऀΞυϨε਺ • αʔόϦιʔε࢖༻ྔͱϝʔϧྲྀྔΛཱ྆͢Δ࠷దͳઃఆ͕೉͍͠

    • ֤υϝΠϯʹݸผʹҟͳΔ஋Ͱ͸ͳ͘ڞ௨੍ͨ͠ݶ஋Λ੩తʹઃఆ • αʔόΛकΔ੍ݶ͸Ͱ͖Δ͕ϦιʔεΛे෼ʹ࢖͍੾Δ͜ͱ͕೉͍͠ 8 Ծ૝υϝΠϯʹ͓͚ΔҰൠతͳૹ৴੍ޚख๏ͱ՝୊
  9. • ֎෦MTA͔ΒϝʔϧϘοΫε΁ͷ഑ૹ • ֤υϝΠϯʹݸผͰ͸ͳ͘ڞ௨੍ͨ͠ݶ஋Λ੩తʹઃఆʢૹ৴ͱಉ༷ʣ • ֎෦MUA͔ΒϝʔϧϘοΫεͷσʔλΛड৴ • ֤υϝΠϯʹݸผͰ͸ͳ͘ڞ௨੍ͨ͠ݶ஋Λ੩తʹઃఆʢૹ৴ͱಉ༷ʣ • ݕࡧ΍ϦετͷͨΊͷIMAPίϚϯυʹΑΔϦιʔε઎༗ͷ੍ޚ͕ࠔ೉

    • αʔόϦιʔεΛे෼ʹ࢖͍੾Δ͜ͱ͕೉͍͠ 9 Ծ૝υϝΠϯʹ͓͚Δड৴੍ޚઃఆͱ՝୊
  10. • υϝΠϯ΍͓٬༷୯ҐͰαʔόϓϩηε΍Ծ૝؀ڥΛ্ཱͪ͛Δ • ϛυϧ΢ΣΞ΍ϓϩηε୯ҐͰݸผͷ๛෋ͳ੍ޚ͕ར༻Մೳ • υϝΠϯͷ਺ʹൺྫͯ͠αʔόϓϩηε܈͕૿Ճ͢ΔͨΊߴूੵԽ͕೉͍͠ • αʔόϓϩηε਺͕਺ेݸͰ͋ͬͯ΋υϝΠϯ͕਺ສͷ৔߹ɺϓϩηε਺ ͕਺ඦສݸʹ૿Ճ •

    inetd΍xinetdͷΑ͏ͳʮ઀ଓΫϥΠΞϯτ਺×αʔόϓϩηε܈਺ʯΛ ηογϣϯຖʹ౎౓ߦ͏ॲཧ΋ੑೳ΍Ϧιʔε໘Ͱޮ཰͕ѱ͍ 10 ߴूੵऩ༰ͱͷؔ܎ੑ
  11. • αʔόϓϩηεΛෳ਺ͷυϝΠϯͰڞ༗͢Δํࣜ • ϓϩηεΛڞ༗͢ΔͨΊϝʔϧηογϣϯ୯ҐͰͷ੍ޚखஈ͕গͳ͍ • ߴूੵʹऩ༰Ͱ͖ͯ΋Ϧιʔεڝ߹ʹΑΔෆ҆ఆঢ়ଶ͕ੜ͡΍͍͢ • υϝΠϯ୯ҐͰαʔόϓϩηεΛىಈ • ߴूੵʹऩ༰͕Ͱ͖ͳ͍

    11 ՝୊·ͱΊ
  12. 3. ఏҊख๏ͷઃܭͱ࣮ݧతͳ࣮૷Ҋ

  13. • ߴूੵʹΞΧ΢ϯτɾυϝΠϯΛऩ༰Մೳʢ୯Ұͷαʔόʹ਺ສυϝΠϯʣ • CPU࿦ཧίΞ24ݸɺϝϞϦ32GBఔ౓ͷPCαʔόΛ૝ఆ • υϝΠϯ୯ҐͰݸผʹਫ਼៛ͰಈతͳϦιʔε੍ޚΛ࣮ݱ • Ұൠతͳϝʔϧϛυϧ΢ΣΞͷ੍ޚػೳΛυϝΠϯ୯Ґʹઃఆ͍ͨ͠ • εέʔϧΞοϓɾΞ΢τ/μ΢ϯɾΠϯʹΑΔϦιʔε૿ڧɾ੍ݶ΋Մೳ

    • ҟͳΔϋʔυ΢ΣΞ΁ͷಁաతͳҠಈ΋૝ఆ • υϝΠϯ୯ҐͰݸผʹਫ਼៛ͳηογϣϯ৘ใऩूʢࠓޙͷదԠత੍ޚʹܨ͛Δʣ 13 ࣮ݱ͍ͨ͜͠ͱɿ௿Ձ֨Խͱ҆ఆԽʹ޲͚ͯ
  14. • υϝΠϯ୯ҐͰαʔόϓϩηεΛىಈͤͭͭ͞ߴूੵԽΛ࣮ݱ͢Δج൫ • ηογϣϯ୯ҐͰҰఆظؒىಈ͠ɺঢ়ଶͷมԽʹૉૣ͘ରԠՄೳͳίϯ ςφΞʔΩςΫνϟΛԠ༻ → FastContainerΞʔΩςΫνϟ • υϝΠϯ୯ҐͰίϯςφΛىಈ͠ਫ਼៛ʹྲྀྔɾϦιʔε੍ޚ͕Մೳͳج൫ •

    ϛυϧ΢ΣΞͷ੍ݶશͯΛυϝΠϯʹରͯ͠ద༻Մೳ • ίϯςφʹΑΔϋʔυ΢ΣΞϦιʔε੍ޚΛυϝΠϯ୯ҐͰ࣮ࢪՄೳ • ίϯςφ୯ҐͰͷϦιʔεෆ଍࣌ʹ͸ߴ଎ʹεέʔϧΞ΢τՄೳ 14 ఏҊख๏ɿਫ਼៛ʹղੳՄೳͳ߃ৗੑͷ͋Δϝʔϧج൫
  15. FastContainer: ߃ৗੑ͔ΒಘΒΕΔ҆ఆੑ 15 ϗετ" ϗετ" ϗετ" ϗετ" ϗετ" Πϯλʔωοτ ϗετ"

    ϗετ" ϗετ" ΍͕ͯఀࢭ ൓Ԡతʹىಈ ൓Ԡతʹ εέʔϧΞοϓ ऩ༰αʔόA ऩ༰αʔόB ϦΫΤετ ൓Ԡతʹ εέʔϧΞ΢τ • ϗετͷىಈͱఀࢭΛ॥؀ • ৗʹ॥؀͠ଓ͚ΔΞʔΩςΫνϟ • มԽ͠ଓ͚Δ͜ͱʹΑΔ҆ఆੑ ঢ়ଶͷมԽͷ଎౓վળΛ௥ٻ ৗʹมԽՄೳͰ͋ΔͨΊಥൃతͳΞ ΫηεूதͷΑ͏ͳมԽʹ΋଱ੑͷ ͋ΔΞʔΩςΫνϟΛ࣮ݱՄೳ
  16. • ΞΫςΟϒͳηογϣϯͷΈ͕ίϯςφͱͯ͠ىಈ • ݸਓ޲͚ϗεςΟϯάαʔϏεͷΞΫςΟϒϢʔβ͕গͳ͍ࣄʹண໨ • SMTPͱIMAPͰ͸ηογϣϯ৘ใΛσʔλϕʔεʹอଘ • কདྷతʹ͸σʔλΛղੳͯ͠దԠతʹྲྀྔΛ੍ޚ͍ͨ͠ • ߏ੒৘ใ΍੍ޚઃఆ͸શͯσʔλϕʔεԽͯ͠ݸผ͔ͭಈతʹ੍ޚՄೳ

    • কདྷతʹ͸ϗετOS͕ఀࢭͯ͠΋ίϯςφ͕ࣗಈతʹผϗετʹҠಈՄೳ 16 FastContainerͱߴूੵऩ༰
  17. ఏҊ͢Δϝʔϧج൫ͷશମϑϩʔ֓ཁ 17 *."1 'BTU$POUBJOFS 4ZTUFN $.%#"1* 4.51 -.51
 'BTU$POUBJOFS 4ZTUFN

    4.51 'BTU$POUBJOFS 4ZTUFN .6" -# -# .5" .BJM%BUB
  18. ఏҊ͢Δϝʔϧج൫ͷશମϑϩʔ֓ཁ 18 *."1 'BTU$POUBJOFS 4ZTUFN $.%#"1* 4.51 -.51
 'BTU$POUBJOFS 4ZTUFN

    4.51 'BTU$POUBJOFS 4ZTUFN .6" -# -# .5" .BJM%BUB
  19. ಉҰϗετ ϝʔϧج൫ͷSMTPૹ৴ϑϩʔৄࡉ 19 4.513PVUFS OHY@NSVCZ $.%#"1* 4.51ίϯςφ ʢυϝΠϯ୯Ґʣ 4.51ίϯςφ ʢυϝΠϯ୯Ґʣ

    4.51ίϯςφ ʢυϝΠϯ୯Ґʣ 4.51'BTU$PO QFSEPNBJO 1PTUpY 4.510VU 1PTUpY 4.51'JMUFS 0VU 7JSVTHX .6" .5" 4.51 %JTQBUDIFS OHY@NSVCZ υϝΠϯʹج͖ͮ)551ܦ༝Ͱͷ ΞΧ΢ϯτɾυϝΠϯೝূͱϓϩ ΩγઌऔಘΛ࣮ࢪ ηογϣϯ৘ใ΋ऩू 4.51ίϯςφ͕ىಈ͍ͯ͠ͳ͚Ε͹ ϦΞΫςΟϒʹҰఆظؒىಈ σʔλऩूɾղੳͱߏ੒؅ཧ $PMMFDU 4FTTJPO%BUB 1NJMUFS
  20. ఏҊ͢Δϝʔϧج൫ͷશମϑϩʔ֓ཁ 20 *."1 'BTU$POUBJOFS 4ZTUFN $.%#"1* 4.51 -.51
 'BTU$POUBJOFS 4ZTUFN

    4.51 'BTU$POUBJOFS 4ZTUFN .6" -# -# .5" .BJM%BUB
  21. )PTU04 ϝʔϧج൫ͷSMTPड৴ϑϩʔৄࡉ 21 $.%#"1* *."1ίϯςφ ʢυϝΠϯ୯Ґʣ *."1ίϯςφ ʢυϝΠϯ୯Ґʣ *."1ίϯςφ ʢυϝΠϯ୯Ґʣ

    -.51'BT$PO QFSEPNBJO %PWFDPU 4.51*O 1PTUpY -.513PVUFS  1PTUpYNSVCZ 4.51'JMUFS*O 7JSVTHX .5" -.51 %JTQBUDIFS 1PTUpYNSVCZ .BJMEJS *OEFY 4UPSBHF 4.51 JOFU -.51 6%4 $PMMFDU 4FTTJPO%BUB 1NJMUFS 4.51 JOFU 4.51 JOFU
  22. ఏҊ͢Δϝʔϧج൫ͷશମϑϩʔ֓ཁ 22 *."1 'BTU$POUBJOFS 4ZTUFN $.%#"1* 4.51 -.51
 'BTU$POUBJOFS 4ZTUFN

    4.51 'BTU$POUBJOFS 4ZTUFN .6" -# -# .5" .BJM%BUB
  23. )PTU04 ϝʔϧج൫ͷIMAPड৴ϑϩʔৄࡉ 23 *."13PVUFS OHY@NSVCZ $.%#"1* .6" *."1ίϯςφ ʢυϝΠϯ୯Ґʣ *."1ίϯςφ

    ʢυϝΠϯ୯Ґʣ *."1ίϯςφ ʢυϝΠϯ୯Ґʣ *."1'BT$PO QFSEPNBJO EPWFDPU *."1 %JTQBUDIFS OHY@NSVCZ .BJMEJS *OEFY 4UPSBHF *."1ίϯςφ ʢυϝΠϯ୯Ґʣ *."1ίϯςφ ʢυϝΠϯ୯Ґʣ *."1ίϯςφ ʢυϝΠϯ୯Ґʣ $POUSPM 3FTPVSDF NSVCZ *."1 JOFU *."1 JOFU %PWFDPU 1MVHJO σʔλऩूɾղੳͱߏ੒؅ཧ EPWFDPUNSVCZQMVHJO  ίϚϯυ୯ҐͰ$16࢖༻཰౳Λ੍ݶ  ηογϣϯ৘ใ΍ίϚϯυͷৼΔ෣͍౳Λ؅ཧ
  24. 4. ·ͱΊ

  25. • ઃܭͱ࣮ݧత࣮૷͸׬ྃ • ϓϩτλΠϓ࣮૷Λߦͬͯ༗ޮੑͷධՁ • Ϧιʔεޮ཰΍ੑೳධՁ • ϓϩμΫγϣϯ؀ڥʹ͓͚ΔϦιʔε੍ޚͷ༗ޮੑΛධՁ • ηογϣϯσʔλͷղੳख๏ͷઃܭ

    • ηογϣϯσʔλʹجͮ͘υϝΠϯ୯ҐͰͷదԠతͳ੍ޚઃఆ • ϗετOSҟৗ࣌ʹผϗετʹಁաతʹίϯςφΛϚΠάϨʔγϣϯ 25 ·ͱΊͱࠓޙͷ՝୊
  26. • ຊݚڀͰ࢖༻ͨ͠Ϋϥ΢υࢿݯ͸ɼฏ੒29೥౓ࠃཱ৘ใֶݚڀॴΫϥ΢υར ׆༻࣮ূ࣮ݧʹ͓͍ͯఏڙ͞Εͨɽ·ͨɼຊݚڀ͸ɼҎԼͷݚڀॿ੒Λड͚ͯ ͍Δɽ • দຊ྄հ,খా஌ԝ,ۙ౻Ӊஐ࿕,ּݪٛߊ,Ԭଜߞೋ,ౢ٢ོ෉,ۚࢠߊհ, mrubyΛར༻ͨܰ͠ྔίϯςφΫϥ΢υج൫ͷݚڀ։ൃΛհͨ͠mrubyͷ େن໛ɾߴෛՙςετ, 2017೥౓Ruby Association։ൃॿ੒,

    2017೥10݄. 26 ँࣙ