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

クラウドネイティブをRPGに例えて大冒険!

 クラウドネイティブをRPGに例えて大冒険!

クラウドネイティブの概念をRPG風の冒険に例えながら、コンテナ騎士団やKubernetes王国、SRE賢者が織り成す運用の物語を紹介します。
モノリス城からの脱却や、Microservicesへの進化、CI/CD魔法によるリリース高速化のコツ、FinOps道化師が導くコスト最適化の秘訣など盛りだくさん!
クイズや選択肢を交えたインタラクティブな進行の中で、明日から使えるクラウドネイティブ・SREのベストプラクティスをまとめて持ち帰っていただきます。

2025.5.23 CloudNativeDayssummerにて登壇しました
アーカイブリンクはこちら:
https://event.cloudnativedays.jp/cnds2025/talks/2607

Avatar for Keita Nakata

Keita Nakata

May 24, 2025
Tweet

More Decks by Keita Nakata

Other Decks in Technology

Transcript

  1. PLAYER 2 PLAYER 1 HIGHSCORE 2500 Կͱ͔ϞϊϦε৓ͷ࠷஍Լ֊ʹͨͲΓண͍ͨ͋ͳͨ ʁʁʁʮ͝͝͝ʯ ৼΓฦΔͱഎ෦ʹ͸ Legacy

    Dragon͕ഭ͖͍ͬͯͯͨʂ ࠓʹ΋๫Εͩͦ͠͏ͩ Legacy Dragon͕๫ΕΔͱɺ ʮগ͠௚͚ͨͩ͠ͰɺγεςϜશମʹେ͖ͳτϥϒϧ͕޿͕Γ·͢ɻ ͋͞ɺͲ͏͢Δʁʯ
  2. ʢਖ਼ղʣ CONTAINERٍ࢜ஂͱڠྗʢCONTAINERԽ͠ ػೳΛখ͘͞੾Γग़͠ ʣ • ϞϊϦε͸ɺҰ͔ॴΛ௚͚ͩ͢Ͱଞͷ෦෼ʹ·ͰӨڹ͕޿͕Γ΍͘͢ɺτϥϒϧ͕࿈࠯͕ͪ͠ • ίϯςφԽͯ͠ɺػೳ͝ͱʹখ͘͞෼͚ΔʢϚΠΫϩαʔϏεԽʣϝϦοτ ⚬ ҰͭͷػೳΛ௚ͯ͠΋ɺଞʹ͸Өڹͮ͠Β͘ͳΔ

    ⚬ ໰୊ͷ͋Δ෦෼͚ͩݸผʹमਖ਼ɾ࠶ىಈͰ͖Δ ⚬ খ͘͞෼͚Δ͜ͱͰɺ։ൃɾςετɾϦϦʔε΋଎͘ͳΔ ⚬ ඞཁͳ෦෼͚ͩ૿΍ͨ͠ΓॖΊͨΓͰ͖ΔʢεέʔϥϏϦςΟʣ PLAYER 2 HIGHSCORE 2500
  3. ༻ޠ આ໌ RPGతͳ۩ମྫ ϞϊϦε ͢΂͕ͯҰͭʹ·ͱ·ͬͨେ͖ͳΞϓϦɻҰ͔ॴ ͷมߋ͕શମʹӨڹ͠΍͍͢ɻ ͻͱͭͷڊେͳ͓৓ɻͲ͔͜ͷนΛ௚͢ͱશମ͕ ༳Εͯ͠·͏ɻ Container ΞϓϦ΍ػೳΛখ͞ͳശʢೖΕ෺ʣʹ෼͚ͯಈ͔

    ٕ͢ज़ɻ Ͳ͜Ͱ΋ಉ͡Α͏ʹಈ͘ɻ ͨ͘͞Μͷʮ༐׶ͳٍ࢜ஂʯɻͦΕͧΕͷ໾ׂΛ ࣋ͪɺ޷͖ͳ৔ॴͰઓ͑Δɻ ϚΠΫϩαʔϏε ػೳ͝ͱʹখ͞ͳαʔϏεʹ෼͚ͯ࡞Δઃܭํ ๏ɻಠཱͯ͠࡞ͬͨΓ௚ͨ͠ΓͰ͖Δɻ ͨ͘͞Μͷʮখ͞ͳՈʯ͕ू·ͬͨଜɻյΕͨՈ ͚ͩमཧ͢Ε͹0,ɻ εέʔϥϏϦςΟ ඞཁʹԠͯ͡ɺγεςϜͷن໛Λେ͖ͨ͘͠Γখ ͨ͘͞͠ΓͰ͖Δྗɻ ఢ͕૿͑ͨΒٍ࢜ஂͷਓ਺΋૿΍ͤΔɻฏ࿨ͳͱ ͖͸গਓ਺ͰकΔɻ ΦʔτεέʔϦϯά ར༻ऀ͕૿͑ͨΒࣗಈͰαʔόʔ਺Λ૿΍͢࢓૊ ΈɻݮͬͨΒݮΒͯ͠ίετઅ໿ɻ Ϟϯελʔͷ܈Ε͕དྷͨΒࣗಈͰʮ৽ٍ͍࢜͠ʯ ͕ঌשʂීஈ͸߇͑Ίͳฤ੒ɻ ༻ޠදʢίϯςφʣ
  4. PLAYER 2 PLAYER 1 HIGHSCORE 2500 ― LEGACY DRAGONΛଧͪ౗͠ɺԦࠃʹฏ࿨͕໭ͬͨ ―

    ͕ͩɺཱྀ͸·ͩऴΘΒͳ͍ɻ ࣍ͳΔ໨త஍͸,6#&3/&5&4Ԧࠃɻ
  5. ༻ޠ આ໌ ۩ମྫ Kubernetes ίϯςφΛ·ͱΊͯࣗಈ؅ཧ͢ΔϓϥοτϑΥʔ Ϝɻ ࢦྩΛग़͢ʮ౷࣏ऀʯ ΦʔτεέʔϦϯά ෛՙʹԠͯࣗ͡ಈͰίϯςφ΍αʔόʔ਺Λ૿ݮ ͢Δ࢓૊Έɻ

    ٍ࢜ͷ૿һɾݮһ Pod 1ͭ·ͨ͸ෳ਺ͷίϯςφΛ·ͱΊͯಈ͔͢୯Ґɻ খୂύʔςΟ Service ֎෦΍ଞͷαʔϏεͱͷ௨৴ޱʢೖޱɾग़ޱʣɻ ৓໳ ReplicaSet ಉ͡ߏ੒ͷ1PEΛෳ਺ࣗಈͰ؅ཧ͢Δ࢓૊Έɻ ಉ͡૷උͷ෦ୂ ༻ޠදʢ,6#&3/&5&4ʣ
  6. એݴܕ (Declarative) खଓ͖ܕ (Scripted) ॻ͖ํ ԿΛ͢Δ͔ Ͳ͏΍Δ͔ ࠶ར༻ੑ ߴ͍ ௿͍

    อकੑ ߴ͍ ௿͍ʢෳࡶԽ͠΍͍͢ʣ ॊೈੑ ͋Δ੍͕ݶ͋Γ ඇৗʹߴ͍ ۩ମྫ Jenkins Declarative, Jenkins Scripted, GitHub Actions, CircleCI γΣϧεΫϦϓτ pipeline { agent any stages { stage('Build') { steps { sh 'make build' } } stage('Test') { steps { sh 'make test' } } stage('Deploy') { steps { sh 'make deploy' } } } } node { stage('Build') { sh 'make build' } stage('Test') { try { sh 'make test' } catch (e) { echo 'Tests failed!' throw e } } stage('Deploy') { sh 'make deploy' } } node { stage('Build') { sh 'make build' } stage('Test') { try { sh 'make test' } catch (e) { echo 'Tests failed!' throw e } } stage('Deploy') { sh 'make deploy' } એݴܕ74खଓ͖ܕ pipeline { agent any stages { stage('Build') { steps { sh 'make build' } } stage('Test') { steps { sh 'make test' } } stage('Deploy') { steps { sh 'make deploy' } }
  7. ςʔϚ આ໌ ۩ମྫ CI vs CDͷҧ͍ CI: ඼࣭؅ཧ$%: ਝ଎ϦϦʔε CIɿ෢ث஁໶ͷ޻๪ʢ૷උΛ஁͑ΔʣCDɿ๯ݥग़ൃͷ

    ήʔτʢૉૣ͘๯ݥ΁ग़ൃʣ ύΠϓϥΠϯઃܭ ֤޻ఔͷಠཱੑࣦഊ࣌ͷ੾Γ෼͚΍͢͞ ֊૚͝ͱͷηʔϒϙΠϯτʢ᠘ʹ͔͔ͬͯ΋௚લ͔Β΍ Γ௚ͤΔʣ τϦΨʔɾࣗಈԽ ਓखΛݮΒ͠ਝ଎ˍҰ؏ੑ ࣗಈͰ։͘Ӆ͠൶ʢ༐ऀ͕͚ۙͮͩ͘Ͱ։͘ʣ એݴܕͱखଓ͖ܕ Մಡੑɾอकੑͷόϥϯε ஍ਤʢએݴܕʣʴຐ๏ॻͷढจʢखଓ͖ܕʣ ςετઓུ ଟ૚ςετʴࣗಈԽͰϦϦʔεલʹ඼࣭୲อ ૲ݪઓʢ୯ମʣˠύʔςΟʔઓʢ݁߹ʣˠϥεϘεલͷ ԋशʢ&&ʣ ηΩϡϦςΟࣗಈԽ ૣظݕ஌ˍमਖ਼ϦϦʔεલʹରࡦ ཱཱྀͪલͷ࣋ͪ෺ݕࠪʢढ͍΍ಟ਑ͷࣗಈνΣοΫʣ ·ͱΊදʢ$*/CDʣ
  8. ༻ޠ આ໌ ۩ମྫ FinOps Ϋϥ΢υͷίετΛ࠷దʹ؅ཧɾվળ͢Δߟ͑ํ΍׆ಈ ಓԽࢣ͕ΈΜͳͷΰʔϧυ؅ཧΛख఻͏ λά෇͚ Ϧιʔε͝ͱʹʮ༻్ʯ΍ʮ࣋ͪओʯͷϥϕϧΛ͚ͭΔ ࢓૊Έ ๅശʹʮ˓˓༻ʯͱϥϕϧΛషΔ

    ίετՄࢹԽ Ͳͷػೳɾ୭͕ͲΕ͚͓ͩۚΛ࢖͍ͬͯΔ͔Λ“ݟ͑Δ Խ”͢Δ͜ͱ Ԧࠃͷग़අா฽ΛΦʔϓϯʹ͢Δ Ϧιʔε੔ཧ ࢖͍ͬͯͳ͍αʔόʔ΍αʔϏεΛݟ͚ͭͯ࡟আɾఀࢭ ͢Δ͜ͱ ࢖Θͳ͍૔ݿ΍෢ثΛॲ෼ͯ͠ΰʔϧυઅ໿ Reserved/Spot ͓ಘͳʮ௕ظ༧໿ʯ΍ʮҰ࣌తͳಛՁར༻ʯͷྉۚϓϥ ϯ ఆظ݊Ͱཱྀ҆͘Λͨ͠ΓɺಛՁͷ॓Λ࢖͏ ΞϊϚϦʔݕ஌ ٸͳίετ૿ՃͳͲʮҟৗͳग़අʯΛࣗಈͰݟ͚ͭͯ஌ Βͤͯ͘ΕΔ࢓૊Έ ٸʹΰʔϧυ͕ݮͬͨΒಓԽࢣ͕ΞϥʔϜΛ ·ͱΊʢ'*/014ʣ