Upgrade to Pro — share decks privately, control downloads, hide ads and more …

iQon Engineer Seminar - Backend

iQon Engineer Seminar - Backend

iQON, Growth Hack

- Infrastructure, Monitoring, Provisioning
- Crawler, Push Notification, Retention

Avatar for Masaki Yoshida

Masaki Yoshida

February 20, 2014
Tweet

Other Decks in Technology

Transcript

  1. •  EC2Πϯελϯε : 60୆Ҏ্ o  m1.xlarge : 7ׂ §  ϦβʔϒυΠϯελϯεͰӡ༻

    §  ༻్΋ଟछଟ༷ •  ͦͷଞར༻αʔϏε o  ELB, VPC, S3, CloudFront౳ AWS
  2. Chef •  ಠࣗAMI + Ϩγϐ + αͰӡ༻ o  WEB༻AMI +

    ChefϨγϐ + α o  API༻AMI + ChefϨγϐ + α o  ϛυϧ΢ΣΞ༻AMI + ChefϨγϐ + α
  3. Zabbixར༻࣌ͷετϨε •  Cons o  εΫϦʔϯͷ࡞੒࡞ۀ͕͔ͳΓ໘౗ o  ୯७࡞ۀͷ܁Γฦ͠ i.  ߦ/ྻͷηϧΛ௥Ճ→શάϥϑಡΈࠐΈ ii. 

    ϑΥʔϜͷදࣔ→શάϥϑಡΈࠐΈ iii.  ϑΥʔϜͷPOST→શάϥϑಡΈࠐΈ ڞ௨ͷϝτϦΫε͚ͩͰ΋εΫϦʔϯΛࣗಈͰߋ৽͍ͨ͠
  4. iQONͷϑΝογϣϯΞΠςϜ௥Ճ ϛογϣϯΛ࣮ݱ͢ΔͨΊͷखஈ ᶃ ߋ৽͕͋ͬͨࡍʹద੾ͳϢʔβʔʹϓογϡ௨஌ΛૹΔ ᶄ શఏܞαΠτͷ৽نΞΠςϜΛຖ೔ߋ৽͢Δ ᶅ શఏܞαΠτͷࡏݿ/Ձ֨มಈΛຖ೔ߋ৽͢Δ ᶆ ্هॲཧ͕ਖ਼ৗʹಈ͍͍ͯΔ͔νΣοΫͰ͖Δମ੍Λ࡞Δ

    ɾಠࣗͷΫϩʔϥʔϑϨʔϜϫʔΫΛ࣮૷࣮ͯ͠ݱ ΞΠςϜ௥Ճʹؔ͢Δϛογϣϯ: ʮiQONʯΛܧଓͯ͠࢖ͬͯ΋Β͏ʂ ◦ Ϣʔβʔ͕ཉ͍͠৘ใΛత֬ʹ఻͑Δ ◦ ߋ৽ੑ(ΞΫηε͢Δͨͼʹ৽͍͠ൃݟ͕͋Δ)
  5. iQONͷϑΝογϣϯΞΠςϜ௥Ճ ϛογϣϯΛ࣮ݱ͢ΔͨΊͷखஈ ᶃ ߋ৽͕͋ͬͨࡍʹద੾ͳϢʔβʔʹϓογϡ௨஌ΛૹΔ ᶄ શఏܞαΠτͷ৽نΞΠςϜΛຖ೔ߋ৽͢Δ ᶅ શఏܞαΠτͷࡏݿ/Ձ֨มಈΛຖ೔ߋ৽͢Δ ᶆ ্هॲཧ͕ਖ਼ৗʹಈ͍͍ͯΔ͔νΣοΫͰ͖Δମ੍Λ࡞Δ

    ɾಠࣗͷΫϩʔϥʔϑϨʔϜϫʔΫΛ࣮૷࣮ͯ͠ݱ ΞΠςϜ௥Ճʹؔ͢Δϛογϣϯ: ʮiQONʯΛܧଓͯ͠࢖ͬͯ΋Β͏ʂ ◦ Ϣʔβʔ͕ཉ͍͠৘ใΛత֬ʹ఻͑Δ ◦ ߋ৽ੑ(ΞΫηε͢Δͨͼʹ৽͍͠ൃݟ͕͋Δ)
  6. ΞΠςϜ௥Ճʹؔ͢Δϛογϣϯ: ʮiQONʯΛܧଓͯ͠࢖ͬͯ΋Β͏ʂ ◦ Ϣʔβʔ͕ཉ͍͠৘ใΛత֬ʹ఻͑Δ ◦ ߋ৽ੑ(ΞΫηε͢Δͨͼʹ৽͍͠ൃݟ͕͋Δ) iQONͷϑΝογϣϯΞΠςϜ௥Ճ ϛογϣϯΛ࣮ݱ͢ΔͨΊ... ᶃ ߋ৽͕͋ͬͨࡍʹద੾ͳϢʔβʔʹϓογϡ௨஌ΛૹΔ

    ᶄ શఏܞαΠτͷ৽نΞΠςϜΛຖ೔ߋ৽͢Δ ᶅ શఏܞαΠτͷࡏݿ/Ձ֨มಈΛຖ೔ߋ৽͢Δ ᶆ ্هॲཧ͕ਖ਼ৗʹಈ͍͍ͯΔ͔νΣοΫͰ͖Δମ੍Λ࡞Δ ɾಠࣗͷΫϩʔϥʔϑϨʔϜϫʔΫΛ࣮૷࣮ͯ͠ݱ
  7. ΞΠςϜ௥Ճͷϑϩʔ ECαΠτͷ঎඼Ұཡ iQONͷDB಺ʹଘࡏ͢ΔΞΠςϜ ᶃ HTMLͷऔಘ, DOMͷղੳॲཧ ΞΠςϜৄࡉϖʔδURL ᶄ ൑ఆॲཧ Ϋϩʔϥʔ

    πʔϧ ৽نΞΠςϜ (طଘΞΠςϜ) طଘΞΠςϜ MySQL S3 MongoDB Memcached Solr طଘΞΠςϜ ᶅ ߋ৽ॲཧ ৽نΞΠςϜ ϓογϡ௨஌
  8. ΞΠςϜ௥Ճͷϑϩʔ ECαΠτͷϦετϖʔδ iQONͷDB಺ʹଘࡏ͢ΔΞΠςϜ ᶃ HTMLͷऔಘ, DOMͷղੳॲཧ ΞΠςϜৄࡉϖʔδURL ᶄ ൑ఆॲཧ Ϋϩʔϥʔ

    πʔϧ ৽نΞΠςϜ (طଘΞΠςϜ) طଘΞΠςϜ MySQL S3 MongoDB Memcached Solr طଘΞΠςϜ ᶅ ߋ৽ॲཧ ৽نΞΠςϜ ϓογϡ௨஌
  9. DOMͷղੳ݁Ռ Λอଘ html DL DOMղੳॲཧ STORAGE 3sec ͔͔Δ 0.5sec ͔͔Δ

    ௚ ྻ ʹ ॲ ཧ 3.5sec / 1item ͔͔͍ͬͯΔ ɾҎલͷΫϩʔϥʔͷྫ ࣮ߦ଎౓Λ্͛ΔͨΊʹᶃ
  10. DOMͷղੳ݁Ռ Λอଘ html DL DOMղੳॲཧ STORAGE 3sec ͔͔Δ 0.5sec ͔͔Δ

    ௚ ྻ ʹ ॲ ཧ 3.5sec / 1item ͔͔͍ͬͯΔ ɾҎલͷΫϩʔϥʔͷྫ 1sec / 1item ͕ཧ૝(શͯճΓ͖ΕΔ) ࣮ߦ଎౓Λ্͛ΔͨΊʹᶃ
  11. ΩϡʔԽ htmlΛอଘ DOMͷղੳ݁Ռ Λอଘ html DLͷฒྻԽ STORAGE STORAGE 1req /

    1secʹ DLϦΫΤετ DOMղੳॲཧ ɾ௚ۙͷΫϩʔϥʔ ࣮ߦ଎౓Λ্͛ΔͨΊʹᶃ
  12. ΩϡʔԽ 1req / 1secʹ DLϦΫΤετ htmlΛอଘ DOMͷղੳ݁Ռ Λอଘ STORAGE STORAGE

    DOMղੳॲཧ 1item/1sec Λ࣮ݱ ɾ௚ۙͷΫϩʔϥʔ ࣮ߦ଎౓Λ্͛ΔͨΊʹᶃ html DLͷฒྻԽ
  13. ɾະΫϩʔϧΞΠςϜͷ࠶Ϋϩʔϧޮ཰Խ iQONʹଘࡏ͢ΔΞΠςϜͷதͰΫϩʔϥʔ͕ पΓ͖Ε͍ͯͳ͍ΞΠςϜͷΈΛ࠶Ϋϩʔ ϧɻࡏݿ΍஋ஈΛνΣοΫ͠ɺߋ৽͢Δɻ Redis iQON಺ͷΞ ΠςϜϦετ iQON಺ʹଘࡏ ͯ͠ɺΫϩʔϧ Ͱ͖ͨΞΠςϜ

    ճΓ͖Εͳ͔ͬ ͨΞΠςϜ iQON಺ʹଘࡏ ͯ͠ɺΫϩʔϧ Ͱ͖ͨΞΠςϜ ຖ೔iQON಺ͷΞΠ ςϜશͯΛޮ཰త ʹߋ৽͍ͯ͠Δɻ ECαΠτͷ Ϧετϖʔδ ͔ΒΫϩʔϧ ࠶Ϋϩʔϧ ࣮ߦ଎౓Λ্͛ΔͨΊʹᶄ
  14. ΞΠςϜ௥Ճͷϑϩʔ ECαΠτͷ঎඼Ұཡ iQONͷDB಺ʹଘࡏ͢ΔΞΠςϜ ᶃ HTMLͷऔಘ, DOMͷղੳॲཧ ΞΠςϜৄࡉϖʔδURL ᶄ ൑ఆॲཧ Ϋϩʔϥʔ

    πʔϧ ৽نΞΠςϜ (طଘΞΠςϜ) طଘΞΠςϜ MySQL S3 MongoDB Memcached Solr طଘΞΠςϜ ᶅ ߋ৽ॲཧ ৽نΞΠςϜ ϓογϡ௨஌
  15. ΞΠςϜ൑ఆ 1.  ঎඼ΧςΰϦޡ൑ఆͷ֬ೝ 2.  ը૾छผͷ൑ఆ ◦ɹϞϊ, τϧιʔ, Ϟσϧ, Ұ෦Ϟσϧ 1. 

    ෆཁΞΠςϜͷ࡟আ ◦ɹ͔Θ͍͘ͳ͍ΞΠςϜͷ࡟আ ɾࣾ಺πʔϧͰiQONʹ௥Ճ͢ΔΞΠςϜΛ൑ఆ ɾʮ଎౓ + ਫ਼౓ʯΛ্͛ΔͨΊͷਓྗ൑ఆ ɾֶश༻ͷσʔλΛམͱ͢→ΧςΰϦ൑ఆͷਫ਼౓UPΛਤΔ
  16. ΞΠςϜ௥Ճͷϑϩʔ ECαΠτͷ঎඼Ұཡ iQONͷDB಺ʹଘࡏ͢ΔΞΠςϜ ᶃ HTMLͷऔಘ, DOMͷղੳॲཧ ΞΠςϜৄࡉϖʔδURL ᶄ ൑ఆॲཧ Ϋϩʔϥʔ

    πʔϧ ৽نΞΠςϜ (طଘΞΠςϜ) طଘΞΠςϜ MySQL S3 MongoDB Memcached Solr طଘΞΠςϜ ᶅ ߋ৽ॲཧ ৽نΞΠςϜ ϓογϡ௨஌