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

Golang_ads_deliver

 Golang_ads_deliver

C0ac34dd3f585ed25b2f79857e5b174d?s=128

Kaneko Tatsuya

December 08, 2014
Tweet

Transcript

  1. (P੡αʔόʔΛ։ൃɾӡ༻ͯ͠ ʙϐΫγϒ৽޿ࠂ഑৴αʔόʔʙ ϐΫγϒΠϯϑϥDBUBUTVZ

  2. ࣗݾ঺հ w DBUBUTVZͱ͍͏*%ͰΠϯλʔωοτ্Ͱ׆ಈ w ΧλπΠͱ͔ͬͯݺ͹Ε͍ͯΔ w ʹେֶΛଔۀޙʹϐΫγϒೖࣾ w ޿ࠂαʔόʔͷΠϯϑϥ୲౰ʹ w

    *46$0/ຊઓ४༏উ w (PΛ࢖͍·ͨ͠ w (P͸ࠓճͷ޿ࠂαʔόʔͰॳΊͯ৮ͬͨϨϕϧ
  3. ৽޿ࠂαʔόʔ։ൃϝϯόʔʢਓʣ CBTI$ ؅ཧɾ഑৴αʔόʔϓϩτλΠϓ࡞੒ ؅ཧɾ഑৴αʔόʔ։ൃ୲౰ QJYJWͷ։ൃ΋૯ׅ 3BJMTΤϯδχΞ ؅ཧαʔόʔ։ൃ୲౰ DBUBUTVZʢࣗ෼ʣ ؅ཧαʔόʔΠϯϑϥ୲౰ ഑৴αʔόʔ։ൃɾΠϯϑϥ୲౰

    ؅ཧαʔόʔͷ+4΋ͨ·ʹॻ͍ͯΔ
  4. %/4 UZQFUBJM ޿ࠂ഑৴αʔόʔ ؅ཧαʔόʔ .Z42- qVFOUE qVFOUE /(*/9 ը૾ $"$)&

    LTLMPH NFNDBDIFE ޿ࠂσʔλ "QQMJDBUJPO (PMBOH දࣔ਺ ΫϦοΫ਺ 6/*9υϝΠϯιέοτ $JSDVT ޿ࠂσʔλ ܭଌ݁Ռ ϥ΢ϯυϩϏϯ 6/*9υϝΠϯιέοτ ϑΝΠϧσΟεΫϦϓλ
  5. ഑৴αʔόʔઃܭ w ܰྔͳ,74ʹ޿ࠂσʔλΛอଘ͓͍ͯͯ͠ϦΫΤετʹԠͯͦ͡ͷσʔλΛฦ ͢ΞϓϦέʔγϣϯ w ը૾σʔλ΋ಉ༷ʹ഑৴͢Δ͕Ωϟογϡ͓͖ͯ͠ը૾ੜ੒͕ෳ਺ճߦΘΕͳ ͍Α͏ʹ͢Δ w ը૾σʔλࣗମͷදࣔ਺ΛܭଌΛ͢Δ͜ͱ͸ͳ͍ w

    ը૾σʔλΛ౎౓ੜ੒ͨ͠Β͕͔͔࣌ؒΓ͗͢Δ w දࣔ΍ΫϦοΫ͕͞ΕΕ͹ϑΝΠϧʹॻ͖ࠐΉʢLTLMPHʣ w qVFOUEͰLTLMPHΛ؂ࢹͯ͠ܭଌ݁ՌΛ؅ཧαʔόʔͷ.Z42-ʹॻ͖ࠐΉ w άϩʔόϧ*1ͰϢʔβʔͷϦΫΤετΛ௚઀ड͚Δ͜ͱͰߴ଎ʹϨεϙϯεฦ٫
  6. ϑϨʔϜϫʔΫ w ϑϨʔϜϫʔΫ͸࢖ΘͣOFUIUUQΛੜͰ࢖͏ w ΠϯλʔϑΣΠε͸े෼෼͔Γ΍͍͢ w ޿ࠂ഑৴ͳͷͰςϯϓϨʔτΤϯδϯͳͲ΋ෆཁͰϧʔ ςΟϯά΋(&5ͷΈͰ୯७ w ௥͏ίʔυྔ΋গͳָͯ͘

    w ࡞ΔϓϩμΫτʹ΋ΑΔͩΖ͏͕ɼࠓճ͸ϑϨʔϜϫʔ ΫΛ࢖Θͳ͔ͬͨͷ͸େ੒ޭͩͬͨͱࢥ͏
  7. /HJOYͱ(PΛܨ͙ w ϢʔβʔͷϦΫΤετΛ௚઀(P͕ड͚ΔͷͰ͸ͳ͘/HJOYͰड͚͍ͨ w ϢʔβʔͷϦΫΤετΛόοϑΝϦϯάͯ͘͠ΕΔͷͰίωΫγϣϯͷอ ࣋ͳͲ໘౗ͳ͜ͱΛߟ͑Δඞཁ͕ͳ͘ͳΔ w (PͰ͸௿஗ԆͰϨεϙϯεΛฦ͢͜ͱ͚ͩΛߟ͑Ε͹Α͍ w ΞΫηε੍ޚͳͲ΋؆୯

    w ΩϟογϡͷػߏͳͲ͕؆୯ʹ࢖͑Δ w (PͰUDQΛMJTUFOͯ͠ىಈͨ͠αʔόʔʹରͯ͠QSPYZ@QBTT͢Δͱ஗͗͢Δ w 6/*9EPNBJOTPDLFUΛMJTUFOͯ͠αʔόʔΛىಈ͢Δඞཁ͕͋Δ
  8. 6/*9EPNBJOTPDLFU w ϓϩηεؒ௨৴ w ಉҰϚγϯ্ͳΒ਌ࢠؔ܎ͳͲ͕ແͯ͘΋௨৴͕Ͱ͖Δ w UDQͳͲΑΓ΋҆ఆɾߴ଎ʹಈ͘ w NFNDBDIFEͱͷ௨৴ʹ΋࢖༻͢Δͱߴ଎͔ͭ҆ఆతʹಈ࡞ͤ͞Δ͜ͱ͕ Ͱ͖Δ

    w ΋ͪΖΜ࢖༻͍ͯ͠Δ w ϐΫγϒࣾ಺Ͱ͸গͳ͍ϦιʔεͰେྔͷΞΫηεΛߴ଎ʹ͞͹ͨ͘Ίʹࢸ Δͱ͜ΖͰ࠾༻͞Ε͍ͯΔ w (Pͷ৔߹OFU-JTUFO VOJY QBUI ͷΑ͏ʹ͢Ε͹Α͍
  9. IPUEFQMPZ w %/4ϥ΢ϯυϩϏϯͷͨΊִ཭͕ࠔ೉ w ޿ࠂαʔόʔ͸"84Ͱ͸ͳ͍ͷͰ&-#͸࢖͑ͳ͍ w QJYJWपลαʔϏε͸ίετ໘͔Β"84Λ࢖Θͳ͍ w ௒େྔֆഅɾQJYJWࣣ༦୹࡭ࡇͳͲظؒݶఆͷ΋ͷʹ͸"84͸࢖ ΘΕ͍ͯΔ

    w ݱࡏͷ޿ࠂۀքͰ͸"84Λ࢖͏͜ͱ͕ଟ͍ͷͰ&-#Λ࢖ͬͯ IPUEFQMPZΛ࣮ݱ͍ͯ͠Δձ͕ࣾଟ͍ w ޿ࠂαʔόʔͳͷͰσϓϩΠ࣌ʹμ΢ϯλΠϜ͕ൃੜͯ͠͸͍͚ͳ͍
  10. $JSDVT w .P[JMMB͕࡞ͬͨ1ZUIPO੡ͷϓϩηε؅ཧπʔϧ w $JSDVTࣗମ͕ιέοτϑΝΠϧΛ࣋ͬͯɼΞϓϦέʔγϣϯ͸ϑΝΠϧσΟεΫϦϓ λΛ-JTUFOͤͯ͞ىಈ͢Δ w σϓϩΠ࣌ʹ৽͍͠ϓϩηε͕ىಈ͔ͯ͠Βݹ͍ϓϩηεΛLJMM͢Δ w μ΢ϯλΠϜͳ͠ͰΞϓϦέʔγϣϯΛೖΕସ͑Δ͜ͱ͕Ͱ͖Δ

    w ઃఆϑΝΠϧΛॻ͘ͱ͍͍ײ͡ʹىಈͯ͘͠ΕΔ w FYBNQMF͕๛෋ͳͷͰׂͱॻ͚Δ w (PଆͰ͸ϩά͸ඪ४ग़ྗͱඪ४Τϥʔग़ྗʹॻ͚ͩ͘Ͱ$JSDVT͕ϩάϑΝΠϧԽͱϩ άϩʔςʔτΛશͯ୲͏ w (Pଆͷ։ൃίετΛԼ͛Δ w DJSDVTDUMͱ͍͏ίϚϯυπʔϧܦ༝Ͱૢ࡞͢Δ
  11. socket TPDLFU࡞੒ ϑΝΠϧ σΟεΫϦϓλ FYFD socket ϑΝΠϧ σΟεΫϦϓλ ϓϩηε؂ࢹ DJSDVT͸ϓϩηε؂ࢹ͚ͩ

    ͰϦΫΤετ͸ײ஌͠ͳ͍ BQQ͸ϑΝΠϧσΟεΫϦϓλΛ -JTUFO͢ΔαʔόʔͰ͋Δඞཁ͕͋Δ αʔόʔىಈ࣌ αʔόʔىಈޙ circus app circus app
  12. circus socket ϑΝΠϧ σΟεΫϦϓλ app_old FYFD app_new ϓϩηε؂ࢹ αʔόʔϦϩʔυ αʔόʔϦϩʔυ

    BQQ@OFX͕ىಈ͢Δ·Ͱ଴ͭ BQQ@OFX͕ىಈͨ͠Β BQQ@PMEΛLJMM͢Δ circus socket ϑΝΠϧ σΟεΫϦϓλ app_old app_new ϓϩηε؂ࢹ LJMM
  13. w qBHͰίϚϯυϥΠϯΦϓ γϣϯΛ౉ͤΔΑ͏ʹ w TZTDBMM͸(PͰϑϦʔζ͞ ΕΔͷͰ(PҎ߱͸࢖Θͳ ͍ํ͕ྑͦ͞͏ w OFU-JTUFOFSΛ༻ҙ͢Δͱ෼ ذ͕ͭͰࡁΉ

    w खݩͰͷ։ൃΛ͠ʹ͘͘͠ͳ ͍Α͏ʹUDQͰͷαʔόʔىಈ ΋αϙʔτͰ͖Δ
  14. $JSDVT΁ϓϧϦΫ w $JSDVT͸(JU)VCͰ։ൃ͞Ε͍ͯΔ w %FCJBOͷJOJUEεΫϦϓτ͸$JSDVTࣗମͷϩάΛग़ྗ͠ͳ͔ͬͨ w ग़ྗͰ͖ΔΑ͏ʹมߋͯ͠ϓϧϦΫ΋ͯ͠ΈΔ w NFSHF͞Εͨ w

    ϐΫγϒͰ͸ࣾ಺Ͱ࢖༻͍ͯ͠ΔΦʔϓϯιʔεϓϩμΫτʹύο νΛૹΔͷ͸ਪ঑͞Ε͍ͯΔ w .P[JMMBͷϓϩηε؅ཧπʔϧDJSDVTʹϓϧϦΫͨ͠࿩DBUBUTVZ ͱ͸IUUQDBUBUTVZIBUFCMPKQFOUSZ
  15. ΩϟογϡԽ w ΞΫηεͷ౓ʹNFNDBDIFEʹΞΫηεΛͨ͠Β஗্͍ʹ$16࢖༻཰΋্͕ͬͯ͠ ·ͬͨ w QQSPG͔Β͸NFNDBDIFE͕஗͍ͱ͍͏͜ͱ͕Α͘෼͔Βͳ͔ͬͨ w ඇಉظʹσʔλΛऔಘ͢ΔͷͰQQSPGͰ͸͏·͘ग़ͯ͜ͳ͍ w XBMGTUPQXBUDI

    w NFNDBDIFEͷऔಘ݁ՌΛΞϓϦέʔγϣϯଆͰΩϟογϡ͢Δ͜ͱʹ w ௕͗͢Δͱ޿ࠂσʔλͷ൓ө͕஗ΕΔ w QNZMVOEHPDBDIF w άϩʔόϧʹDBDIFͱ͍͏ม਺໊Λ࢖ͬͯ͠·͏ͷͰJNQPSU࣌ʹผͷ໊લΛ͚ͭ Δ͜ͱΛਪ঑
  16. σϓϩΠ w ࣾ಺σϓϩΠπʔϧʹ৐͔ͬΔ w ϒϥ΢β͔Βద౰ʹΫϦοΫ͢ΔͱσϓϩΠαʔόʔ্ͰγΣϧεΫϦϓτ Λ࣮ߦͰ͖Δ w ࣾ಺ͷαʔϏε͸$BQJTUSBOP͔͜ͷσϓϩΠπʔϧ͕࢖ΘΕΔ͜ͱ͕ଟ͍ w qVFOUE͸)61γάφϧΛૹΔͱϦϩʔυͰ͖Δ

    w JOJUEεΫϦϓτΛࣗલͰ࡞੒ w (P͸ϥΠϒϥϦʹґଘ͠ͳ͍࣮ߦόΠφϦΛίϯύΠϧͰੜ੒ w σϓϩΠαʔόʔͰίϯύΠϧ֤ͯ͠αʔόʔ΁όΠφϦΛ഑෍
  17. git clone go build rsync circusctl reload && fluentd reload

    deploy server application server
  18. (PͷΞϓϦͷঢ়ଶΛݟ͍ͨ w SVOUJNF͕Ͳ͏ͳ͍ͬͯΔͷ͔ݟ͍ͨ w GVLBUBHPMBOHTUBUTBQJIBOEMFS w (PαʔόͷϞχλϦϯά2JJUBIUUQRJJUBDPNDVCJDEBJZBJUFNT CDBFBGC w ݱࡏ಺෦ʹऔΓࠐΜͰଞͷݟ͍ͨ৘ใΛݟΕΔΑ͏ʹͯ͠ศར"1*ʹ͍ͯ͠Δ

    w ΋ͪΖΜ/HJOYଆͰࣾ಺͔Β͔͠ݟΕͳ͍Α͏ʹ w σϓϩΠ͞ΕͨόʔδϣϯΛ஌Γ͍ͨ w HPCVJMEMEqBHT9NBJOBQQ7FSTJPOAHJUSFWMJTU)&"%OA w νϟωϧ͕٧·͍ͬͯͳ͍͔Έ͍ͨ w DBQ΍MFOͰঢ়ଶ͕ݟΕΔͷͰ+40/ܦ༝ͰݟΕΔΑ͏ʹ
  19. (Pͷύοέʔδ؅ཧ w ݱࡏ(PNΛ࢖͍ͬͯΔ͕׆༻͸Ͱ͖͍ͯͳ͍ w ಺෦ϦϙδτϦͷ(JU-BCΛ͏·͘ѻ͑ͳ͍ w ίϛοτ*%Λશ෦ॻ͍ͯΒΕͳ͍ w ͦ΋ͦ΋ެࣜͰఏڙ͞Ε͍ͯͳ͍ͷͰͲ͏͠Α͏΋ͳ͍ؾ͕͢Δ w

    NFNDBDIFEͷFYQJSFΛར༻͢Δࡍʹ৽͠Ίͷ֎෦ϥΠϒϥϦΛ࢖͏ඞཁ͕ग़ͯ ͜ͷ໰୊͕࠶೩ w ֎෦ϥΠϒϥϦΛৗʹ࠷৽ͷ΋ͷΛ࢖͏Α͏ʹ͢Δͱ(JU)VC͕ࢮΜͩΒσϓϩ ΠͰ͖ͳ͍BOE֎෦ϥΠϒϥϦͷߋ৽ͰʰԿ΋ͯ͠ͳ͍ͷʹʱࢮ͵Մೳੑ͕ग़ Δ w ޿ࠂγεςϜͱͯ͠க໋త
  20. (Pͷϓϩηε͕ίΞ͔͠࢖Θͳ͍ w NVOJOͷάϥϑ͕಄ΛଧͬͨΑ͏ʹͳΔ w ϨεϙϯελΠϜ͕ѱԽ͍ͯ͠ΔΘ͚Ͱ͸ͳ͍ w /HJOYͷΞΫηεϩάΛղੳͯ͠HSPXUIGPSFDBTUͰάϥϑʹ͍ͯ͠ΔͷͰϨεϙϯε λΠϜͷѱԽ͕֬ೝ͞Εͳ͔ͬͨ w (0."9130$4Λม͑ͯ΋μϝ

    w ͣͬͱʹ͍ͯͨ͠ͷΛ΍ʹ͕ͨ͠େ͖ͳҧ͍͸ݟΒΕͣ w ࠓ͸શ୆ʹ͍ͯ͠Δ w ΞΫηε͕ҰఆྔΛ௒͑Δͱ/HJOYͷΞΫηεϩάΛૹΔqVFOUEͱϩάΛॻ͖ࠐΉDJSDVT ͕$16Λ͔ͳΓᷰ͏Α͏ʹͳΔͷͰ(Pͷϓϩηεʹ$16Λ࢖ΘͤΔඞཁ͸ݱঢ়ͳ͍ w ͱΓ͋͑ͣ໰୊ͳ͍ͷͰ༷ࢠݟ
  21. 3VCZͷ໊࢒ w ഑৴αʔόʔΛ౰ॳ3VCZͰ࡞Ζ͏ͱͯ͠಴࠳ͨ͠ܦҢ͕͋Δ͕ݩʑ3VCZͰ࡞Ζ͏ͱͨ͠ ໊࢒͸ͨ͘͞Μ͋Δ w σΟϨΫτϦߏ੒͸ݩʑ$BQJTUSBOPͰσϓϩΠ͍ͯͨ࣌͠ͱม͍͑ͯͳ͍ w $BQJTUSBOPͱಉ͡Α͏ͳಈ͖Λ͢ΔγΣϧεΫϦϓτΛࣗલͰ࡞੒ w Ҡߦ࣌͸มߋ఺͕গͳ͍ํ͕Α͔ͬͨͨΊ͋Δఔ౓ϝϦοτ͕͕͋ͬͨɼ࠷దԽͷ༨஍

    ͕͔ͳΓ͋ΔͷͰॻ͖௚͍ͨ͠ w STZOD͸ࠩ෼͚ͩɾෳ਺αʔόʔ΁ฒྻʹSTZODͳͲ w όονॲཧ͸3VCZͱ(Pͷ͕ͭ࢖ΘΕ͍ͯͨΓͱ౷Ұੑ͕ͳ͍ w .Z42-΁ͷॻ͖ࠐΈͳͲ͸(Pʹ͢ΔϝϦοτ΋ͳ͍ͷͰࠓޙͲͷఔ౓։ൃϦιʔεΛ ׂ͚Δ͔͸ෆ໌ w ਖ਼௚໰୊͕͋ΔΘ͚Ͱ͸ͳ͍ͷͰ௚͞ͳͦ͏
  22. (Pͷਖ਼௚ͳײ૝ w +40/΍υϥΠόͳͲ͋·Γ଎͘ͳ͍΋ͷ΋͋Δ͕޻෉͢Ε͹͔ͳΓ଎͍αʔόʔ͕ ࡞ΕΔ w ݱঢ়ͷ഑৴αʔόʔࣗମͷύϑΥʔϚϯεʹ͸ຬ଍͍ͯ͠Δ w ຊ֨Ҡߦޙ΋େ͖ͳ໰୊͸ى͍ͬͯ͜ͳ͍ w ϗοτσϓϩΠͷͨΊʹDJSDVTΛબ୒ͨ͠ͱ͜Ζ(Pͷίʔυ͕ංେԽͤͣʹࡁΜͩ

    w σϓϩΠ͸όΠφϦΛ഑෍͢Δ͚ͩͳͷͰ؆୯ w 3VCZ͸CVOEMFJOTUBMMͳͲ໘౗ w HPSPVUJOFͰಈ͘αʔόʔ͸QSFGPSLͷαʔόʔͱ͸άϥϑͷܗ͕ҧ͏ͷͰࣾ಺Ͱ͸ݟ ׳Εͳ͍άϥϑʹͳΔ w ࣾ಺Ͱ͸1)1 "QBDIF ΍6OJDPSOͳͲQSFGPSLͷαʔόʔ͕ओྲྀ