大規模webサービス開発の実態 #TechLunch

大規模webサービス開発の実態 #TechLunch

2012/03/28(水) @ Livesense TechLunch
発表者:平山 宗介

E60aa4f80303f3f386898546ddb3686a?s=128

Livesense Inc.

April 23, 2014
Tweet

Transcript

  1. RC  4PTVLF)JSBZBNB

  2. lଞࣾ8&#αʔϏεͷ ӡ༻ͷݱ৔ͬͯΠϝʔδͰ͖·͔͢ʁz

  3. ΠϯτϩμΫγϣϯ lਓੜ৭ʑɺ8&#αʔϏε΋৭ʑɻz ✓  ͿͬͪΌ͚جຊߏ੒͸ಉ͡ɻ ✓  ͔͠͠αʔϏεຖͷཁ݅͸࣮͸݁ߏҧ͏ɻ ɾผʹ࣌ؒ͘Β͍མͪͯ΋͍͍Α ɾ͓٬༷ʹ4-"ఆΊͯΔ͠ઈରམͪΔ͜ͱ͸ڐ͞Εͳ͍ ɾ࣌ؒৗʹτϥϑΟοΫ͕൒୺ͳ͍Μ͚͢Ͳ ✓ 

    ଞࣾ8&#αʔϏεͷӡ༻Λݱ৔ϨϕϧͰ஌Δػձͬͯҙ ֎ʹগͳ͍ɻ   ଞࣾ8&#αʔϏεͷߏ੒ʗӡ༻Λ஌ͬͯΈͯ΋໘ന͍͔΋
  4. RC  େن໛8&#αʔϏε։ൃͷ࣮ଶ ʙ(3&&ͷ৔߹ʙ

  5. l(3&&zΛऔΓר͘؀ڥ

  6. ఏڙϝσΟΞ͔ΒΈͨ(3&& l4/4ӡӦऀz lιʔγϟϧήʔϜϓϥοτϑΥʔϚʔz ✓  ࠃ಺ ສਓҎ্ͷձһΛ࣋ͭϦΞϧλΠϜ4/4 ✓  ܳೳਓϢʔβͳͲ༷ʑͳϓϩϞʔγϣϯΞΧ΢ϯτ  ✓ 

    ಺੡͚ͩͰͳ͘SEϕϯμʔͷήʔϜ·ͰΛؚΉଟ਺ͷι ʔγϟϧήʔϜ͕ల։͞ΕΔϓϥοτϑΥʔϜ ✓  ιʔγϟϧήʔϜͱ͍͏ಛҟͳτϥϑΟοΫ ✓  ࿈ଧߋ৽Ϟσϧ͕ओྲྀ ✓  ༷ʑͳϦςϯγϣϯࢪࡦʢ੍࣌ؒݶɺট଴ɺΠϕϯτʣ ✓  ϦΞϧλΠϜੑ΁ͷཁٻ
  7. (3&&ͷτϥϑΟοΫ ✓  ౷߹͢Δͱجຊతʹఆৗతʹz௒zߴτϥϑΟοΫ ✓  &Y ͍͍Ͷػೳͷߋ৽ස౓ݟੵ΋Γɿ  EBZ TFD 

    ✓  ΤϯδχΞ͸ɺϝσΟΞΛ׆ੑԽͤͭͭ͞ɺ͍͔ʹ͜ΕΒͷτ ϥϑΟοΫΛ͞͹͔͘ͱ͍͏྆࣠ͰઃܭΛߟ͑Δ BWF
  8. l(3&&zͷجຊγεςϜߏ੒

  9. %$ɺ8&#αʔό -74 JQ@WT LFFQBMJWFE  64&3 WJQ 7331 8FC BQBDIF

    QIQQIQ  1SPYZ BQBDIF NPE@QSPYZ  -74 JQ@WT LFFQBMJWFE  ✓  ࣾͷ֎෦%$Λར༻ɺαʔό୆਺͸ͦΖͦΖສ୆ʁ ✓  MWT͸WJQʹΑΓΞΫηεΛड͚෇͚͓ͯΓWSSQʹΑͬͯ΋͏Ұ୆ͷMWT ͱ৑௕Խ ✓  QSPYZ͸NPE@QSPYZΛ༻͍ͯWJSUVBMIPTUຖʹଐ͢ΔXFCαʔόΛઃఆ ✓  XFC͸BQBDIF QIQQIQ
  10. %#αʔό %#.BTUFS 64&3 %#4UBOCZ %#4MBWF ✓  ଏʹ͍͏ϚελʔɺεϨʔϒํࣜ ✓  .BTUFSʹ͸ߋ৽ΫΤϦΛ޲͚Δ ✓ 

    4MBWFʹ͸ࢀরΫΤϦΛ޲͚Δ ✓  4UBOCZ͸όοΫΞοϓɺूܭ༻ 3FBE 8SJUF SFQMJDBUJPO
  11. ը૾αʔό $%/ BLBNBJ MJNFMJHIU  64&3 ΞόλʔͳͲͷ ಈతੜ੒ը૾ إࣸਅ ✓ 

    एׯ͜Ε͕ਖ਼͍͔͠͸͋΍͍͠ɻɻ ✓  ৭ʑ෼ࢄ͍ͯ͠Δͷ͸ྺ࢙తܦҢ΋͋ΔͬΆ͍ ɹϑΥτ DBDIF TRVJE 
  12. ・ 何らかのイベント情報を関連する ユーザに配信するための仕組み ・ 非同期処理を行うミドルウェア ・ Q4Mライク ༷ʑͳϛυϧ΢ΣΞ lBTZODz lGFFEz

    ・ 永続的なmemcached ・ CTO作 ・ memcachedの持つ課題を解決 l'MBSFz ͳͲͳͲ  ・ MySQL Proxy ・ 自動的なマスター切り替え lHQSPYZz ・ 分散ストレージ lOBOPGTz
  13. جຊઃܭํ਑ͱ έʔεผઃܭΞϓϩʔν

  14. جຊઃܭํ਑ lԿΑΓ΋εέʔϥϒϧͰ͋Δ͜ͱɻz ✓  ωοτϫʔΫɺετϨʔδɺ*0શͯʹ͓͍ͯεέʔϧՄ ೳͰ͋Δͱ͍͏͜ͱ͕࠷΋ॏཁࢹ ✓  +0*/ͷېࢭʢγϟʔσΟϯάͷ؍఺ʣ ✓  03.ར༻ͷېࢭʢ஗ԆՕॴͷਝ଎ͳ೺Ѳʣ ✓ 

    .Z42-ϨϓϦέʔγϣϯ஗Ԇ͸ఆৗతʹ͓͜Δ΋ͷ ✓  ༷ʑͳιϦϡʔγϣϯͷ૊Έ߹ΘͤͰ࠷దͳղΛߟ͑Δ 
  15. έʔεʣϞϯϓϥʹ͓͚Δܦݧ஋ߋ৽ 64&3 <.Z42->  UCFYQ ܦݧ஋ߋ৽ 1IBTFαʔόͰ༨༟Ͱ͞͹͚Δ ECNPOTUFS ✓  ΫΤϦʔ͕૿͑ͯ͞͹͚ͳ͘ͳ͖ͬͯͯ͠·ͬͨɻɻɻ

    
  16. έʔεʣϞϯϓϥʹ͓͚Δܦݧ஋ߋ৽ 64&3 <.Z42->  UCFYQ ܦݧ஋ߋ৽ 1IBTFෳ਺αʔόͰ͞͹͘ ECNPOTUFS  UCFYQ

    ECNPOTUFS  UCFYQ ECNPOTUFS  UCFYQ ECNPOTUFS VTFS@JE ͳͲͰγϟʔσΟϯά ✓  ఆৗతʹى͜ΔεϨʔϒ஗ԆʹରԠ͠ͳͯ͘͸ɻɻɻ
  17. έʔεʣϞϯϓϥʹ͓͚Δܦݧ஋ߋ৽ 64&3 <.Z42->  UCFYQ 1IBTFεϨʔϒ஗ԆʹରԠ͢Δ ECNPOTUFS  UCFYQ ECNPOTUFS

     UCFYQ ECNPOTUFS  UCFYQ ECNPOTUFS ✓  NFNDBDIFͷFWJDUJPO໰୊ɻɻɻ ✓  'MBSFΛதؒΩϟογϡͱͯ͠࠾༻ ܦݧ஋ࢀর ܦݧ஋ߋ৽ Ωϟογϡ ʢϥΠτεϧʔʣ
  18. έʔεʣλΠϜϥΠϯϑΟʔυ <ཁ݅> ୭͔͕ͻͱ͜ͱΛॻ͘ͱͦͷ༑ͩͪશͯͷλΠϜϥΠϯ৘ใ͕ߋ৽͞ΕΔ  <՝୊> ಉظతʹ%#ߋ৽Λ͢Δͱͱͯ΋ͱͯ΋·ΘΒͳ͍ <ରԠํ਑> ຊཁ݅ʹे෼ʹରԠ͢ΔͨΊͷ৽ͨͳϑϨʔϜϫʔΫΛ։ൃ ʢ"TZODʗ'FFEʣ

  19. έʔεʣλΠϜϥΠϯϑΟʔυ 84 2VFVF "TZOD "TZOD ʜ 'MBSF λΠϜϥΠϯΛ֨ೲ͢ΔετϨʔδ ˞UNQGTͰಈ࡞͢Δ.Z42-αʔό )551ϦΫΤετ

    )551Ϩεϙϯε ඇಉظΩϡʔ΁ͷ௥Ճ "TZOD 2VFVF΁ͷ໰͍߹Θͤʢ1VMMʣ "TZOD্Ͱಈ͘ϓϩηεΛ ૿΍͢͜ͱͰແݶʹεέʔϧ͢Δ ͜ͱ͕Մೳ
  20. ɹ·ͱΊ

  21. ·ͱΊ ✓  ୯७ʹ8&#αʔϏεͷ։ൃʗӡ༻ͱ͍ͬͯ΋༷ʑɻͦΕͧ ΕͰ։ൃऀͷۤ࿑΍஌ܙ͕੝Γࠐ·Ε͍ͯΔɻ ✓  ଞࣾ͞Μͷ։ൃʗӡ༻ϊ΢ϋ΢Λ஌Γ߹͍ͱ͔͔ΒͪΒͬ ͱͰ΋ฉ͍ͯΈΔͱݱࡏͷ։ൃʹ໾ཱͭ͜ͱ΋͖ͬͱ͋Δɻ ݱঢ়ͷӡ༻͕ઈରతʹਖ਼͍͠ͱ͍͏͜ͱ͸ͳ͍ɻ ✓  ৽ڵαʔϏεͳͲʢ:BNNFS-JOLFE*OʣͷγεςϜߏ੒

    ΛαʔϕΠ͍ͯ͘͠ͱ৭ʑͱ໘ന͍ؾ͖͕ͮ͋Δ͸ͣʢ৘ ใ͸গͳ͍͚Ͳʣɻ 
  22. ؔ࿈ࢿྉ

  23. ΢ΣϒΦϖϨʔγϣϯ αΠτӡ༻؅ཧͷ࣮ફςΫχοΫ = 

  24. ࣍ճ༧ࠂ ʢ࣍ճ͸ίΞͳ࿩Λ͍ͨ͠ʣ

  25. ࣍ճൃද༧ࠂ ిࢠ޻࡞ܥʢBSEVJOPJP#SJEHFʣ ը૾ೝࣝܥʢ0QFO$7ʣ ϞόΠϧܥʢ81 5JUBOJVNʣ Ϋϥ΢υܥʢ"84 "[VSFʣ ˞ݸਓతʹ͸͔ɻͲΜҾ͖͞Εͦ͏ͳΒ͔ɻ