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

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

Fc8163b687f0db1b9d41a57e5b607025?s=128

Hiromichi Sugiyama

September 17, 2016
Tweet

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