$30 off During Our Annual Pro Sale. View Details »

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

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

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

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

MATSUMOTO Ryosuke
PRO

March 05, 2018
Tweet

More Decks by MATSUMOTO Ryosuke

Other Decks in Technology

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 ँࣙ