FastContainerをメール基盤へ適用 - 精緻に制御可能な恒常性のある高集積マルチアカウント型のメール基盤

FastContainerをメール基盤へ適用 - 精緻に制御可能な恒常性のある高集積マルチアカウント型のメール基盤

FastContainerをメール基盤へ適用 - 精緻に制御可能な恒常性のある高集積マルチアカウント型のメール基盤

第3回Web System Architecture研究会@東京 #wsa研

さくらインターネット研究所 上級研究員 松本亮介 / まつもとりー / @matsumotory

2b692bd83f4418103142a053ecf5ff59?s=128

MATSUMOTO Ryosuke

November 18, 2018
Tweet

Transcript

  1. ͘͞ΒΠϯλʔωοτגࣜձࣾ (C) Copyright 1996-2018 SAKURA Internet Inc ͘͞ΒΠϯλʔωοτݚڀॴ FastContainerΛϝʔϧج൫΁ద༻ -

    ਫ਼៛ʹ੍ޚՄೳͳ߃ৗੑͷ͋Δ ߴूੵϚϧνΞΧ΢ϯτܕͷϝʔϧج൫ 2018/11/17 ্ڃݚڀһ দຊ ྄հ ୈ3ճWeb System Architectureݚڀձˏ౦ژ #wsaݚ
  2. 2 ɾ͘͞ΒΠϯλʔωοτݚڀॴ ্ڃݚڀһ ɾגࣜձࣾGrooves Forkewll ٕज़ސ໰ ɾϖύϘݚڀॴ ٬һݚڀһ ݚڀސ໰ ɾηΩϡϦςΟɾΩϟϯϓߨࢣ

    ɾ৘ใॲཧֶձ Πϯλʔωοτͱӡ༻ٕज़ݚڀձ ֤छҕһ ɾژ౎େֶത࢜ʢ৘ใֶʣ দຊ྄հ / ·ͭ΋ͱΓʔ / @matsumotory
  3. 3 1. എܠͱ໨త 2. ఏҊख๏ͷઃܭͱ࣮૷ 3. ·ͱΊͱࠓޙͷ՝୊ ໨࣍ ຊൃද͸ҎԼͷݚڀൃදΛൃలͤͨ͞΋ͷͰ͋Δɻ দຊ

    ྄հ, খా ஌ԝ, ּݪ ٛߊ, ౢ٢ ོ෉, ۚࢠߊհ, ܀ྛ ݈ଠ࿠, Ԭଜ ߞೋ, ਫ਼៛ʹ੍ޚՄೳͳ߃ৗੑͷ͋ΔߴूੵϚϧ νΞΧ΢ϯτܕͷϝʔϧج൫, ϚϧνϝσΟΞɺ෼ࢄɺڠௐͱϞόΠϧʢDICOMO2018ʣγϯϙδ΢Ϝ, 7C-1, Jul 2018.
  4. 1. എܠͱ໨త

  5. 5 ɾࠓ΋޿͘࢖ΘΕ͍ͯΔϝʔϧ ɾϝʔϧαʔϏεࣄۀऀ΋·ͩ·ͩݱ໾ ɾϋʔυ΢ΣΞίετΛޮ཰ར༻͢ΔͨΊʹΞΧ΢ϯτΛߴूੵԽ ɾେྔૹ৴ɺspamϝʔϧɺϝʔϧ஗ԆɺΞΧ΢ϯτ৐ͬऔΓ ɾ݁ՌతʹγεςϜ؅ཧɾϢʔβαϙʔτίετͷ૿Ճ ɾಛఆͷΞΧ΢ϯτ΍υϝΠϯͷϦιʔεઐ༗ʹΑΔෆ҆ఆੑ͕՝୊ ݚڀͷഎܠ

  6. 6 1. ߴूੵԽͷͨΊʹ୯Ұͷαʔόϓϩηε܈Ͱෳ਺ͷυϝΠϯΛॲཧ ɾυϝΠϯʢԾ૝υϝΠϯʣ୯ҐͰͷ੍ޚػೳ͕ݶఆత ɾશͯͷυϝΠϯʹରͯ͠ಉҰͷಉ࣌઀ଓ౳ͷ੍ݶΛ੩తʹઃఆ ɾ੍ݶա৒ʹΑΓαʔόϦιʔεΛे෼ʹ࢖͍੾Δ͜ͱ͕೉͍͠ 2. υϝΠϯ୯ҐͰαʔόϓϩηε܈Λىಈ ɾϝʔϧιϑτ΢ΣΞ΍ϓϩηε୯Ґͷશͯͷ੍ݶઃఆ͕Մೳ ɾϓϩηε਺͕υϝΠϯ਺ʹґଘͯ͠ߴूੵʹऩ༰Ͱ͖ͳ͍

    ैདྷख๏ɿߴूੵϚϧνΞΧ΢ϯτܕͷ੍ݶ
  7. 7 1. αʔόϓϩηεΛෳ਺ͷυϝΠϯͰڞ༗͢Δํࣜ ɾϝʔϧηογϣϯ୯ҐͰͷϦιʔε෼཭ɾྲྀྔ੍ݶखஈ͕গͳ͍ ɾߴूੵʹऩ༰Ͱ͖ͯ΋Ϧιʔεڝ߹ʹΑΔෆ҆ఆঢ়ଶ͕ੜ͡΍͍͢ 2. υϝΠϯ୯ҐͰαʔόϓϩηεΛىಈ ɾϓϩηε਺͕υϝΠϯ਺ʹԠͯ͡୯ௐ૿Ճ ɾߴूੵʹऩ༰͕Ͱ͖ͳ͍ ैདྷख๏ͷ՝୊·ͱΊ

  8. 8 ɾୈҰճ ࣮ߦ؀ڥͷมԽʹૉૣ͘దԠͰ͖Δ߃ৗੑΛ࣋ͭγεςϜΞʔΩςΫ νϟͱࠓޙͷ՝୊ ɾίϯςφΛϦΞΫςΟϒʹঢ়ଶΛม͑ΒΕΔΞʔΩςΫνϟͷ঺հ ɾ→ FastContainerΞʔΩςΫνϟ ɾୈೋճ HTTPϦΫΤετ୯ҐͰίϯςφΛ࠶഑ஔ͢ΔԾ૝Խج൫ͷߴ଎ͳεέ δϡʔϦϯάख๏

    ɾFastContainerͷಛ௃Λ׆͔ͯ͠ϦΞΫςΟϒʹऩ༰ϗετ౳Λ࠶഑ஔ ɾHTTPαʔόʹͱΒΘΕͣʹ࣮ߦج൫ͱͯ͠ͷ൚༻ԽΛਐΊͨ wsaݚ#1ͱ#2ͷൃද
  9. 9 ɾਫ਼៛ʹղੳՄೳͳ߃ৗੑͷ͋Δϝʔϧج൫ ɾυϝΠϯ୯ҐͰαʔόϓϩηεΛىಈͭͭ͠ΞΫςΟϒͰͳ͍ϓϩηε͸ੵۃ తʹఀࢭͤͯ͞ߴूੵԽΛཱ྆ ɾηογϣϯΛܖػʹҰఆظؒىಈ͠ɺঢ়ଶͷมԽʹૉૣ͘ରԠՄೳͳίϯς φΞʔΩςΫνϟFastContainer*1ΛԠ༻ ɾυϝΠϯ୯ҐͰਫ਼៛ʹղੳ΍ྲྀ༻ɾϦιʔε੍ޚ͕Մೳͳج൫ ɾίϯςφʹΑΔϋʔυ΢ΣΞϦιʔε੍ޚΛυϝΠϯ୯ҐͰ࣮ࢪ ఏҊख๏ ˞দຊ྄հ

    தా༟و ܀ྛ݈ଠ࿠ )551ϦΫΤετ୯ҐͰΠϯελϯεͷ࠶഑ஔ͕Մೳͳ௿ίετͰߴ଎ͳεέ δϡʔϦϯάख๏ ݚڀใࠂΠϯλʔωοτͱӡ༻ٕज़ʢ*05ʣ 7PM*05 QQ +VO
  10. 2. ఏҊख๏ͷઃܭͱ࣮૷

  11. 11 ɾߴूੵʹΞΧ΢ϯτɾυϝΠϯΛऩ༰Մೳʢ୯Ұͷαʔόʹ਺ສʣ ɾCPU࿦ཧίΞ24ίΞɺϝϞϦ32GBఔ౓ͷPCαʔόΛ૝ఆ ɾυϝΠϯ୯ҐͰݸผʹਫ਼៛ͰಈతͳΓιʔε੍ޚΛ࣮ݱ ɾҰൠతͳϝʔϧϛυϧ΢ΣΞͷ੍ޚػೳΛυϝΠϯ୯Ґ΁ ɾεέʔϧΞοϓɾΞ΢τɾμ΢ϯɾΠϯʹΑΔϦιʔε੍ޚ΋Մೳ ɾҟͳΔϋʔυ΢ΣΞ΁ͷಁաతͳҠಈ΋૝ఆ ɾυϝΠϯ୯ҐͰݸผʹਫ਼៛ͳηογϣϯ৘ใऩूʢࠓޙͷํ਑ʣ ࣮ݱ͍ͨ͜͠ͱɿ௿Ձ֨Խͱ҆ఆԽʹ޲͚ͯ

  12. 12 ɾυϝΠϯ୯ҐͰαʔόϓϩηεΛىಈͭͭ͠ΞΫςΟϒͰͳ͍ϓϩηε͸ੵۃ తʹఀࢭͤͯ͞ߴूੵԽΛཱ྆ ɾηογϣϯ୯ҐͰϦΞΫςΟϒʹҰఆ࣌ؒىಈ͠ɺঢ়ଶมԽʹૉૣ͘ରԠՄ ೳͳFastContainerΞʔΩςΫνϟΛԠ༻ ɾυϝΠϯ୯ҐͰίϯςφΛىಈ͠ਫ਼៛ʹྲྀྔɾϦιʔε੍ޚ͕Մೳ ɾϛυϧ΢ΣΞͷ੍ݶશͯΛυϝΠϯʹରͯ͠ద༻Մೳ ɾίϯςφʹΑΔϋʔυ΢ΣΞϦιʔεΛυϝΠϯ୯ҐͰ੍ޚՄೳ ɾίϯςφ୯ҐͰͷϦιʔεෆ଍࣌ʹ͸ߴ଎ʹεέʔϦϯάՄೳ ఏҊ͢Δ߃ৗੑͷ͋Δϝʔϧج൫

  13. 13 FastContainerɿ߃ৗੑ͔ΒಘΒΕΔ҆ఆੑ ϗετ" ϗετ" ϗετ" ϗετ" ϗετ" Πϯλʔωοτ ϗετ" ϗετ"

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

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

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

    4.51 'BTU$POUBJOFS 4ZTUFN .6" -# -# .5" .BJM%BUB
  17. 17 ϝʔϧج൫ͷSMTPૹ৴ϑϩʔৄࡉ ಉҰϗετ 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
  18. 18 ఏҊ͢Δϝʔϧج൫ͷશମϑϩʔ֓ཁ *."1 'BTU$POUBJOFS 4ZTUFN $.%#"1* 4.51 -.51
 'BTU$POUBJOFS 4ZTUFN

    4.51 'BTU$POUBJOFS 4ZTUFN .6" -# -# .5" .BJM%BUB
  19. 19 ϝʔϧج൫ͷSMTPड৴ϑϩʔৄࡉ )PTU04 $.%#"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
  20. 20 ఏҊ͢Δϝʔϧج൫ͷશମϑϩʔ֓ཁ *."1 'BTU$POUBJOFS 4ZTUFN $.%#"1* 4.51 -.51
 'BTU$POUBJOFS 4ZTUFN

    4.51 'BTU$POUBJOFS 4ZTUFN .6" -# -# .5" .BJM%BUB
  21. 21 ϝʔϧج൫ͷIMAPड৴ϑϩʔৄࡉ )PTU04 *."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࢖༻཰౳Λ੍ݶ  ηογϣϯ৘ใ΍ίϚϯυͷৼΔ෣͍౳Λ؅ཧ
  22. 22 ϓϩτλΠϓ࣮૷

  23. 3. ·ͱΊ

  24. 24 ɾઃܭͱ࣮ݧత࣮૷͸׬ྃ ɾϓϩτλΠϓ࣮૷Λߦͬͯ༗ޮੑΛධՁ ɾϦιʔεޮ཰΍ੑೳධՁɺΩϡʔ΍஗ԆͷධՁ ɾϓϩμΫγϣϯ؀ڥʹ͓͚ΔϦιʔε੍ޚͷ༗ޮੑΛධՁ ɾηογϣϯσʔλͷղੳख๏ͷઃܭ ɾηογϣϯσʔλʹجͮ͘υϝΠϯ୯ҐͰͷదԠతͳ੍ޚઃఆ ɾϗετOSҟৗ࣌ʹผϗετʹಁաతʹίϯςφΛϚΠάϨʔγϣϯ ·ͱΊͱࠓޙͷ՝୊

  25. 25 ɾຊݚڀͰ࢖༻ͨ͠Ϋϥ΢υࢿݯ͸ɼฏ੒29೥౓ࠃཱ৘ใֶݚڀॴΫϥ΢υར ׆༻࣮ূ࣮ݧʹ͓͍ͯఏڙ͞Εͨɽ ɾ·ͨɼຊݚڀ͸ɼҎԼͷݚڀॿ੒Λड͚͍ͯΔɽ ɾদຊ྄հ,খా஌ԝ,ۙ౻Ӊஐ࿕,ּݪٛߊ,Ԭଜߞೋ,ౢ٢ོ෉,ۚࢠߊհ, mruby Λར༻ͨܰ͠ྔίϯςφΫϥ΢υج൫ͷݚڀ։ൃΛհͨ͠mrubyͷେن໛ɾ ߴෛՙςετ, 2017೥౓Ruby Association։ൃॿ੒,

    2017೥10݄. ँࣙ