200万ドメインのHTTPS化を見据えた大規模証明書管理アーキテクチャ / CKP-QGPOP-2milions-tls

200万ドメインのHTTPS化を見据えた大規模証明書管理アーキテクチャ / CKP-QGPOP-2milions-tls

研究開発によってサーバ台数を100分の1にする技術を生み出す

ペパボ研究所 主席研究員 兼 シニアプリンシパルエンジニア 松本 亮介 / Pepabo R&D Institute, GMO Pepabo, Inc.
2017.12.07 CKP-QGPOP研究会

2b692bd83f4418103142a053ecf5ff59?s=128

MATSUMOTO Ryosuke

December 07, 2017
Tweet

Transcript

  1. 1.

    ݚڀ։ൃʹΑͬͯαʔό୆਺Λ100෼ͷ1ʹ͢Δٕज़ΛੜΈग़͢ ϖύϘݚڀॴ ओ੮ݚڀһ ݉ γχΞϓϦϯγύϧΤϯδχΞ দຊ ྄հ / Pepabo R&D

    Institute, GMO Pepabo, Inc. 2017.12.07 CKP-QGPOPݚڀձ 200ສυϝΠϯͷHTTPSԽΛݟਾ͑ͨ େن໛ূ໌ॻ؅ཧΞʔΩςΫνϟ
  2. 2.

    • ژ౎େֶത࢜ʢ৘ใֶʣ • ϖύϘݚڀॴ ओ੮ݚڀһ • GMOϖύϘ γχΞɾϓϦϯγύϧΤϯδχΞ • ݩΠϯϑϥΤϯδχΞ

    • ೔ຊOSS঑ྭ৆ɾ৘ใॲཧֶձ ࢁԼه೦ݚڀ৆ͳͲଟ਺ 2 দຊ྄հ / ·ͭ΋ͱΓʔ / @matsumotory
  3. 6.

    • ݸਓ޲͚ͷ௿Ձ֨ϗεςΟϯάͰ࠾༻͞ΕΔ͜ͱͷଟ͍ํࣜ※1 • ୯ҰͷWebαʔόʹߴूੵ(਺ສυϝΠϯ)ʹϗετΛऩ༰ • Ծ૝ϗετํࣜʹΑΓେྔͷϗετΛಉҰϓϩηεͰॲཧ • ϦόʔεϓϩΩγͷ৔߹͸ߋʹߴूੵ(਺ेɺ਺ඦສυϝΠϯ) • ߴूੵϚϧνςφϯτํࣜͷHTTPSରԠ΋ٸ຿

    6 ߴूੵϚϧνςφϯτํࣜͷWebαʔό ˞দຊ྄հ തֶ࢜Ґ࿦จ8FCαʔόͷߴूੵϚϧνςφϯτΞʔΩςΫνϟʹؔ͢Δݚڀ  IUUQTSFQPTJUPSZLVMJCLZPUPVBDKQETQBDFIBOEMF ژ౎େֶ ೥݄
  4. 19.

    • ngx_mruby※1 ʹTLSϋϯυγΣΠΫͷRubyϑοΫઃఆΛ࣮૷ • TLSϋϯυγΣΠΫ࣌ʹϑοΫ͞ΕͨRubyͷίʔυΛ࣮ߦ • RubyϝιουͰOpenSSLͱσʔλͷड͚౉͠Λ࣮ߦ • KVS/File͔Βূ໌ॻ΍ൿີ伴ΛRubyܦ༝ͰಡΈࠐΈՄ 19

    ngx_mruby v1.16.0ʢ2016೥2݄ʣͰ௥Ճ࣮૷ ˞দຊ྄հ Ԭ෦णஉ NPE@NSVCZεΫϦϓτݴޠͰߴ଎͔ͭলϝϞϦʹ֦ுՄೳͳ8FCαʔόͷ ػೳ֦ுࢧԉػߏ ৘ใॲཧֶձ࿦จࢽɼ7PM /P QQ /PW
  5. 20.

    ngx_mrubyͷূ໌ॻಈతಡΈࠐΈ࣮૷ϑϩʔ 20 44-@$59@TFU@DFSU@DC ʹ3VCZͷόΠ τίʔυΛ࣮ߦ͢ΔIBOEMFSͷؔ਺ϙΠϯ λͱίϯςΩετߏ଄ମϙΠϯλΛηοτ OHJOYDPOGͷઃఆ͔ΒಡΈࠐΜͩ3VCZε ΫϦϓτΛόΠτίʔυԽͯ͠ ίϯςΩετߏ଄ମʹอଘ 5-4ϋϯυγΣΠΫ࣌ʹIBOEMFS͕ίʔϧ

    όοΫ͞ΕόΠτίʔυΛ࣮ߦ όΠτίʔυͰ࣮ߦ͞ΕΔ3VCZͷϝιο υܦ༝Ͱূ໌ॻ΍ൿີ伴σʔλ͕ ίϯςΩετߏ଄ମʹηοτ͢Δ ূ໌ॻͱൿີ伴σʔλʹج͍ͯ#*0ܦ༝Ͱ σʔλΛಡΈࠐΜͰϋϯυγΣΠΫΛଓߦ OHJOYىಈ࣌ͷॲཧ OHJOY͕ϦΫΤετड৴ͨ࣌͠ͷॲཧ NSVCZͷ5-4ϋϯυγΣΠΫϑοΫσΟ ϨΫςΟϒ͕ଘࡏͨ͠Β 44-@$59@TFU@DFSU@DC Λݺͼग़͢
  6. 32.

    ఏҊํࣜͱैདྷํࣜͷੑೳൺֱ 32 ಉ࣌઀ଓ਺ ैདྷํࣜ QSFMPBE SFRTFD ఏҊํࣜ EZOBNJDMPBE SFRTFD 

               $(*ͷΑ͏ͳϓϩηεෳ੡͕ੜ͡ͳ͍ܰྔͳ੩తϑΝΠϧ΁ͷϦΫΤετͰ΋ɺ ূ໌ॻͷಈతಡΈࠐΈ͸ैདྷख๏ͷ੩తಡΈࠐΈͱൺֱͯ͠΋΄΅͕ࠩͳ͍
  7. 39.

    1ϲ݄ؒͷূ໌ॻ਺ͷભҠ 39 0 5000 10000 15000 20000 25000 1 6

    11 16 21 26 31 The number of cer-ficates day The number of cer-ficate in a month dynamic load preload Θ͔Γʹ͍͕͘Ұϲ݄Ͱ͔Β΁ͱ ূ໌ॻఔ౓૿͍͑ͯΔ ূ໌ॻ਺͸ϦϓϨʔεલͷഒ͔Βഒ
  8. 40.

    1ϲ݄ؒͷ1αʔό΁ͷඵؒHTTPϦΫΤετ਺ 40 0 200 400 600 800 1000 1200 1400

    1600 1 6 11 16 21 26 31 Requests/sec day Request/sec in a mouth dynamic load preload ϦϓϨʔεޙʹ-#ͷׂΓ౰ͯൺ཰͕มΘͬͨͨΊ )551ʴ)5514ϦΫΤετॲཧ਺͸ഒ͔Βഒ
  9. 41.

    1ϲ݄ؒͷCPU࢖༻཰ͷભҠ 41 0.00 1.00 2.00 3.00 4.00 5.00 6.00 7.00

    8.00 9.00 1 6 11 16 21 26 31 CPU usage(%) day CPU usage in a mouth dynamic load preload ূ໌ॻ਺͕͔Βഒʹ΋ؔΘΒͣ$16࢖༻཰͸ඍ͕ࠩͩ௿ݮ܏޲ ສূ໌ॻ૿ՃͰ$16͸ఔ౓ඍ૿
  10. 42.

    1ϲ݄ؒͷϝϞϦ࢖༻཰ͷભҠ 42 0 1000 2000 3000 4000 5000 6000 7000

    8000 1 6 11 16 21 26 31 Memory usage(MBytes) day Memory usage in a mouth dycamic load preload ূ໌ॻ਺͸͔Βഒʹ΋ؔΘΒͣϝϞϦ࢖༻཰͸௿ݮ ఏҊख๏͸ສҎ্૿Ճ͍ͯ͠Δূ໌ॻ਺ʹ΋΄΅ґଘ͍ͯ͠ͳ͍ ূ໌ॻ਺૿Ճʹ൐͍ϝϞϦ࢖༻ྔ͸αʔόશମͰ(#ZUFTఔ౓૿Ճ
  11. 50.

    50 0 5000 10000 15000 20000 25000 30000 2017/07/02-09:00 2017/07/04-09:00

    2017/07/06-09:00 2017/07/08-09:00 2017/07/10-09:00 2017/07/12-09:00 2017/07/14-09:00 2017/07/16-09:00 2017/07/18-09:00 2017/07/20-09:00 2017/07/22-09:00 2017/07/24-09:00 2017/07/26-09:00 2017/07/28-09:00 2017/07/30-09:00 2017/08/01-09:00 2017/08/03-09:00 2017/08/05-09:00 2017/08/07-09:00 2017/08/09-09:00 2017/08/11-09:00 2017/08/13-09:00 2017/08/15-09:00 2017/08/17-09:00 2017/08/19-09:00 2017/08/21-09:00 2017/08/23-09:00 2017/08/25-09:00 2017/08/27-09:00 2017/08/29-09:00 2017/08/31-09:00 2017/09/02-09:00 2017/09/04-09:00 2017/09/06-09:00 2017/09/08-09:00 2017/09/10-09:00 2017/09/12-09:00 2017/09/14-09:00 2017/09/16-09:00 2017/09/18-09:00 2017/09/20-09:00 2017/09/22-09:00 2017/09/24-09:00 2017/09/26-09:00 2017/09/28-09:00 2017/09/30-09:00 2017/10/02-09:00 2017/10/04-09:00 2017/10/06-09:00 2017/10/08-09:00 2017/10/10-09:00 2017/10/12-09:00 2017/10/14-09:00 2017/10/16-09:00 2017/10/18-09:00 2017/10/20-09:00 2017/10/22-09:00 2017/10/24-09:00 2017/10/26-09:00 2017/10/28-09:00 2017/10/30-09:00 2017/11/01-09:00 Memory Usage [MBytes] Day Memory Usage for Four Months Memory Usage ಈతॲཧ ຖ೔SFMPBE SFMPBEఀࢭத SFMPBEఀࢭத ϦϑΝΫλϦϯά ສυϝΠϯ)5514Խ ສυϝΠϯ)5514Խ SFMPBEఀࢭ
  12. 52.

    52 0 5000 10000 15000 20000 25000 30000 2017/07/02-09:00 2017/07/04-09:00

    2017/07/06-09:00 2017/07/08-09:00 2017/07/10-09:00 2017/07/12-09:00 2017/07/14-09:00 2017/07/16-09:00 2017/07/18-09:00 2017/07/20-09:00 2017/07/22-09:00 2017/07/24-09:00 2017/07/26-09:00 2017/07/28-09:00 2017/07/30-09:00 2017/08/01-09:00 2017/08/03-09:00 2017/08/05-09:00 2017/08/07-09:00 2017/08/09-09:00 2017/08/11-09:00 2017/08/13-09:00 2017/08/15-09:00 2017/08/17-09:00 2017/08/19-09:00 2017/08/21-09:00 2017/08/23-09:00 2017/08/25-09:00 2017/08/27-09:00 2017/08/29-09:00 2017/08/31-09:00 2017/09/02-09:00 2017/09/04-09:00 2017/09/06-09:00 2017/09/08-09:00 2017/09/10-09:00 2017/09/12-09:00 2017/09/14-09:00 2017/09/16-09:00 2017/09/18-09:00 2017/09/20-09:00 2017/09/22-09:00 2017/09/24-09:00 2017/09/26-09:00 2017/09/28-09:00 2017/09/30-09:00 2017/10/02-09:00 2017/10/04-09:00 2017/10/06-09:00 2017/10/08-09:00 2017/10/10-09:00 2017/10/12-09:00 2017/10/14-09:00 2017/10/16-09:00 2017/10/18-09:00 2017/10/20-09:00 2017/10/22-09:00 2017/10/24-09:00 2017/10/26-09:00 2017/10/28-09:00 2017/10/30-09:00 2017/11/01-09:00 Memory Usage [MBytes] Day Memory Usage for Four Months Memory Usage ಈతॲཧ ຖ೔SFMPBE SFMPBEఀࢭத SFMPBEఀࢭத ϦϑΝΫλϦϯά ສυϝΠϯ)5514Խ ສυϝΠϯ)5514Խ SFMPBEఀࢭ
  13. 56.