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

はてなが歩んできた "Infrastructure as Code"の道のりとMackerelが果たす役割について

はてなが歩んできた "Infrastructure as Code"の道のりとMackerelが果たす役割について

Fc8163b687f0db1b9d41a57e5b607025?s=128

Hiromichi Sugiyama

September 17, 2016
Tweet

More Decks by Hiromichi Sugiyama

Other Decks in Programming

Transcript

  1. Open Cloud Innovation Festa 2016 17 Sep 2016 Hatena Co.,

    Ltd. Hiromichi Sugiyama はてなが歩んできた "Infrastructure as Code"の道のりと が果たす役割について
  2. Hiromichi Sugiyama / ਿࢁ ޿௨ 株式会社はてな サービス・システム開発本部 Mackerelチーム プロデューサー 経歴

    - 大手製造業のIT事業会社 - 大規模環境でのインフラエンジニア - オープンソースのモニタリングツール - SaaSシステム - ITILベースのサービスマネジメント - はてなでMackerel事業へ携わる sugiyama88@hatena.ne.jp
  3. ΞδΣϯμ 1. ͸ͯͳʹ͍ͭͯ 2. ͸ͯͳͷΠϯϑϥͱMackerel͕͸ͨ͢໾ׂ 3. Infrastructure as Code 4.

    Mackerelͷ͝঺հ 5. MackerelͷϏδϣϯ
  4. 1 ͸ͯͳʹ͍ͭͯ

  5. None
  6. ձࣾ֓ཁ 所在地 京都(烏丸御池) 東京(表参道) 資本⾦ 185,713千円 市場 東証マザーズ 設⽴ 2001年7⽉(16年⽬)

    創業者 近藤 淳也 社⻑ 栗栖 義⾂
  7. ͸ͯͳͷϛογϣϯ

  8. None
  9. None
  10. ͸ͯͳͷαʔϏε

  11. None
  12. None
  13. None
  14. ଞʹ΋ଟ਺ͷαʔϏε͋Γ

  15. 2 ͸ͯͳͷΠϯϑϥͱ Mackerel͕Ռͨ͢໾ׂ

  16. 16೥ͷ ྺ࢙

  17. marqs-60 CMX-50 ࣗ࡞αʔόʔ࣌୅ʢͦͷੲɿ਺೥લʣ

  18. ϋΠϒϦου؀ڥʢݱࡏʣ ΦϯϓϨ σʔληϯλʔ ύϒϦοΫ Ϋϥ΢υ ਺ઍ୆ͷେن໛؀ڥͰαʔϏεશମΛӡӦ

  19. େن໛ͳαʔϏε؀ڥ

  20. ΠϯϑϥΤϯδχΞ͸ ਺໊

  21. ͍͔ʹޮ཰Α͘ ࣋ଓతʹ؅ཧ͢Δ͔ʁ

  22. Dynamic Infrastructure Platformʢੈͷைྲྀʣ • ΑΓಈతͰศརʹͳΔΠϯϑϥ؀ڥ

  23. ଘࡏ͢Δଟ਺ͷαʔϏε&ϗετ ਺ेͷαʔϏε ਺ઍͷϗετ

  24. ๲େͳ૊Έ߹Θͤ΁ͷରॲ

  25. αʔϏεɾϩʔϧɾϗετ Ұ؏ͨ͠؅ཧ֓೦Λ࠾༻ Service Role Host

  26. Service Role Host ͸ͯͳ Bookmark app proxy DB DB1 DB2

    app3 app2 app1 proxy1 proxy2 ద༻ྫɿ͸ͯͳBookmark
  27. Θ͔Γқ͞ͱརศੑΛ ਺ेͷαʔϏε ਺ඦͷϩʔϧ ਺ઍͷϗετ

  28. ։ൃ΍ӡ༻ͱͷؔΘΓ͸ʁ

  29. DevOps Lifecycle • ։ൃͱӡ༻͕ӬଓతͳαΠΫ ϧΛ੒͢ • ଟछଟ༷ͳޮ཰Խπʔϧ΍ αʔϏε͕ଘࡏ • దࡐదॴ

    • ޷Έ Mystery of DevOps Devops Lifecycle http://www.edureka.co/blog/mystery-of-devops/
  30. DevOps Tools • దࡐదॴɺ༏Εͨπʔϧ͕ଟ਺ 'FFECBDL %FWFMPQ 5FTU %FQMPZ .POJUPS

  31. Mackerel͕Ռͨ͢໾ׂ

  32. logo (2) ݸผʹ͸ศརͰ͋Δ͕ɻɻɻ • ಈతͳΠϯϑϥ؀ڥΛͦΕͧΕఆٛͯ͠ѻ ͏ͷ͔ʁ Monitoring Server Configuration Deploy

    ʁ
  33. logo (2) ϗετϨδετϦͱͯ͠ͷMackerel • ϗετ৘ใ͸Mackerel΁ू໿ • πʔϧؒΛૄ݁߹ʢศརͳAPIʣ Monitoring Server Configuration

    Deploy چMackerel
  34. logo (2) ߋͳΔਐԽʢݱࡏʣ • MackerelΛ࣠ͱͨ͠ಈత؅ཧΛ࣮ݱ droot Monitoring & Host Registry

    Server Configuration Deploy Infrastructure Test SSH-Operation Infrastructure DNS Registry tinydns
  35. ϗετϨδετϦ͸ඇৗʹ؆୯ ϗετ ᶃ ϗετىಈ࣌ʹ ඞͣαʔϏεͱϩʔϧΛηοτ͠ MackerelΤʔδΣϯτΛىಈ͢Δ ᶄ Mackerelʹϗετ৘ใ͕ొ࿥͞ΕΔ ᶅ APIͰಈతʹϗετ৘ใΛऔΓग़͠

    ͯ࠶ར༻ ᶃ ᶄ ᶅ ʁ
  36. 3 Infrastructure as Code

  37. ͜Ε·ͰͷಓͷΓΛ ৼΓฦΓ ڞ௨͍ͯͨ͠Ұͭͷ͜ͱ

  38. None
  39. Infrastructure as Code • ΠϯϑϥΛίʔυͰએݴతʹهड़͢Δ͜ͱʹΑΓɺ ͍··Ͱιϑτ΢ΣΞ։ൃͰ༗ޮੑཱ͕ূ͞Ε͖ͯͨ ϕετϓϥΫςΟεΛΠϯϑϥ΁΋ద༻͢Δ Infrastructure as Code

    Managing Servers in the Cloud By Kief Morris Publisher: O'Reilly Media Final Release Date: June 2016
  40. Infrastructure as CodeͷԸܙ • ಈతͳΠϯϑϥ΁ͷରॲ • ਝ଎ʹɺԿ౓Ͱ΋ɺ࣮֬ʹಉ͡มߋ͕ՄೳʢετϨε͕ͳ͍ʣ • ো֐͔Βͷ෮چ଎౓ •

    ίʔυϨϏϡʔ • ୯७࡞ۀ͔Β཭ΕɺՁ஋͋Δ͜ͱʹ͕͚࣌ؒ͞ΔΑ͏ʹͳΔ
  41. ϞμϯͳΠϯϑϥπʔϧͷཁૉ 7$4 5FTU 0SDIFT USBUJPO 5%% $* $%

  42. ͸ͯͳͰͷҰྫ

  43. Dev Ops Service A Service B Service C ͸ͯͳͷ։ൃͱӡ༻ͷମ੍ •

    Ops͸Ұͭͷ૊৫͕ͩɺαʔϏε͝ͱʹ୲౰ΛΞαΠϯ͍ͯ͠Δ
  44. Dev Ops Service A Service B Service C ։ൃͱӡ༻ͷମ੍ •

    Ops͸Ұͭͷ૊৫͕ͩɺαʔϏε͝ͱʹ୲౰ΛΞαΠϯ͍ͯ͠Δ Webアプリケーション エンジニア
  45. Dev Ops Service A Service B Service C ։ൃͱӡ༻ͷମ੍ •

    Ops͸Ұͭͷ૊৫͕ͩɺαʔϏε͝ͱʹ୲౰ΛΞαΠϯ͍ͯ͠Δ Webアプリケーション エンジニア Webオペレーション エンジニア
  46. ίʔυ؅ཧ͢Δར఺ʢҰྫʣ • ίʔυϨϕϧͰՄࢹԽ͞Ε͍ͯΔͷͰɺ؆୯ʹӽڥͰ͖Δ ΞϓϦέʔγϣϯ ϛυϧ΢ΣΞ OS ϓϥοτϑΥʔϜ Dev Ops DBʹਫ਼௨͍ͯ͠ΔOpsΤϯδχΞ͕SQL

    ͷϨϏϡʔΛͨ͠Γ DevΤϯδχΞ͕ϛυϧ΢ΣΞΛࢼͨ͢ ΊͷChefϨγϐΛॻ͍ͨΓ ϛυϧ΢ΣΞͷΦϓγϣϯߏ੒Λཧղ ͠ͳ͕ΒίʔυΛॻ͍ͨΓ ↓ϙΠϯτ
  47. ։ൃͱӡ༻ͷ੹೚ൣғ • άϨΠκʔϯΛ࡞Β͓ͣޓ͍ଚॏ͠ͳ͕Βॿ͚߹͍͑ͯΔ ΞϓϦέʔγϣϯ ϛυϧ΢ΣΞ OS ϓϥοτϑΥʔϜ Dev Ops

  48. Performance Working Group (͓·͚) • αʔϏε΁ίϛοτͯ͠Δશϝϯόʔ͕ఆظʢεϓϦϯτຖʣʹੑೳ෼ੳΛ࣮ࢪ ʢMackerelΛ׆༻ʣ • த௕ظͷϦϦʔεӨڹͳͲ෼ੳ͠ɺ։ൃ΍ΠϯϑϥͷΩϟύγςΟܭը΁ଈ࣌൓ө ΞϓϦέʔγϣϯ

    ϛυϧ΢ΣΞ OS ϓϥοτϑΥʔϜ Dev Ops
  49. 4 Mackerelͷ͝঺հ

  50. Mackerelͱ͸ʁ • "SaaSܕ"αʔόʔ؂ࢹαʔϏε • ΤϯδχΞ͕ཉ͔ͬͨ͠zϫΫϫΫz͢ΔΑ ͏ͳػೳΛఏڙ͠ɺѹ౗తͳzޮ཰ԽzΛ࣮ݱ • ͸ͯͳͷओྗαʔϏεΛ͑͞͞ଓ͚͖ͯͨ ʢ࠷ߴͷυοάϑʔσΟϯάʣ

  51. 2014.9.17ਖ਼ࣜϦϦʔε ʢຊ೔ͪΐ͏Ͳ2प೥ʂʂʣ

  52. ΞʔΩςΫνϟʔ • ΤʔδΣϯτ͔Β ϝτϦοΫΛ౤ߘ )5514 3&45"1*

  53. ௚ײతͳϢʔβʔମݧ

  54. ؆୯ʹ௚͙͸͡ΊΒΕΔ • ΨΠυʹै͏͚ͩ • ͨͬͨ਺෼ mackerel-agent written in Golang

  55. ࠷খͷϧʔϧ͕࠷ߴͷརศੑΛ • ΤʔδΣϯτΛ্ཱͪ͛Δ͚ͩͰ • ࣗಈతʹ؂ࢹ͕࢝·Γ • ಉ͡ϩʔϧͷϗετ͸ಉ͡άϥϑ΁

  56. ৗʹਐԽ͠ଓ͚ΔαʔϏε 毎週新機能のリリースを継続中 陳腐化せず常に進化  ि࿈ଓ

  57. બ͹ΕΔཧ༝ • ಋೖʗUI͕؆୯Ͱ෼͔Γ΍͍͢ • ։ൃεϐʔυ • ϚϧνΫϥ΢υͰ࢖͑Δ • ೔ຊޠαϙʔτ͕ॆ࣮ •

    NewRelicͱͷซ༻
  58. αʔϏεϓϥϯ

  59. ओͳػೳ

  60. 1.Ξϥʔτ௨஌ʹάϥϑ • Slack, HipChat, TypeTalk, Yammer

  61. 2.URL֎ܗ؂ࢹ • ར༻ऀࢹ఺ͷHTTP/HTTPS؂ࢹ • ֎෦͔ΒͷϨεϙϯελΠϜΛՄࢹԽ • εςʔλείʔυɾϨεϙϯελΠϜͰΞϥʔτ • ΩʔϫʔυͷଘࡏνΣοΫ •

    SSLূ໌ॻͷ༗ޮظݶΛνΣοΫ Web Service URL
  62. 3.؂ࢹϧʔϧͷίʔυԽ • zInfrastructure as Codez • mkr monitor diff/pull/push •

    JSONܗࣜͰϧʔϧΛѻ͏
  63. 4.؂ࢹϧʔϧΛGitͰ؅ཧ

  64. 5.ϝτϦοΫΛॊೈʹՄࢹԽʢࣜʣ 差分 前週との重ねあわせ 最大 最大・平均・最小 合計

  65. ̒ɽAWS Integration • AWS CloudWatch API͔Β༷ʑͳϝτϦοΫ΍Πϕ ϯτΛऔಘ͠ՄࢹԽ • 1୆ͷϗετͱͯ͠؅ཧ •

    EC2,ELB,RDS,ElastiCache͔Βॱ֦࣍େ API Amazon CloudWatch Amazon RDS Amazon ELB
  66. ̓ɽ৬ਓܳΛΞϧΰϦζϜͰࢧԉ 過去の傾向から将来を予測して警告 $SJUJDBM 将来 5SFOET ϱ݄લ 現在

  67. 5 MackerelͷՌͨ͢໾ׂ ʢࠓޙ΋ʣ

  68. Ϋϥ΢υԽͷྲྀΕ • ։ൃπʔϧ͸Ϋϥ΢υ΁ • svn/git → GitHub (GitHub Enterprise) •

    Jenkins → TravisCI, CircleCI • ࣮ߦ؀ڥ΋Ϋϥ΢υ΁ • ΦϯϓϨ → AWS, GCP, Azure,SoftLayer
  69. Mackerel΁ͷྲྀΕ • ӡ༻πʔϧ΋Ϋϥ΢υ΁ • Zabbix, Nagios → Cloudwatch, NewRelic and

    Mackerel !! • ࢖͍΍͍͢UIʹΑΔɺΑΓ҆ఆͨ͠ӡ༻Λ
  70. Infrastructure as Code • ϗετઃఆΛίʔυԽʢChef/puppetʣ • Mackerelͷઃఆ΋CodeͰ؅ཧ • ؂ࢹϧʔϧ/μογϡϘʔυͷίʔυԽ •

    ॱ࣍ɺAPIԽΛਪਐ
  71. Mackerelͷະདྷ • All-in-OneαʔϏεͰ͸ͳ͍ • ༷ʑͳπʔϧ/αʔϏεͱͷ࿈ܞ • Slack/GitHub/Reactio • γεςϜ؅ཧͷίΞπʔϧͱͯ͠ͷ Mackerel

  72. DevOpsͷத֩ͱͯ͠ • ϥΠϑαΠΫϧશମͷޮ཰ԽΛଅਐ %FW 0QT

  73. MackerelͷϏδϣϯ ΤϯδχΞΛϫΫϫΫͤ͞Δ ʮ௚ײతαʔόʔ؂ࢹαʔϏεʯ

  74. ͞ΒͳΔਐԽ

  75. ϗετϨδετϦͷڧԽ • ϗετͳͲͷ೚ҙͷཁૉʹKey-Value஋ΛAPI౳Ͱઃ ఆՄೳʹ • Πϯετʔϧ͞Εͨύοέʔδ৘ใ • ࢿ࢈؅ཧ൪߸ ۙ೔ϦϦʔε

  76. ΞϧΰϦζϜࢧԉ • ౷ܭ΍ػցֶशͷཧ࿦ΛԠ༻ • ҟৗݕ஌ • ༧ଌ • ෼ྨ

  77. αʔϏε੒௕܏޲ʢϗετ७૿ʣ ٸ੒௕

  78. ࣍ੈ୅Mackerel • ੒௕Λࢧ͑Δɺ͋ΒͨͳΞʔΩςΫ νϟ΁ͷมֵʂ • ͝ظ଴Լ͍͞ʂ

  79. ͍͞͝ʹҰͭ

  80. We are Hiring • ηʔϧεΤϯδχΞʢٸืʣ • 8FCΞϓϦέʔγϣϯΤϯδχΞ

  81. mackerel.io