Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
҆શ͔ͭߴʹਐΊΔ ϚΠΫϩαʔϏεԽ 3BJMT%FWFMPQFST.FFUVQ !LLVCVO
Slide 2
Slide 2 text
ࣗݾհ • GitHub, Twitter: @k0kubun • Treasure Data ॴଐ • Site Reliability Engineer • Ruby 2.6ͷJITίϯύΠϥ։ൃத
Slide 3
Slide 3 text
Treasure Data Ͱͷ1ؒ • 2017 1Q: TD APIͷ։ൃ • 2017 2Q: bigdam-queue • 2017 3Q: Fluentd Enterprise • 2017 4Q: Embulk Config Microservice • 2018 1Q: SRE: AutoScaling, Deployment
Slide 4
Slide 4 text
ࠓ͢͜ͱ 1. αʔϏεׂͷલʹߟ͑Δ͖͜ͱ 2. ҆શ͔ͭߴʹׂ͢ΔͨΊͷςετख๏ 3. Railsʹ͓͚ΔϦτϥΠͷ࣮ύλʔϯ 4. RailsΞϓϦͷΓग़͠Ͱࠔͳ 5. ҆શʹσϓϩΠڥΛվળ͍ͯ͘͠
Slide 5
Slide 5 text
1. αʔϏεׂͷલʹߟ͑Δ͖͜ͱ
Slide 6
Slide 6 text
ϚΠΫϩαʔϏεԽͰ ԿΛղܾ͠·͔͢? Q1.
Slide 7
Slide 7 text
ฐࣾͷࠓճͷαʔϏεׂͷܦҢ : ࠓճͷΓग़͠ͰͲΕطʹେମղܾࡁͰ͢!!!
Slide 8
Slide 8 text
Ϟσϧͷ࣮ͷఆ͕ٛYAMLͱͯ͠ ผϦϙδτϦʹΓग़͞Ε͍ͯΔ
Slide 9
Slide 9 text
ຊମͷRailsΞϓϦͱผʹϦϦʔε͢ΔͨΊɺ ͦͷYAMLΛDBʹͭͬ͜ΜͰಈతʹڍಈΛมߋ + APIͰͦΕ͕ϦϦʔεͰ͖Δঢ়ଶ
Slide 10
Slide 10 text
APIʹΑΔYAMLͷϦϦʔεͰϝιουͷఆ͕ٛ ಈతʹมΘΔͷͰɺϝιουΛݺͼग़͢ʹΫ ΤϦ͕ඞཁʹͳΓ͍
Slide 11
Slide 11 text
ͦͦΓग़͞Ε͍ͯͳ͍Railsͷίʔυ ͱYAML͕ڧ݁߹ͳ͜ͱʹΑΔϦϦʔεॱং ґଘͷൃੜͱͦΕʹΑΔো
Slide 12
Slide 12 text
ຊ1ͭͷϦϙδτϦʹͨ͠ํ͕͍͍ʹܾ·͍ͬͯΔ͕ɺ Ͱ͖ΕΛ໌֬ʹͯ͠νʔϜؒͷίϛϡχέʔγϣ ϯίετΛԼ͛ͨΓಠཱʹϦϦʔεͨ͠Γ͍ͨ͠
Slide 13
Slide 13 text
=> YAML͡Όͳͯͪ͘ΌΜͱαʔϏεͱͯ͠͠Α͏
Slide 14
Slide 14 text
ϚΠΫϩαʔϏεԽͰൃੜ͢Δ શͯڐ༰Ͱ͖·͔͢? Q2.
Slide 15
Slide 15 text
ڥքΛލ͍ͰJOIN͕Ͱ͖ͳ͍
Slide 16
Slide 16 text
DBΛ͢ΔͱɺͦΕΛލ͙τϥ ϯβΫγϣϯ͕͔͚ΒΕͣҰ؏ੑ͕ ୲อͰ͖ͳ͘ͳΔ
Slide 17
Slide 17 text
ϦιʔεΛऔΔͨΊʹී௨ͷ ActiveRecordͷίʔυ͕͑ͳ͍
Slide 18
Slide 18 text
োൃੜݯͷ૿Ճ
Slide 19
Slide 19 text
αʔϏε͕૿͑Δ͜ͱʹΑΔ Πϯϑϥཧ/ӡ༻ίετͷ૿େ
Slide 20
Slide 20 text
ΤϯυϙΠϯτؙ͝ͱ͢Δ? ෦APIʹ͍ͯ͠ΖΜͳॴ͔Βୟ͘? Q3.
Slide 21
Slide 21 text
ࠓճ෦APIدΓͷɺ͔͠ ࠷ॳ͔Βͦ͏࡞ΔͷͰͳ్͘ தͰΓग़࣌͢ͷΛ͠·͢
Slide 22
Slide 22 text
2. ҆શ͔ͭߴʹׂ͢ΔͨΊͷςετख๏
Slide 23
Slide 23 text
ϚΠΫϩαʔϏεԽͷ࠷த ͲͷΑ͏ʹςετ͠·͔͢?
Slide 24
Slide 24 text
ओͳςετͷબࢶ • ϝιουݺͼग़͠୯ҐͰڥքΛશͯελϒ͢Δ • VCRͰ֎෦ͷϦΫΤετΛશͯελϒ͢Δ • ಈ͔͢ίϯϙʔωϯτΛશͯ༻ҙͯ݁͠߹ςετ • Pact Ͱ Consumer Driven Contract Testing ࢀߟ: https://medium.com/@copyconstruct/testing-microservices-the-sane-way-9bb31d158c16
Slide 25
Slide 25 text
ςετͰ۩ମతʹԿΛୡ͍ͨ͠ͷ͔ • ୯ͳΔίϐϖͰࡁΈͦ͏ʹͳ͘ɺΓग़͢ॠ͕ؒҰ൪Ϧε Ϋ͕ߴ͍ͷͰɺͲ͏ʹ͔͚ͯͦͩ҆͜͠શʹࡁ·͍ͤͨ • ͔ͱ͍ͬͯઐ༻ͷςετΛҰ͔Βॻ͖·͘Δ΄ͲՋͰͳ ͍ͷͰɺۃྗطଘͷςετࢿ࢈Λྲྀ༻͍ͨ͠ • ͦͯ͠ଞͷ։ൃΛશ͘ࢭΊͨ͘ͳ͍ͷͰςετ͕ৗʹ༷ ͷมߋʹैͰ͖ͳ͍ͱ͍͚ͳ͍
Slide 26
Slide 26 text
ओͳςετͷબࢶ • ϝιουݺͼग़͠୯ҐͰڥքΛશͯελϒ͢Δ • VCRͰ֎෦ͷϦΫΤετΛશͯελϒ͢Δ • ಈ͔͢ίϯϙʔωϯτΛશͯ༻ҙͯ݁͠߹ςετ • Pact Ͱ Consumer Driven Contract Testing ༷มߋʹର͢Δ ελϒͷैΛΕͦ͏
Slide 27
Slide 27 text
ओͳςετͷબࢶ • ϝιουݺͼग़͠୯ҐͰڥքΛશͯελϒ͢Δ • VCRͰ֎෦ͷϦΫΤετΛશͯελϒ͢Δ • ಈ͔͢ίϯϙʔωϯτΛશͯ༻ҙͯ݁͠߹ςετ • Pact Ͱ Consumer Driven Contract Testing ୭͕Χηοτߋ৽͢Δͷ? ࣗಈͰߋ৽͢Δ ͳΒΧηοτʹͯ͠Δҙຯͳ͘ͳ͍?
Slide 28
Slide 28 text
ओͳςετͷબࢶ • ϝιουݺͼग़͠୯ҐͰڥքΛશͯελϒ͢Δ • VCRͰ֎෦ͷϦΫΤετΛશͯελϒ͢Δ • ಈ͔͢ίϯϙʔωϯτΛશͯ༻ҙͯ݁͠߹ςετ • Pact Ͱ Consumer Driven Contract Testing ͜Εݩ͔Β͋ͬͯɺϝϯςίετ ߴ͍͕ҰԠͦͷ··͑Δ
Slide 29
Slide 29 text
ओͳςετͷબࢶ • ϝιουݺͼग़͠୯ҐͰڥքΛશͯελϒ͢Δ • VCRͰ֎෦ͷϦΫΤετΛશͯελϒ͢Δ • ಈ͔͢ίϯϙʔωϯτΛશͯ༻ҙͯ݁͠߹ςετ • Pact Ͱ Consumer Driven Contract Testing ༷มߋΛ͢Δਓͨͪʹ͜ΕΛֶशͯ͠Β͏ίετ͕ߴ ͗͢Δ + Pact Brokerͷ༻ҙӡ༻ඞཁͳͷͰɺҰճͷ Γग़͠Ͱಋೖ͢ΔʹΦʔόʔΩϧ (ظతʹཉ͍͠)
Slide 30
Slide 30 text
͡Ό͋݁߹ςετ͚ͩΛཔΓʹͰ͖Δͷ͔? • ݱঢ়ɺ݁߹ςετओʹΫϦςΟΧϧͳڍಈʹରͯ͠ͷΈ ॻ͔Ε͓ͯΓɺͦΕ͚ͩͩͱखബ͍ • ͔ͱ͍ͬͯແҋʹ݁߹ςετΛ૿͢ͱอक͕͠ΜͲ͍ • ςετࣗମͷอक͕νʔϜʹด͡ͳ͘ͳΔͷͰίϛϡχ έʔγϣϯίετ͕ൃੜ • ނো͕ଟͯ͘ෆ҆ఆʹͳΓ͕ͪ (ಛʹCapybaraͱ͔)
Slide 31
Slide 31 text
Γग़͠ݩΞϓϦͷrspecϓϩηε spec_helper.rb ࠓճ༻ͨ͠ςετख๏: Γग़ͨ͠ΞϓϦ Λىಈͯ͠ϢχοτςετΛΒͤΔ
Slide 32
Slide 32 text
Γग़͠ݩΞϓϦͷrspecϓϩηε spec_helper.rb Γग़ͨ͠RailsΞϓϦ ͷϓϩηε at_exit ࠓճ༻ͨ͠ςετख๏: Γग़ͨ͠ΞϓϦ Λىಈͯ͠ϢχοτςετΛΒͤΔ Spawn Kill
Slide 33
Slide 33 text
Γग़͠ݩΞϓϦͷrspecϓϩηε spec_helper.rb at_exit ڞ༗DB (ޙͰΓ͢) ࠓճ༻ͨ͠ςετख๏: Γग़ͨ͠ΞϓϦ Λىಈͯ͠ϢχοτςετΛΒͤΔ *_spec.rb FactoryBot Γग़͢࠷த·ͩDB͕ڞ༗͞ΕͯΔ ͜ͱΛҰ࣌తʹ׆͔ͯ͠ςετΛಈ͔͢ Γग़ͨ͠RailsΞϓϦ ͷϓϩηε
Slide 34
Slide 34 text
Γग़͠ݩΞϓϦͷrspecϓϩηε spec_helper.rb at_exit ڞ༗DB (ޙͰΓ͢) ࠓճ༻ͨ͠ςετख๏: Γग़ͨ͠ΞϓϦ Λىಈͯ͠ϢχοτςετΛΒͤΔ *_spec.rb FactoryBot Γग़ͨ͠RailsΞϓϦ ͷϓϩηε Γग़͠ݩ RailsΞϓϦ ԿελϒͤͣϦΫΤετ
Slide 35
Slide 35 text
Γग़͠ݩΞϓϦͷrspecϓϩηε spec_helper.rb at_exit ڞ༗DB (ޙͰΓ͢) ࠓճ༻ͨ͠ςετख๏: Γग़ͨ͠ΞϓϦ Λىಈͯ͠ϢχοτςετΛΒͤΔ *_spec.rb FactoryBot Γग़ͨ͠RailsΞϓϦ ͷϓϩηε Γग़͠ݩ RailsΞϓϦ Γग़ͨ͠DB DBͷΓ͠ʹ͍FactoryBotΛଔۀ ͔ΘΓʹAPIͰϦιʔεΛ࡞Δ
Slide 36
Slide 36 text
͜ͷख๏ͷྑ͍ͱ͜Ζɺѱ͍ͱ͜Ζ • ྑ͍ͱ͜Ζ • ଞͷਓ͕มߋͨ͠ςετΛ΄΅ͦͷ··͑ɺͱʹ͔༷͘มߋʹڧ͍ • Կελϒ͠ͳ͍͍ͯ͘ͷͰςετΛॻ͘ͷָ͕ • ѱ͍ͱ͜Ζ • Γग़͠ݩͷCIͷ͕࣌ؒ৳ͼΔ • Γग़ͨ͠ΞϓϦΛىಈ͢ΔखஈΛϝϯς͢Δίετ͕͔͔Δ • Γग़ͨ͠ΞϓϦͰյΕͨ࣌ͷσόοάํ๏͕গ͠มΘΔͷͰ໘
Slide 37
Slide 37 text
ۜͷؙͳ͍ͷͰࣗͨͪͷϑΣʔζཁ݅ ʹ߹ΘͤͯॊೈʹղܾࡦΛม͑ଓ͚·͠ΐ͏
Slide 38
Slide 38 text
3. Railsʹ͓͚ΔϦτϥΠͷ࣮ύλʔϯ
Slide 39
Slide 39 text
ΤϥʔϋϯυϦϯάͷ؍Ͱ ҙͷAPIΫϥΠΞϯτʹٻΊΒΕΔཁ݅ • ඇܾఆతͳΤϥʔʹରͯ͠exponential backoff͖ͭͰϦτ ϥΠͰ͖Δ • λΠϜΞτΛઃ͚͍ͯΔ (ແݶʹϋϯά͠ͳ͍) • αʔϏε͕མ͍ͪͯΔ͜ͱ͕໌Β͔ͳ߹ɺҰఆظؒϦ ΫΤετΛεΩοϓͰ͖Δ (Circuit Breaker)
Slide 40
Slide 40 text
Circuit BreakerύλʔϯͷͨΊͷϥΠϒϥϦ • circuit_breaker.gem • γϯϓϧɺ͚ͩͲmix-inͳͷͰݸਓతʹ͋·Γ͍ͨ͘ͳ͍ • expeditor.gem • Circuit Breaker͚ͩͰͳ͘ɺϦτϥΠɺλΠϜΞτɺࣦഊ࣌ ͷϑΥʔϧόοΫɺඇಉظԽͳͲ࣮ • ਖ਼expeditorʹඇಉظԽ͍Βͳ͔ͬͨΜ͡Όͳ͍͔ͱࢥͬͯ Δ͚ͲɺฐࣾͰmakimoto͞Μͱ͕ৄ͍͠ͷͰ͜ΕΛ࠾༻
Slide 41
Slide 41 text
࣮ࡍͷAPIΫϥΠΞϯτͷྫ (GET)
Slide 42
Slide 42 text
ϦτϥΠઓུ • exponential backoffΛ͚ͭɺແཧʹෛՙΛ͔͚ͳ͍Α͏ʹ • 5XXͰɺϦτϥΠՄೳͳ͜ͱ͕໌Β͔Ͱͳ͍ΤϥʔઈରϦτϥΠ͠ͳ͍ • ΫϥΠΞϯτଆͷϫʔΧʔΛແବʹϒϩοΫͨ͠Γɺαʔόʔଆͷো࣌ʹෛՙΛ͔͚Α Γঢ়گΛѱԽͤͨ͞Γ͢ΔͨΊ • ྫ͑500NoMethodErrorͱ͔ͩͬͨΓ͢ΔͷͰϦτϥΠ͖͢Ͱͳ͍ • ϦτϥΠࠐΈͷશମͷλΠϜΞτͱɺ֤ϦτϥΠͷλΠϜΞτΛઃ͚Δ • ҰॠͰࢮ͵ΤϥʔΛΑΓଟΊʹϦτϥΠ͢ΔͨΊ • ͲͷΤϥʔ͕ϦτϥΠՄೳ͔APIʹΑͬͯҟͳΔ • ֤HTTPϝιου͝ͱʹੑʹؔ͢ΔڍಈΛαʔόʔଆͰ౷Ұ͓ͯ͘͠ͱָ
Slide 43
Slide 43 text
RailsͰසൟʹ࡞ΒΕͦ͏ͳҎԼͷύλʔϯͰ APIαʔόʔ/ΫϥΠΞϯτΛͲ͏࣮͢Δ͔ • GET /embulk_configs (index) • GET /embulk_configs/:id (show) • POST /embulk_configs (create) • PATCH /embulk_configs/:id (update) • DELETE /embulk_configs/:id (destroy) APIͩͱ #new, #edit ࡞Γ·ͤΜΑͶ?
Slide 44
Slide 44 text
GET /embulk_configs (index) • αʔόʔ • ͨΓલ͚ͩͲGETશͯϩάҎ֎ͷ෭࡞༻͕ͳ͍Α͏ʹ͢Δ • ΫϥΠΞϯτ • ΄΅ϦτϥΠ͠์͚ͩͲɺલड़ͷཧ༝ʹΑΓ404, 422, 500 ͱ͔Ί͓͖ͯ·͠ΐ͏ • αʔόʔ͕མͪͯΔܥ(502, 503)ͱΫϥΠΞϯτͰλΠϜΞ τͨ͠ܥΛϦτϥΠ͢Δ
Slide 45
Slide 45 text
GET /embulk_configs/:id (show) • GETͳͷͰ#indexͱಉ͡ঢ়ଶʹ͓ͯ͘͠
Slide 46
Slide 46 text
POST /embulk_configs (create) • αʔόʔ • ࡞ରͷϦιʔεʹunique index͕͋Δ: RecordNotUnique࣌ͷϨεϙϯεΛ ۠ผՄೳʹ͢Δ (409ฦ͢ͱ͔) • ͳ͍: ϦΫΤετIDΈ͍ͨͳͷΛΫϥΠΞϯτʹ༻ҙͤ͞ɺͦΕΛ͚࣋ͭͩͷ ςʔϒϧͷϨίʔυͱ࡞ରͷϦιʔεΛτϥϯβΫγϣϯͰίϛοτ͢Δ • ΫϥΠΞϯτ • 409 Conflictͷ߹ϦτϥΠ͠ͳ͍ • ϦΫΤετIDΛ༻ҙ͢Δ߹SecureRandom.uuidͱ͔Λ༻ҙ͠ɺϦτϥΠͷ ؒͰಉ͕͡ΔΑ͏ʹ͢Δ 409ͷͷݩωλ: http://frsyuki.hatenablog.com/entry/2014/06/09/164559
Slide 47
Slide 47 text
PATCH /embulk_configs/:id (update) • αʔόʔ • ؾ߹Ͱʹ͢Δ • ΞϓϦέʔγϣϯ࣍ୈ͕ͩɺ͘͝γϯϓϧͳཁ݅Ͱ͋Ε ʹͳΔΑ͏ʹ࣮͢Δͷ͘͠ͳ͍ • ΫϥΠΞϯτ • ʹ͑͞ͳ͍ͬͯΕɺGETͱ͔ͱϦτϥΠ͖͢Τ ϥʔมΘΒͳ͍ (ͳͬͯͳ͍ͳΒৗʹϦτϥΠ͠ͳ͍) UPDATEͷੑʹؔͯͪ͜͠Βࢀߟʹ: http://frsyuki.hatenablog.com/entry/2017/08/10/140416
Slide 48
Slide 48 text
DELETE /embulk_configs/:id (destroy) • αʔόʔ • ඞͣ͠ϦτϥΠͰਖ਼ৗͳϨεϙϯε͕ظͰ͖Δํ๏Ͱͳ͍͕ɺී௨ʹfind͠ ͯdestroyͨ͠ΒϦιʔεʹର͢Δૢ࡞গͳ͘ͱʹͳΔ • Ͳ͏ͯ͠ʹ͍ͨ͠ͳΒɺཧআ͔ͭաڈʹϨίʔυଘࡏ͚ͨ͠Ͳআ ࡁͰ͋Δ͜ͱ͕Θ͔Δ߹ɺޭΛฦ͍͍͔ͯ͠ • ཧআͷ߹ͦͦ࡞ΒΕ͍ͯͳ͔ͬͨ߹ͱผͰ͖ͳ͍ͷͰ404 • ΫϥΠΞϯτ • ্هͷڍಈͰ͋ΕGETͱಉ͡ΤϥʔΛϦτϥΠͯ͠Ε͋·ΓࠔΒͳ͍ͣ • طʹআࡁͷ߹(404)ϦτϥΠ͠ͳ͍
Slide 49
Slide 49 text
4. RailsΞϓϦͷΓग़͠Ͱࠔͳ
Slide 50
Slide 50 text
Γग़͠ઌʹ͍͚࣋ͬͯͳ͍ ΞιγΤʔγϣϯ • ྫ͑Γग़ͦ͏ͱ͍ͯ͠ΔϞσϧ͕ belongs_to :user Λ࣋ͭ ߹ • ֎෦ʹݟ͑Δܗͱͯ͠αʔϏε͕͔Ε͍ͯΔ߹usersςʔ ϒϧͷߋ৽ΛPubSubͰ௨ͯ͠Γग़͠ઌʹίϐʔΛ࣋ͭͱ͔ • ͋Δ͍ɺDBΛ͢Δ߹Ͳ͏ͬͯҰ؏ੑଛͳΘΕΔ ͷͰɺׂΓͬͯuser_id͚ͩΓऔΓ͢Δ • JOINͰ͖ͳ͍͠ΧϥϜͷͷҙຯෆ໌ʹͳΔ͕ɺߏ γϯϓϧʹอͯΔ
Slide 51
Slide 51 text
JOINͷඞཁͳιʔτ • A.belongs_to :b ͰBΛผαʔϏεʹΓग़͍͕ͨ͠ɺb.nameͰAΛ ιʔτ͢ΔAPI͕͋Δ߹ • ࢮ͋ΔͷΈ • ͦͦͦΜͳΠϯλʔϑΣʔεΛ࡞ΔͷΛΊΖ • DBͷͷҰ؏ੑΛ͋Δఔ͖͋ΒΊɺb.nameͷίϐʔͰ͋Δ a.b_nameΛੜͯ͠ϝϯς͢Δ͔͠ͳ͍ • ྫ͑ιʔτʹa.b_nameΛ͏͕b.nameΛฦ͢ͳͲ͢Δɻ ͨ·ʹॱং͕͓͔͍͠ͷΛڐ༰Ͱ͖ͳ͍ͳΒΓग़͠ఘΊΔ
Slide 52
Slide 52 text
ؾܰʹղܾͰ͖ͳ͘ͳΔN+1 • ActiveRecordͷΫΤϦΛAPIݺͼग़͠ʹͨ͠ॠؒ includes/preload/eager_load ͕͑ͣਏ͍ • ઈରʹΊΑ͏: ࢥߟఀࢭΩϟογϡ • ී௨ʹidͷϦετΛऔͬͯฦ͢APIΛੜ͠ɺฦ͖ͬͯͨ ࢠϦιʔεΛϦιʔεͷΠϯελϯεมʹ২͑Δ͔ɺ { Ϧιʔε => ࢠϦιʔε } ͳHashΛ࡞Δ • ͍͔ͬͯ͘͠ͳ͍͕ɺ͜ͷൺֱత؆୯ͳํ
Slide 53
Slide 53 text
ೝূೝՄͲ͏͢Δͷ • ී௨ʹ֎෦ʹݟ͑ͯΔ߹ී௨ʹೝূΛ࣮͢Ε͍͍ ͚ͩ • ෦Ͱୟ͘APIɺ֎෦͔Βୟ͚ͳ͍Α͏ʹ্ͨ͠Ͱɺཁ ݅ʹΑͬͯϕʔγοΫͳೝূೝՄΛεΩοϓͰ͖Δ • ͕ɺΓग़͠ઌͷೝՄʹΓग़͠ݩͷϦιʔε͕ඞཁ ͳ߹ɺ͕Μͬͯ୲͠Γ͍͔ͯ͘͠͠ͳ͍ • ʮେมͰ͢ΑͶɺ͜ΕʯҎ্ͷؾ࣋ͪಛʹͳ͍
Slide 54
Slide 54 text
࠷ߴͷղܾࡦ: ΈΜͳͰҰͭͷνʔϜʹͳΓ શһ͕શͯΛϝϯςͰ͖ΔΑ͏ʹͳΓ ͦͦϚΠΫϩαʔϏεԽΛෆཁʹ͢Δ ·͋ͦΕ͕Ͱ͖ͳ͍͔Β͜Μͳ໘ͳΛղܾ͠ͳ͍ͱ͍͚ͳ͍Θ͚Ͱ͢
Slide 55
Slide 55 text
5. ҆શʹσϓϩΠڥΛվળ͍ͯ͘͠
Slide 56
Slide 56 text
ةݥͳσϓϩΠڥΛվળ͠ ͍ͯͬͨ • ϚΠΫϩαʔϏεಛʹؔͳ͍͚Ͳʮ҆શ͔ͭߴʯʹ ॏཁͳ෦ • ͲΜͳʹஸೡʹ࣮ͯ͠σϓϩΠڥ͕μϝͩͱ҆શ ʹߴʹਐΊΒΕͳ͍
Slide 57
Slide 57 text
ਓྨͷσϓϩΠͷจ໌ͷൃల • ssh + git pull σϓϩΠ (capistrano) • ΞʔΧΠϒΛpull͢ΔλΠϓͷσϓϩΠ • DockerίϯςφͷσϓϩΠ • ίϯςφΫϥελͷσϓϩΠ (ECS, k8s)
Slide 58
Slide 58 text
ਓྨͷσϓϩΠͷจ໌ͷൃల • ssh + git pull σϓϩΠ (capistrano) • ΞʔΧΠϒΛpull͢ΔλΠϓͷσϓϩΠ • DockerίϯςφͷσϓϩΠ • ίϯςφΫϥελͷσϓϩΠ (ECS, k8s) զʑݱࡏͲ͔ͬͪΛ ਐΊͯΔঢ়ଶ
Slide 59
Slide 59 text
ϚϧνΫϥυɺ DockerԽʹੑೳͷ͋ΔHadoop => CodeDeploy
Slide 60
Slide 60 text
ਓࡐ͕ෆ͍ͯ͠Δ͕ͣԿ ނ͔ཚཱ͢ΔσϓϩΠڥ
Slide 61
Slide 61 text
CI͕௨͍ͬͯͳͯ͘30ʹҰճ ChefͰσϓϩΠ͕Δ
Slide 62
Slide 62 text
CI͕௨͍ͬͯͳͯ͘30ʹҰճ ChefͰσϓϩΠ͕Δ => CodeDeploy͔ΒmitamaeΛୟ͘ k0kubun/mitamae-plugin-resource-deploy_revision k0kubun/mitamae-plugin-resource-runit k0kubun/mitamae-plugin-recipe-buildpack
Slide 63
Slide 63 text
Ͳ͏ͬͯಈ͍ͯΔ͔શ͘ Θ͔Βͳ͍heroku-buildpack
Slide 64
Slide 64 text
खಈͷఀࢭΦϖϨʔγϣϯ Կ͕Ͳ͜ʹ͋Δ͔͙͢ࢥ͍ग़ͤͳ͘ͳΔrunit
Slide 65
Slide 65 text
खಈͷఀࢭΦϖϨʔγϣϯ Կ͕Ͳ͜ʹ͋Δ͔͙͢ࢥ͍ग़ͤͳ͘ͳΔrunit => ࣗಈఀࢭͰ͖Δsystemd service
Slide 66
Slide 66 text
gemͷόʔδϣϯΛ্͛ΔͱյΕΔ
Slide 67
Slide 67 text
gemͷόʔδϣϯΛ্͛ΔͱյΕΔ => αʔϏεΠϯ/αʔϏεΞτԽ
Slide 68
Slide 68 text
We’re hiring
Slide 69
Slide 69 text
·ͱΊ • ͦ͜ͰΓग़͢ͷ͕ຊʹྑ͍ͷ͔Α͘ߟ͑·͠ΐ͏ • ҠߦதϩʔΧϧͰΞϓϦΛ্ཱͪ͛ͯςετ͢Δͱ͍͏ બࢶ༗ޮ • APIʹͳΔΑ͏ઃܭɺແҙຯͳϦτϥΠආ͚Δ • Γग़͠ʹ͓͚Δਏ͍ͱͦͷରԠํΛհ͠·ͨ͠ • We’re hiring