IVS CTO Night and Day 2014/12/03
CTOʹٻΊΒΕΔͷIVS CTO Night and DayHatena Co., Ltd.@stanaka!2014/12/03
View Slide
Shinji Tanaka / ాத৻࢘@stanaka / id:stanakaגࣜձࣾͯͳ ࣥߦһCTO࠷ۙɺ౦ژʹӽ͖ͯ͠·ͨ͠2
͖ͳٕज़• ݴޠɿ Go• ΤσΟλɿ Emacs• AWSɿ S3• ࣮ߦڥɿ Docker• σʔλετΞɿ MySQL
[PR] Mackerelhttps://mackerel.io/
CTOͱ?• Chief Technology Officer• VP Engineering$50ʹ ࣅͨϙδγϣϯ
CTOͷׂ• Ұ൪ίʔυΛॻ͘ਓ• γεςϜΞʔΩςΫτ• Ϛωδϝϯτ͢Δਓ71&OHJOFFSJOH
from CTO of StripeIUUQCMPHHSFHCSPDLNBODPNpHVSJOHPVUUIFDUPSPMFBUTUSJQF
CTOͷఆٛ• ͔ͬ͠Γͱͨ͠ఆٛࠔ• ձࣾͷنɾϑΣʔζͷґଘ• ࣄۀ༰ʹґΔ
நతͳ͜ͱΑΓ ʮࣗͷܦݧʯ͔Β
1͜Ε·Ͱͷ͋Β͢͡
in the case of @stanaka• 2000/4 NTTݚڀॴೖࣾ• 2006/4 ͯͳೖࣾ• 2010/9 CTOഈ໋• 2014/12ΠϚίί
2006ʙ2010• ΞϓϦέʔγϣϯΤϯδχΞ• ΠϯϑϥΤϯδχΞ → Ϛωʔδϟ• ӡ༻ޮԽ(puppetಋೖ)• ԾԽ(Xen)ɾSSDಋೖ• Hatena Inc.։ઃ & ຊࣾژҠస
ࣄ݅ CTOҎલ• 2007,2008 DCϒϨʔΧʔஅ• 2007? શһୀձࣄ݅• 2008/4 SubversionϦϙδτϦഁଛ → gitҠߦ
2010ʙ2014• CTOަ• Πϯϑϥ͔Β࠶ͼαʔϏε։ൃ• GitHub Enterpriseಋೖ• Scala, Goಋೖ• ౦ژΦϑΟεʹΤϯδχΞ࠾༻࠶։• ϦϞʔτϫʔΫ(ઓத)
ࣄ݅ CTOҎޙ• 2012/1 SSDͷϑΝʔϜόά౿Έ DB࿈ଓμϯ• 2012/3 ͯͳϒοΫϚʔΫϘλϯԌ্• 2014/11 υϝΠϯWHOISใͷվ᜵
SSDͷϑΝʔϜόά౿Έಉ྅ͷ݁ࠗࣜೋ࣍ձதʹϝϯς࣮ࢪ
2CTOͱͯ͠ ҙ͖ࣝͯͨ͜͠ͱ
CTOͱͯ͠Ռ͖ͨͯͨ͜͠ͱ• ΠϯϑϥपΓΞʔΩςΫνϟ• ΞϓϦɾΠϯϑϥٕज़બఆ• ΤϯδχΞϦϯάνʔϜཆ• ࠾༻ɾҭ
CTOͱͯ͠ҙ͖ࣝͯͨ͜͠ͱʮٕज़໘ʯ ͱ ʮਓࡐ໘ʯ
2.aٕज़໘ͷ͜ͱ
ٕज़໘• ߈Ί• ٕज़తڝ૪༏Ґͷ ཱ֬• कΓ• ίετཧ• εέʔϥϏϦςΟՄ༻ੑ֬อ• ηΩϡϦςΟ୲อ
߈Ί: ٕज़తڝ૪༏Ґͷཱ֬• “Technology Company”Λ ඪᒗ͢ΔͷͰ͋Εɺ ੋඇࢦ͍ͨ͠ߴΈΤϯδχΞͷϩϚϯ
ͦ͏؆୯Ͱͳ͍• ʮ࣌ػΛݟۃΊΔͷઐՈͰ͍͠ɻ͔͠͠উෛΛ͠ͳ͍ͱʹ্͕Δ͜ͱ͢ΒͰ͖ͳ͍ɻʯ- ٕज़ͱ࣌ػIUUQSFTFBSDIQSFGFSSFEKQUJNJOH
ٕज़ΛҰखஈͱଊ͑Δ• ७ਮͳٕज़తཁૉͰϏδωε༏ҐΛ࡞ΔͷۃΊͯࠔ ˠ ੍Λٕज़తʹಥഁ/ճආͭͭ͠ɺϏδωε্ͷ༏ҐΛங͘
Ϗδωεͷٕज़తߩݙ• Ϗδωε্ͷڝ૪༏ҐΛཱ֬͢ΔͨΊʹٕज़తʹߩݙ͢Δ• εϐʔυײͷ͋Δ։ൃ• ίϞσΟςΟԽ͍ͯ͠ͳ͍ٕज़ͷ࠾༻
कΓ: ίετཧ• ٕज़తෛ࠴ΛฦࡁՄೳͳϨϕϧʹIUUQNBSUJOGPXMFSDPNCMJLJ5FDIOJDBM%FCUIUNM
ٕज़తͳஅ• WAFબఆ• ։ൃݴޠબఆ• ϛυϧΣΞબఆ• ࣮ߦڥબఆ• ΞʔΩςΫνϟબఆ
։ൃݴޠબఆ• Β͘Perl͕ओ࣠• RubyपลπʔϧͰར༻• ScalaɾGoͷ࠾༻ (2013)
Scala, GoͷGood ɾ No good• Good• ܕ͚ݴޠʹΑΔݎ࿚ͳ։ൃ• ΤϯδχΞϞνϕʔγϣϯ্• ࠾༻্ͷޮՌ• No good• ৽͍͠ݴޠΛษڧ͢Δ࣌ؒ(ίετ)͕ඞཁ
৽͍ٕ͠ज़ͷ࠾༻• جຊϘτϜΞοϓ͕ྑ͍• ܧଓతʹϝϯς͢Δ͜ͱ೦಄ʹٕज़తෛ࠴ʹͳΓ͔Ͷͳ͍ͰएखΛεϙΠϧ͠ͳ͍Α͏ʹ
࣮ߦڥબఆ• HDD → SSD• 2008Ն Intel X25-MϦϦʔεલ• ΦϯϓϨϛε → Ϋϥυ(AWS)• TokyoϦʔδϣϯ։ઃ࣌
ΞʔΩςΫνϟબఆ• Microservices or MonolithicIUUQNBSUJOGPXMFSDPNBSUJDMFTNJDSPTFSWJDFTIUNM
ٕज़બఆFacebookͰؒҧ͏HTML5 vs NativeIUUQTXXXGBDFCPPLDPNOPUFTGBDFCPPLFOHJOFFSJOHVOEFSUIFIPPESFCVJMEJOHGBDFCPPLGPSJPT
ٕज़બఆͷํ• ͋Δఔอकతʹ• ॏཁͳͱ͜ΖͰΞάϨογϒʹ• அϛε࣌ͷఫୀ࿏೦಄ʹஔ͘
कΓ: εέʔϥϏϦςΟଞ• εέʔϥϏϦςΟɾՄ༻ੑ• ηΩϡϦςΟॗʑͱ खൈ͖ͤͣʹ
2.bਓࡐ໘ͷ͜ͱ
ਓࡐ໘• ΤϯδχΞͱϚωδϝϯτ
ΤϯδχΞͱϚωδϝϯτ[email protected]
Ϛωδϝϯτͷલʹ..• ΤϯδχΞͷΩϟϦΞύε• ઐ৬(εϖγϟϦετ)• Ϛωʔδϟʔ• ݚڀ৬?
ઐ৬ = ϑϧελοΫΤϯδχΞ??• ଟ༷Խ͢ΔϨΠϠʔ• ϑϩϯτʙόοΫΤϯυʙΠϯϑϥ• εϚʔτϑΥϯ• 3DάϥϑΟοΫΤϯδϯ• ػցֶशɾσʔλղੳ
ϋʔυΣΞΤϯδχΞ
શͯΛཏ͢Δͷඇݱ࣮త͘͢ͳ͘ͱଟ͘ͷਓʹ
εΩϧηοτͷϙʔτϑΥϦΦ• όοΫΤϯυ + ػցֶश• όοΫΤϯυ + εϚʔτϑΥϯ• ʮಘҙͳྖҬ + αʯΛૂ͏
ඞཁेͳεΩϧηοτͷదԠ• Ϗδωε֎෦ڥͷมԽ ˠ ඞཁͳεΩϧηοτมԽ• ֤ΤϯδχΞͷੜ͖Γͱ ઌߦࢿͷόϥϯεεϚϑΥͷීٴɾ"84ͷོ
Ϛωʔδϟʔ• ϓϩμΫτ։ൃΛਪਐ͢Δ• ΤϯδχΞΛϞνϕʔτ͢Δ• ։ൃϓϩηεΛ͑Δ
ΤϯδχΞͷϞνϕʔγϣϯ• ։ൃνʔϜͷੜ࢈ੑʹ݁• ίϛϡχέʔγϣϯͷॏཁੑ
ΤϯδχΞͷίϛϡχέʔγϣϯ• Ͱ͖Δ͚ͩଟ͘ͷ͜ͱΛใڞ༗• ΤϯδχΞϦϯάͷཧղ
ʮਆࡉ෦ʹ॓Δʯ• ݱ͔ΒΕΔͱࡉ෦Λܰࢹ͕ͪ͠• ͳΜͱͳ͔ͬͨ͘ؾʹͳΒͳ͍• ؆୯ʹݟ͑Δ͜ͱͰ؆୯ʹͰ͖ΔͱݶΒͳ͍• ܦݧ͕͋ΔΤϯδχΞͰؕΓ͕ͪ
։ൃϓϩηεΛ͑Δ• εΫϥϜ• πʔϧಋೖ(GitHub, Slack)• ಇ͖ํͷଟ༷ੑ(ϦϞʔτϫʔΫ)
εΫϥϜ
πʔϧಋೖ
ϦϞʔτϫʔΫ౦ژຊళژຊࣾѪग़ுઌ
ϦϞʔτϫʔΫͷӡ༻• ίϛϡχέʔγϣϯΛΑΓॏࢹ͢Δ• ҰਓͰ·ΔͷΛආ͚Δ• ϊϋ͕ڞ༗͞Εͳ͍ͷΛආ͚Δ• ಓ۩ɾπʔϧʹͩ͜ΘΔ
ϦϞʔτͰϛʔςΟϯά
ϦϞʔτϫʔΫࢀߟຊ
3CTOʹ ٻΊΒΕΔͷ
CTOͱͯ͠ҙ͖ࣝͯͨ͜͠ͱ(࠶ܝ)ٕज़໘ ͱ ਓࡐ໘
ৼΓସ͑ͬͯΈΔͱ…• ࣦഊڪΕΔ͖Ͱͳ͍• ͨͩ͠ୀ࿏֬อ͢Δ• ϘτϜΞοϓͰ࣮ߦ͢Δ• ࣦഊͯ͠ܦݧΔ
CTOʹٻΊΒΕΔͷٕज़ͱਓͷʹରͯ͠ ͑Λग़࣮ͯ͠ߦͰ͖Δ
Q&A