Share
Embed
Wantedly の文化を支えるインフラとビジネスの変化に強いインフラ / #jtf2016
July Tech Fest 2016 @産業技術大学院大学
これまで Wantedly が取り組んできたインフラの改善とそこに至る文化についてお話しました。
Kodai Sakabe
July 24, 2016
Transcript
52 slides
-
ABOUT ME — Software Engineer — 2010/4- TIS KOUDAI SAKABE
2015/8- Wantedly @koudaiii Site: http://koudaiii.com -
Wantedly Open API ͨΒ͘Λ໘ന͘ʯΛςʔϚʹ͜Ε·ͰαʔϏε։ൃΛల։͖ͯͨ͠ 8BOUFEMZ͕ͦͷՁΛ8BOUFEMZDPNυϝΠϯҎ֎ʹ͍͖͛ͯ·͢ɻ ੈͷதͷҰਓͰଟ͘ͷਓ͕ɺͨΒ͘Λ໘ന͘ʯײ͡ΒΕΔੈͷதʹͳΓ·͢Α͏ʹɻ Ͱ͖Δ͜ͱ ࣗಈೖྗ ΫοΫύουגࣜձࣾ ΫοΫύουגࣜձࣾ
5݄13ʹฐࣾΦϑΟεͷεϖʔεʹͯʮʲୈ17ճʳpotatotips(iOS/Android։ൃTips ڞ༗ձ)ʯ http://connpass.com/event/14143/ Λ։࠵͠·ͨ͠ʂ 18໊ͷൃදऀ͕5ؒͷLTʢϥΠτχϯάτʔΫɿΧϯϑΝϨϯεͳͲͰߦΘΕΔ͍ ͬͱݟΔ ా࢘ ϢʔβʔϑΝʔετਪਐ෦෦ ਓ͕ϑΥϩʔத ਓ͕ϑΥϩʔத ϑΥϩʔ͢Δ ձࣾϑΟʔυϘοΫε Λฉ͖ʹߦ͘Ϙλϯ ϑΥʔϜࣗಈೖྗϘλϯ Wantedly্ʹ͋ΔʮձࣾϑΟʔυʯ ΛɺϒϩάίʔϙϨʔταΠτͳ Ͳɺ͖ͳϖʔδʹ؆୯ʹຒΊࠐΉ͜ ͱ͕Ͱ͖·͢ɻखܰͳ࠾༻ϒϥϯσΟ ϯάใൃ৴ʹར༻Ͱ͖·͢ɻ ৄ͘͠ ৄ͘͠ ৄ͘͠ ࣗࣾαΠτͷืूཁ߲ʹɺʮΛฉ ͖ʹߦ͖͍ͨʯϘλϯΛઃஔ͠ɺ Wantedly্ͷʮ༡ͼʹ͍͘ମݧʯΛࣗ ࣾαΠτͰల։Ͱ͖·͢ɻ ࠾༻ཧγεςϜఏڙاۀ༷ͷಛ ผఏڙAPIͰ͢ɻީิऀ͕ืूʹΤϯ τϦ͢ΔࡍʹɺWantedly্ͷϓϩϑΟ ʔϧใΛ׆༻ͯ͠ΤϯτϦ͕Մೳʹ ͳΓ·͢ɻ -
WANTEDLY JOURNAL ͨΒ͘Λ໘ന͘͢ΔϝσΟΞ γΰτͰίίϩΦυϧͬͯͳΜͩΖ͏ʁ 8BOUFMEZɺγΰτͰίίϩΦυϧਓΛ;͍ͨ͠ͱߟ͍͑ͯ·͢ɻ ͰɺzγΰτͰίίϩΦυϧzͱͲ͏͍͏ঢ়ଶͳͷͰ͠ΐ͏ʁ ͓٬͞Μʹʮ͋Γ͕ͱ͏ʯͱݴΘΕͨͱ͖ ඪͷച্Λୡͨ͠ͱ͖ νʔϜϝϯόʔͷসإΛݟͨͱ͖ʜ ͦΕɺਓʹΑͬͯҧ͏Ͱ͠ΐ͏͠ɺ
࣌ࠃʹΑͬͯ·ͬͨ͘ҟͳΔͰ͠ΐ͏ɻ ࠓճϦϦʔε͢Δʮ8"/5&%-:+063/"-ʯͰɺ 8BOUFEMZΛ௨ͯ͠స৬ͨ͠ํɺීஈ͋·Γݟͨ͜ͱ͕ͳ͍اۀͷ ΠϯλϏϡʔΛ௨ͯ͠ɺzγΰτͰίίϩΦυϧzͱԿͳͷ͔Λ୳ٻ͠·͢ɻ γΰτΛ୳͍ͯ͠Δਓɺͦ͏Ͱͳ͍ਓʹͱͬͯɺ ʮ8"/5&%-:+063/"-ʯ͕ಇ͖ํͷώϯτʹͳΕ͍Ͱ͢ɻ -
ίοϓʹਫΛஷΊΑ͏ w ۭͷίοϓ͕ͻͱͭ͋ͬͨͱͯ͠ɺԿ͔ʹࣦഊ͠ɺ1%$"αΠΫϧΛҰ ճ͢ͱɺࣦഊ͔ΒֶΜͩίοϓʹਫ͕ཷ·͍ͬͯ͘ w ࠷ऴతʹਫ͕͋;ΕΔ͕࣌ޭ w ͦͷਓͷ࢟ͰਫͷೖΓ۩߹มΘΔ w ҙࢥܾఆܦݧ͕ߴ·Δͱɺίοϓେ͖͘ͳΔ͠ɺਫͷྔมΘΔ
w ୭͕0XOFSTIJQͱ-FBEFSTIJQΛൃش͍ͯ͜͠͏ͱ͢ΔจԽ 0XOFSTIJQ -FBEFSTIJQ -
$PEF8JOT"SHVNFOUT w νʔϜͰ࣌ؒ.5(͢ΔͳΒDPEFΛॻ͍ͯݕূ͠Α͏ w ΤϯδχΞͷ߹ w ݶΒΕͨใͰܾஅΛͯ͠ɺલʹਐΜͰ͍Δ͔ w ԾઆΛ͋Ε͜Εߟ͑ΔΑΓɺ·ͣϓϩτλΠϓΛ࡞ͬͯૣֶ͘श͍ͯ͠Δ͔ w
Ӧۀͷ߹ w ࣗͰྑ͍ػೳ͕ු͔Μ͔ͩΒΤϯδχΞʹཔΉͷͰͳ͘ w اըॻΛॻ͍ͯձࣾΛճͬͯɺࣾఔΛ֬ͯ͠ɺ͜ΕͳΒߦ͚ΔͱࢥͬͨΒΤϯδχΞʹཔΉ͜ͱ ͕ग़དྷΔ͔ -
4JNQMFJT/PU&BTZ w ࡞Δଆ͕͏ଆͷࣄΛపఈతʹߟ͑ൈ͍͍ͯΔ͔ w ͢ΑΓҾ͍ͯϑΥʔΧεΛ͍ͯ͠Δ͔ w ޮՌ͕ߴ͍ࢪࡦ ޮՌ͕͍ͱͦͷֻ͚ͨͰͬͱ༗ޮͳվળͳ ͔ͬͨʁ
w ԾઆΛͨͯͯɺͦͷԾઆͷίΞͱͳΔ෦͚ͩʹϑΥʔΧεͰ͖͍ͯΔ͔ -
9BBTͱ"84ͷ྆ํΛ͏ w ར༻Ͱ͖ΔͷͲΜͲΜར༻͢Δ w εϐʔυײ w ίετײ w ڥͷબ CVJMEQBDLͩͱΓʹ͍͘
w ωοτϫʔΫ w )FSPLV3FEJT'JSFCBTFͱ"84Έ߹Θͤ -
ࣗಈԽͱ5PPM "1* w ΠϯϑϥΛૢ࡞͢Δ5PPMࣾͰศརͳ$-*(6* Developer ΠϯϑϥνʔϜ API and Tool WANTEDLY
JOURNAL ͨΒ͘Λ໘ന͘͢ΔϝσΟΞ ੈքʹࣗͷΛൃ৴͠Α͏ -
͜Ε·ͰͷऔΓΈ w $BQJTUSBOP w %PDLFS$IFG1BDLFS w ೋஈ֊ϏϧυʹΑΔEFQMPZߴԽCMVFHSFFOEFQMPZNFOU w 5FSSBGPSN w
$PSF04 w TBQEFQMPZTFSWFS w DFMM -
IFSPLVίϚϯυͷΑ͏ͳৼΔ͍ w "84Ҡߦͨ࣌͠ʹ%FWFMPQFSʹӨڹͰΔͷɺ͜Ε·Ͱͷӡ༻ͷมԽ w ࠩҟΛݮΒͤΔΑ͏ʹDBQJTUSBOPͰ%PDLFS"84%BUBEPHΛѻ͑Δʹͨ͠ w IFSPLVDPNNBOEͰΑ͘ར༻͢ΔίϚϯυΛ࣮ݱ $ cap -T
cap config # Display the config vars for an app cap deploy[revision] # Deploy an application cap deploy:diff[ref] # Display diff deployed revision and the revision to cap deploy:rollback # Rollback application cap logs:t[container_name] # Display stream logs for an container cap maintenance:on # Enable maintenance mode cap ps # Display web, worker, scheduler, run type containers cap ps:scale[role,num] # Scale out/in containers cap ps:restart:web[color,chained_task?] # Start web containers cap releases # Display deploy history cap run[command] # Run on-off commands cap scheduler # Display scheduling cap scheduler:clear # Clear scheduler config cap scheduler:update # Update scheduler cap status # Show application status -
$ heroku -h Usage: heroku COMMAND [--app APP] [command-specific-options] Primary
help topics, type "heroku help TOPIC" for more details: addons # manage add-on resources apps # manage apps (create, destroy) auth # authentication (login, logout) config # manage app config vars domains # manage domains logs # display logs for an app ps # manage dynos (dynos, workers) releases # manage app releases run # run one-off commands (console, rake) IFSPLVI -
#MVF(SFFO%FQMPZNFOU w IFBMUIDIFDLͰϨεϙϯεΛฦͨ͠ΒΓସ͑Δ UBHT OBNFBQQ BQQSBJMT DPMPSHSFFO UBHT OBNFBQQ BQQSBJMT
DPMPSCMVF DBQEFQMPZTXJUDI@DPMPSCMVF QPSU QPSU -
1SPCMFN w αʔϏεͷׂ৽نαʔϏεΛग़͢ ߹ɺΠϯϑϥνʔϜͷΔ͜ͱ͕ଟ͍ w Πϯϑϥͷ҆ఆԽʹΑΓෳࡶԽ w ಉ͡Α͏ͳ࡞ۀଟ͍ Web Application
Monitoring Logging Auto Scale Load Balancer Internal DNS -
ΫϥελϦϯάͰԿ͕ग़དྷΔ w "QQMJDBUJPOΛಈ͔ͤΔΠϯϑϥΛ͙͢࡞ͬͯ͘ΕͱݴΘΕͨ࣌ʹ࡞ΕΔ w JOTUBODFΛ૿͚ͩ͢ͰίϯςφΛԿಈ͔ͯ͠ߏΘͳ͍ w ճݶΓͷ͙͢ऴΘΔλεΫͰྑ͍ w Τϥʔ͕͋ͬͨͱͯ͠ɺผͷͱ͜ΖͰΒͤͤΔ w
Ұͭͷେ͖ͳϦιʔεͱͯ͠ಈͨ͘Ίɺࠓ·Ͱߦ͖͍ͬͯͯͨ.POJUPSJOH༻ʹίϯ ςφΛઃఆͯ͠ɺ࣍"4(༻ʹϚγϯΛཱͯͯɺ࣍Έ͍ͨͷΑ͏ͳΠϯϑϥ࡞ ۀ͜ͱ͕ͳ͍ ʮԿ͕ԿॲͰಈ͍͍ͯΔ͔Λҙ͍ࣝͯ͠ͳ͚ΕͳΒͳ͍ੈքʯ͔ΒʮԿ͕ಈ͍͍ͯΔ͔͚ͩҙ͍ࣝͯ͠Εྑ͍ੈքʯ -
,VCFSOFUFT w IUUQCMPHSBJOUPXOPSHMPHHJOHLVCFSOFUFTQPETVTJOHqVFOUEIUNM w /PEFJOTUBODF w ෳͷJOTUBODFΛҰͭϦιʔε w -PHHJOH.POJUPSJOHͷΑ͏ͳ ֤/PEFʹஔ͍ͨ͠ͷ"1*
Λ௨࣮ͯ͡ݱ w %FWFMPQFSඞཁͳ4QFDΛఆٛ ͠ɺ"1*Λݺͼग़͢ -
Πϯϑϥͱσϕϩούʔͷڥׂ ʮԿ͕ԿॲͰಈ͍͍ͯΔ͔Λҙ͍ࣝͯ͠ͳ͚ΕͳΒͳ͍ੈքʯ͔ΒʮԿ͕ಈ͍͍ͯΔ͔͚ͩҙ͍ࣝͯ͠Εྑ͍ੈքʯ Web Application Monitoring Logging Auto Scale Load Balancer
Internal DNS Web Application Monitoring Logging Auto Scale Load Balancer Internal DNS Web Application Monitoring Logging Auto Scale Load Balancer Internal DNS Monitoring Logging Auto Scale Load Balancer Internal DNS ΠϯϑϥνʔϜ ΠϯϑϥνʔϜ ΠϯϑϥνʔϜ ΠϯϑϥνʔϜ -
,POH"SDIJUFDUVSF w ,POH$MVTUFSJOH w QMVHJO w 0"VUI w "$- w
*13FTUSJDUJPO w 3BUF-JNJU w 3FRVFTU4J[FMJNJU w 3FTQPOTFMBUFMJNJU