Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
マイクロサービスにおける 最高のDXを目指して / Microservices vs DX
Search
Kenji Suzuki
July 23, 2019
Technology
7
4.3k
マイクロサービスにおける 最高のDXを目指して / Microservices vs DX
https://cloudnativedays.jp/cndt2019/
での登壇資料です
Kenji Suzuki
July 23, 2019
Tweet
Share
More Decks by Kenji Suzuki
See All by Kenji Suzuki
VPoEのアンチパターンを考える / VPoE Anti-Pattern
kenjiszk
2
740
マイクロサービスでのセキュリティパッチ含めた ライブラリ更新のつらみと取り組み / security-jaws-no13-kenjiszk
kenjiszk
2
1.1k
Rubyでブロックチェーンを実装してみた話 / Blockchain by Ruby
kenjiszk
2
590
FiNCのRelease Engineering / finc_release_engineering
kenjiszk
0
600
デプロイおじさんのお葬式 / Good-Bye Deploy Ojisan
kenjiszk
0
920
イーサリアムとスマートコントラクト入門 / BlockTecCo vol.1
kenjiszk
1
440
FiNCのデータ戦略と AWSでのデータプラットフォーム構築 / Healthcare Data in FiNC
kenjiszk
0
2.2k
FiNCにおけるブロックチェーンの取り組み
kenjiszk
1
1.8k
How to manage containers in FiNC
kenjiszk
0
3.7k
Other Decks in Technology
See All in Technology
Grafana エコシステムの活用事例 on ABEMA
tetsuya28
2
180
それでもやっぱり ExpressRoute が好き!
skmkzyk
0
270
AWS Lambdaで実現するスケーラブルで低コストなWebサービス構築/YAPC::Hakodate2024
fujiwara3
7
3.3k
今こそ変化対応力を向上させるとき 〜ログラスが FAST に挑戦する理由〜 / Why Loglass is Talking on the Challenge of Agile Framework FAST
shioyang
0
100
Databricks Appのご紹介
databricksjapan
0
250
Webセキュリティのあるきかた
akiym
32
10k
Low Latency Join Method for Distributed DBMS
yugabytejapan
0
180
【インフラエンジニアbooks】30分でわかる「AWS継続的セキュリティ実践ガイド」
hssh2_bin
4
1.7k
普通の Web エンジニアのための様相論理入門 #yapcjapan / YAPC Hakodate 2024
ytaka23
5
1.4k
【shownet.conf_】革新と伝統を融合したファシリティ
shownet
PRO
0
340
第45回 MLOps 勉強会 - ML Test Score を用いた機械学習システムの定量的なアセスメント
masatakashiwagi
3
310
Binary Hacks Rebooted 私選ハック集
nullpo_head
1
250
Featured
See All Featured
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
3
230
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
249
21k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
228
52k
Art, The Web, and Tiny UX
lynnandtonic
296
20k
Code Review Best Practice
trishagee
62
16k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
26
4.1k
What’s in a name? Adding method to the madness
productmarketing
PRO
22
3.1k
How STYLIGHT went responsive
nonsquared
95
5.1k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
26
1.3k
Practical Orchestrator
shlominoach
186
10k
Happy Clients
brianwarren
97
6.7k
How to Ace a Technical Interview
jacobian
275
23k
Transcript
גࣜձࣾ FiNC Technologies Kenji Suzuki ϚΠΫϩαʔϏεʹ͓͚Δ ࠷ߴͷ%9Λࢦͯ͠
• Kenji Suzuki • FiNC Technologies • Engineering Manager •
SREάϧʔϓ • ٕज़ਪਐάϧʔϓ • ೖࣾ4͘Β͍ 8IPBN*
େنʹ͍ͯ͘͠ϚΠΫϩαʔϏεΛ ؾ࣋ͪΑ͘։ൃɾӡ༻͢ΔͨΊʹͲ͏ͨ͠Βྑ͍͔ 5PEBZ`5BML
• ϚΠΫϩαʔϏε vs ϞϊϦε • ϚΠΫϩαʔϏεͲ͏ͬͯΔʁ ࠓ͞ͳ͍͜ͱ
• DX(Developer Experience)ͬͯԿʁ • Microservicesʹ͍ͭͯ • Microservicesʹ͓͚ΔDXʹ͍ͭͯߟ͑Δ • Microservicesʹ͓͚ΔDXΛྑ͘͢ΔͨΊʹ "HFOEB
DX(Developer Experience)ͬͯԿʁ
• ։ൃऀମݧ • ؾ࣋ͪΑ͘։ൃ͕Ͱ͖͍ͯΔ͔Ͳ͏͔ʁ %9 %FWFMPQFS&YQFSJFODF ͱʁ
• ؾ͕࣋ͪྑ͍։ൃͷҰྫ • γεςϜશମͷݟ௨͕͠ྑ͍ɾ࠷৽ͷυΩϡϝϯτ͕ἧ͍ͬͯΔ • ίʔυͷ࣭͕ྑ͍ • ٕज़ෛ࠴͕গͳ͍ɺ·ͨదʹཧ͞Ε͍ͯΔ • ςετσϓϩΠΛߴʹߦ͏͜ͱ͕Ͱ͖Δ
• ϥΠϒϥϦϑϨʔϜϫʔΫͷόʔδϣϯ͕ਖ਼͘͠ཧ͞Ε͍ͯΔ • ͳͲͳͲ %9͕ྑ͍ͱʁ
• ։ൃʹ༨༟͕ੜ·ΕΔ • ඇػೳཁ݅ʹख͕Ճ͑ΒΕΔ • ϦϑΝΫλϦϯάɾϦΞʔΩςΫτ͕͘͢͠ͳΔ • ۓٸͰͳ͍͕ॏཁͳ͜ͱʹ͕͘Α͏ʹͳΔ %9͕ྑ͍ͱͲ͏ͳΔʁ
• DX͕ྑ͍ঢ়ଶͰ͋Ε(։ൃʹ༨༟͕͋Ε) • ͞Βʹ։ൃ͕ؾ࣋ͪΑ͘ͳΔ׆ಈʹ࣌ؒΛׂ͚ΔΑ͏ʹͳΔ • ݁ՌతʹDX͞ΒʹΑ͘ͳΔ %9εύΠϥϧ
• DX͕ྑ͘ͳ͍ɺ͘͠Կߟ͍͑ͯͳ͍߹ • Կͯ͠ͳ͚ΕѱԽ͢Δ • ྫ • ࠷৽ͷυΩϡϝϯτ͕ἧ͍ͬͯΔʁ • ϥΠϒϥϦదʹόʔδϣϯΞοϓ͞Ε͍ͯΔʁ
%9εύΠϥϧ
%9Ͱେࣄͳͷܧଓతҡ࣋׆ಈ
Microservicesʹ͍ͭͯ
େ͖ͳγεςϜΛɺখ͘͞ɺҰͭͷׂʹׂͨ͠ͷ 8IBUJT.JDSPTFSWJDFT
• ٕज़ಛҟੑ • ճ෮ੑ • εέʔϦϯά • ৫ͷҰக • ߹Մೳੑ
• ͳͲͳͲ .FSJUTPG.JDSPTFSWJDFT
8IZ'J/$BEPQU.JDSPTFSWJDFT
ΧϥμͷશͯΛҰͭͷΞϓϦͰɻ ͱ͍͏ίϯηϓτ͕͏·͘·ͬͨ ϚΠΫϩαʔϏεͱඇৗʹ૬ੑ͕ྑ͘ɺ ৽ػೳΛߴͰϦϦʔε͖ͯͨ͠ UP$ΞϓϦ ೝূαʔϏε &$αΠτ "*ػೳ Ϋʔϙϯ ΣΞϥϒϧ
Ϩίϝϯυ ϥΠϑϩά 4/4ػೳ νϟοτ UP#αΠτ ϙΠϯτ αϓϦϝϯτ
ଟ͘ͷΞϓϦΛ։ൃɾӡ༻͍ͯ͠Δ ࢟ੳ &$αΠτ ཧऀը໘ Ϣʔβʔ ϩʔϧཧ ৯ࣄղੳ ϓϨϛΞϜձһ ݈อαʔϏε UP$ΞϓϦ
#'' νϟοτ ϥΠϑϩά UP#αΠτ ௨αʔϏε 4/4ػೳ ίϯςϯπཧ Ϣʔβʔ άϧʔϓཧ "*Ϩίϝϯυ ϓογϡ௨ UP$Σϒ ܾࡁ าΠϕϯτ νϡʔτϦΞϧ ϙΠϯτཧ ೝূج൫
Microservicesʹ͓͚ΔDXʹ͍ͭͯߟ͑Δ
.JDSPTFSWJDFTͱ%9ͷ૬ੑ MicroservicesΛ࠾༻͢ΔͱDXʹͲͷΑ͏ͳӨڹ͕͋Δ͔ʁ
ྑͦ͞͏ʹݟ͑Δ • γεςϜΛখ͘͞ΩʔϓͰ͖ΔͷͰҎԼͷ͜ͱ͕Γ͘͢ͳΔ • γεςϜશମͷݟ௨͕͠ྑ͍ɾ࠷৽ͷυΩϡϝϯτ͕ἧ͍ͬͯΔ • ίʔυͷ࣭͕ྑ͍ • ٕज़ෛ࠴͕গͳ͍ɺ·ͨదʹཧ͞Ε͍ͯΔ •
ςετσϓϩΠΛߴʹߦ͏͜ͱ͕Ͱ͖Δ • ϥΠϒϥϦϑϨʔϜϫʔΫͷόʔδϣϯ͕ਖ਼͘͠ཧ͞Ε͍͍ͯΔ
৽نػೳͷ্ཱͪ͛ʹ͍ͭͯ͞ΒʹྗΛൃش͢Δ • DXطଘͷγεςϜͷෛ࠴ʹେ͖͘ҾͬுΒΕΔͷͰ • ৽نػೳΛϚΠΫϩαʔϏεͰ্ཱͪ͛Δͷඇৗʹྑ͍ • ͍͍ͩͨ3ഒ͘Β͍ͷεϐʔυͰ͍͚Δ(ࣾൺ)
αʔϏε։ൃମ੍ʹ͍ͭͯ͏Ұߟ͑ͯ͠Έ͍ͨ ྑͦ͞͏ʹݟ͑Δͷ͕ͩ
• DXͷରऀ୭͔ʁ • ϚΠΫϩαʔϏεʹ͓͚Δڵຯͷൣғ ࠶ߟ͢Δ؍
DX = Developer Experience? %9ͷରऀ୭͔ʁ
։ൃαΠΫϧʹଟ͘ͷొਓ͕͍Δ %FWFMPQFS 2" 3FMFBTF .BJOUFOBODF 4FDVSJUZ
'J/$5FDIOPMPHJFTͷνʔϜߏ %FWFMPQFS 2" 43&4FDVSJUZ 2" 2" %FWFMPQFS %FWFMPQFS %FWFMPQFS %FWFMPQFS
%FWFMPQFS
%9%FW5FTU4FD0QT&YQFSJFODF ͱͯ͠ߟ͍͑ͨ
ϚΠΫϩαʔϏεͷڵຯͷൣғ • Dev/Test/Sec/Ops ͳͲͦΕͧΕͷཱͰڵຯͷൣғ͕ҟͳΔ • ҰͭͷϚΠΫϩαʔϏεͷൣғ • ͍͔ͭ͘ͷϚΠΫϩαʔϏεΛԣஅͨ͠ൣғ • γεςϜશମ
• ͋ΔػೳΛ։ൃ͢Δͱ͖ʹɺখ ͘͞ݟ௨͠ͷΑ͍Ұͭͷൣғʹ ूத͍ͨ͠ • ͋ΔػೳΛ։ൃ͢Δͱ͖ʹɺෳ ͷΞϓϦέʔγϣϯʹखΛՃ ͑ͨ͘ͳ͍ • ଞͷ։ൃɺӡ༻ͷ߹Ͱαʔ
Ϗε։ൃΛམͱͨ͘͠ͳ͍ %FWFMPQFS 2" 43&4FDVSJUZ 2" 2" %FWFMPQFS %FWFMPQFS %FWFMPQFS %FWFMPQFS %FWFMPQFS ҰͭͷϚΠΫϩαʔϏε
%FWFMPQFS 2" 43&4FDVSJUZ 2" 2" %FWFMPQFS %FWFMPQFS %FWFMPQFS %FWFMPQFS %FWFMPQFS
͍͔ͭ͘ͷϚΠΫϩαʔϏε • ϦϦʔε୯ҐͰ߹ੑΛ୲อ͠ ͍ͨ • ೝূج൫ͳͲɺଟ͘ͷϚΠΫϩ αʔϏε͔Βґଘ͞ΕΔͷʹ ͍ͭͯଞͷϚΠΫϩαʔϏε ͷؔ৺͝ͱʹͳΒ͟ΔΛ͑ͳ͍
%FWFMPQFS 2" 43&4FDVSJUZ 2" 2" %FWFMPQFS %FWFMPQFS %FWFMPQFS %FWFMPQFS %FWFMPQFS
γεςϜશମ • ڞ௨Ͱ༻͢ΔΠϯϑϥج൫ • γεςϜશମʹ͓͚Δ୯Ұো ͷഉআ • γεςϜશମͷηΩϡϦςΟϨ ϕϧҰ൪͍ͱ͜Ζʹ͋ͬͯ ͠·͏
%9%FW5FTU4FD0QT&YQFSJFODF ͱͨ͠߹ɺͲͷΑ͏ͳ͕ݟ͑ͯ͘Δ͔ʁ
ҟͳΔؔ৺ͷൣғͰɺҟͳΔΠϯηϯςΟϒ %FWFMPQFS 43&4FDVSJUZ ϚΠΫϩαʔϏεຖʹҟͳΔ ݴޠΛબ͍ͨ͠ ։ൃऀͷಘҙͳݴޠΛબͰ ͖ΔͷͰ։ൃ্͕͢Δ ࠾༻͢Δݴޠͷ͚ͩηΩϡ ϦςΟύονͷରԠ͕ඞཁ ࠾༻͢Δݴޠͷ͚ͩOpsʹ
ӡ༻͕ࣝඞཁ ͯ͢ͷ։ൃݴޠΛἧ͍͑ͨ
ϚΠΫϩαʔϏεଆʁڞ௨ج൫ଆʁ • ྫ͑ɺCI/CDͷઃఆ • αʔϏεػೳͰͳ͍͕ඞཁͳίϯϙʔωϯτ αʔϏεͷػೳ͡Όͳ͍͔Β γεςϜશମͱͯ͠ͷڞ௨ػ ೳͱͯ͠ఏڙͯ͠΄͍͠ ϏϧυखॱϦϦʔεखॱʹ ͍ͭͯΧελϚΠζ͍ͨ͠
ͷͰɺ֤ϚΠΫϩαʔϏεຖ ʹΓํΛܾΊ͍ͨ Ϗϧυํ๏ʹमਖ਼͕͋ͬͨ ߹ʹɺϚΠΫϩαʔϏεͷݸ ࡞ۀ͢Δͷਏ͍ͷͰڞ ௨ͰҰͭͷγεςϜʹ͍ͨ͠
େنԽʹΑΔෳࡶੑͷ૿Ճ • ෳͷϚΠΫϩαʔϏεʹ·͕ͨΔΑ͏ͳػೳͷ։ൃ • ҶͮΔతʹμϯͨ͠αʔϏεͷݪҼಛఆͷࠔ͞ • ϚΠΫϩαʔϏε͕૿͑Ε૿͑Δ΄Ͳෳࡶੑ͕૿͢ 4FSWJDF 4FSWJDF 4FSWJDF
େنԽʹΑΔ։ൃɾ2"ڥͷߏஙқΞοϓ • ෳͷαʔϏεΛ্্ཱͪ͛ͨͰͷಈ࡞֬ೝ͕ඞཁ • σʔλࢄ͍ͯ͠ΔͷͰ߹ੑͷऔΕͨσʔληοτ͕ඞཁ ࢟ੳ &$αΠτ ཧऀը໘ Ϣʔβʔ ϩʔϧཧ
৯ࣄղੳ ϓϨϛΞϜ ձһ ݈อαʔϏ ε UP$ΞϓϦ #'' νϟοτ ϥΠϑϩά UP#αΠτ ௨αʔϏ ε 4/4ػೳ ίϯςϯπ ཧ Ϣʔβʔ άϧʔϓཧ "*Ϩίϝϯυ ϓογϡ௨ UP$Σϒ ܾࡁ าΠϕϯτ νϡʔτϦ Ξϧ ϙΠϯτཧ ೝূج൫
ϚΠΫϩαʔϏεͳΒͰͷ֦େ • ྫ͑શϚΠΫϩαʔϏεͷηΩϡϦςΟύον • ୯७ʹಉ͡࡞ۀΛԿेճ͢Δඞཁ͕͋Δ • ϥΠϒϥϦߋ৽ͷΑ͏ͳؾΛ͏࡞ۀΛԿेճߦ͏ͷਏ͍ ࢟ੳ &$αΠτ ཧऀը໘
Ϣʔβʔ ϩʔϧཧ ৯ࣄղੳ ϓϨϛΞϜ ձһ ݈อαʔϏ ε UP$ΞϓϦ #'' νϟοτ ϥΠϑϩά UP#αΠτ ௨αʔϏ ε 4/4ػೳ ίϯςϯπ ཧ Ϣʔβʔ άϧʔϓཧ "*Ϩίϝϯυ ϓογϡ௨ UP$Σϒ ܾࡁ าΠϕϯτ νϡʔτϦ Ξϧ ϙΠϯτཧ ೝূج൫
ੜ͡Δ·ͱΊ • ΠϯηϯςΟϒͷҧ͍ʹΑΔিಥ • ڞ௨ vs ࢄʹΑΔিಥ • େنԽʹΑΔෳࡶԽ •
։ൃɺςετɺӡ༻ • αʔϏεͷݸʹൺྫͨ͠࡞ۀྔ
͜͏͍ͬͨΛແࢹͯ͠େنԽ͢Δͱ • ৽αʔϏεͷ্ཱͪ͛ૣ͍ • ݴޠͷछྨ͕૿͑Δͱɺࣾͷϊϋڞ༗͕গͳ͘ͳΔ • CI/CDपΓ͕ෆ҆ఆʹͳͬͨΓɺςετͷ͕࣌ؒ͘ͳΔ • ηΩϡϦςΟύον͕์ஔ͞ΕΔ •
ো͔࣌Βͷ෮چ͕࣌ؒ৳ͼΔ • ͖Ε͍ͳڥͰ։ൃQA͕Ͱ͖ͳ͘ͳΔ • όά͕ଟ͘ɺόάfixʹଟ͘ͷ࣌ؒΛ͏Α͏ʹͳΔ ॳҎ֎ͷ։ൃ͕͘ͳΔ
ͭ·Γ.JDSPTFSWJDFTͱ%9 • ϚΠΫϩαʔϏεͷ։ൃͷ୯ମΛམͱͣ͞ʹ • ϚΠΫϩαʔϏε୯ମ͔Β࿙Εग़͢՝Λղܾ͢Δ ࣋ଓՄೳͳ։ൃͷ࠷େԽΛࢦ͢
ؓ $*$%ͷឯ༨ۂં
$*$%୭͕ཧ͢Δʁ Ұ൪࠷ॳͷϚΠΫϩαʔϏε֤ΞϓϦ͕σϓϩΠઃఆΛ͍࣋ͬͯͨ
$*$%୭͕ཧ͢Δʁ Ұ൪࠷ॳͷϚΠΫϩαʔϏε֤ΞϓϦ͕σϓϩΠઃఆΛ͍࣋ͬͯͨ Πϯϑϥ୲ऀ͕σϓϩΠվमΛߦ͏ػձ͕૿͑ෆศʹ
$*$%୭͕ཧ͢Δʁ Ұ൪࠷ॳͷϚΠΫϩαʔϏε֤ΞϓϦ͕σϓϩΠઃఆΛ͍࣋ͬͯͨ Πϯϑϥ୲ऀ͕σϓϩΠվमΛߦ͏ػձ͕૿͑ෆศʹ σϓϩΠΛ୲͢ΔϚΠΫϩαʔϏεΛ࡞Γڞ௨Խ
$*$%୭͕ཧ͢Δʁ Ұ൪࠷ॳͷϚΠΫϩαʔϏε֤ΞϓϦ͕σϓϩΠઃఆΛ͍࣋ͬͯͨ Πϯϑϥ୲ऀ͕σϓϩΠվमΛߦ͏ػձ͕૿͑ෆศʹ σϓϩΠΛ୲͢ΔϚΠΫϩαʔϏεΛ࡞Γڞ௨Խ ଟݴޠԽ͕ਐΈෳࡶͳγεςϜʹͳΓ୲ऀҎ֎͕͞ΘΕͳ͘ͳͬͨ
$*$%୭͕ཧ͢Δʁ Ұ൪࠷ॳͷϚΠΫϩαʔϏε֤ΞϓϦ͕σϓϩΠઃఆΛ͍࣋ͬͯͨ Πϯϑϥ୲ऀ͕σϓϩΠվमΛߦ͏ػձ͕૿͑ෆศʹ σϓϩΠΛ୲͢ΔϚΠΫϩαʔϏεΛ࡞Γڞ௨Խ αʔϏε૿Ճ͠ଓ͚ɺ୲ऀͷ࡞ۀ͕ϘτϧωοΫʹ ଟݴޠԽ͕ਐΈෳࡶͳγεςϜʹͳΓ୲ऀҎ֎͕͞ΘΕͳ͘ͳͬͨ
$*$%୭͕ཧ͢Δʁ Ұ൪࠷ॳͷϚΠΫϩαʔϏε֤ΞϓϦ͕σϓϩΠઃఆΛ͍࣋ͬͯͨ Πϯϑϥ୲ऀ͕σϓϩΠվमΛߦ͏ػձ͕૿͑ෆศʹ σϓϩΠΛ୲͢ΔϚΠΫϩαʔϏεΛ࡞Γڞ௨Խ αʔϏε૿Ճ͠ଓ͚ɺ୲ऀͷ࡞ۀ͕ϘτϧωοΫʹ ࠶ͼɺCI/CDͷઃఆΛ֤ΞϓϦʹͨ͠ ଟݴޠԽ͕ਐΈෳࡶͳγεςϜʹͳΓ୲ऀҎ֎͕͞ΘΕͳ͘ͳͬͨ
$*$%୭͕ཧ͢Δʁ • ϚΠΫϩαʔϏε͕େنͰ͋Ε֤ΞϓϦͰཧ • ͦͦϚΠΫϩαʔϏεେنͳγεςϜͷҝͷͷ͕ͩ • ymlͰهड़Ͱ͖Δ͘Β͍؆୯ʹͯ͠ࢄཧ͖͢
Microservicesʹ͓͚ΔDXΛྑ͘͢ΔͨΊʹ
.JDSPTFSWJDFTͷ%9Λྑ͘͢ΔऔΓΈ πʔϧͷಋೖ ৫తͳऔ ϚΠΫϩαʔϏε͕େنԽͨ͠ͱͯ͠ ୯ମͷ։ൃΛམͱ͞ͳ͍ҝͷπʔϧ πʔϧΛಋೖͨ͠ͱͯ͠ΧόʔͰ͖ͳ͍ ൣғΛ৫తͳऔͰϑΥϩʔ͢Δ
πʔϧͷಋೖ ৫తͳऔ ϚΠΫϩαʔϏε͕େنԽͨ͠ͱͯ͠ ୯ମͷ։ൃΛམͱ͞ͳ͍ҝͷπʔϧ πʔϧΛಋೖͨ͠ͱͯ͠ΧόʔͰ͖ͳ͍ ൣғΛ৫తͳऔͰϑΥϩʔ͢Δ
αʔϏεϝογϡɺࢄτϨʔγϯά • ෳͷϚΠΫϩαʔϏεʹ·͕ͨΔʹରͯ͠ͷରԠ • ӨڹൣғͷՄࢹԽ • ো࣌ͷಛఆͷ্ 4FSWJDF 4FSWJDF 4FSWJDF
αʔΩοτϒϨΠΧʔ • ಛఆͷαʔϏεͷো͕ଞͷαʔϏεʹӨڹ͠ͳ͍Έ • ҰͭͷোͰγεςϜશମ͕μϯ͠ͳ͍Α͏ʹ(Ops) • ϦϦʔεʹର͢Δ৺ཧతোน͕Լ͕Δ(Dev) 4FSWJDF 4FSWJDF 4FSWJDF
ΧφϦΞϦϦʔε • ϥΠϒϥϦͷΞοϓσʔτͷେ • ϑϨʔϜϫʔΫݴޠͷόʔδϣϯ্͛ಛʹཏతͳQAͷ࣮ࢪ͕ ඞཁ • ΧφϦΞϦϦʔεʹΑͬͯ͜ͷ৺ཧతোนΛԼ͛Δ ϚΠΫϩαʔϏεͷ͚ͩߦΘͳ͍ͱ ͍͚ͳ͍࡞ۀͷ୯ମͷෛ୲ΛԼ͛Δ
࢟ੳ &$αΠτ ཧऀը໘ Ϣʔβʔ ϩʔϧཧ ৯ࣄղੳ ϓϨϛΞϜ ձһ ݈อαʔϏε UP$ΞϓϦ #'' νϟοτ ϥΠϑϩά UP#αΠτ ௨αʔϏε 4/4ػೳ ίϯςϯπ ཧ Ϣʔβʔ άϧʔϓཧ "*Ϩίϝϯυ ϓογϡ௨ UP$Σϒ ܾࡁ าΠϕϯτ νϡʔτϦ Ξϧ ϙΠϯτཧ ೝূج൫
.JDSPTFSWJDFTͷෳ • ͋ΔϚΠΫϩαʔϏεΛ։ൃ/QA͢Δͱ͖ʹ • ͦͷαʔϏε͕ґଘ͢ΔϚΠΫϩαʔϏε܊Λࣗઐ༻Ͱ͖ͳλΠ ϛϯάͰ্͛ͨΓམͱͨ͠Γ͍ͨ͠ • औΓΈ • Kubernetesಋೖͨ͠Β͍͚Δͱ͍͏Θ͚Ͱͳ͍
• ϑΝʔετεςοϓ Infrastructure as a Code • σʔληοτͷ༻ҙ
ؓ ϚΠΫϩαʔϏεͷෳαάϥμϑΝϛϦΞԽ
1SPEVDUJPO 4UBHJOH 1SPEVDUJPO ४1SPEVDUJPO 4UBHJOH
४1SPEVDUJPOڥΛ࡞Γ͔͕ͨͬͨ • લఏͱͯ͠ୡ͓͔ͯ͠ͳ͍ͱ͍͚ͳ͍͜ͱ݁ߏଟ͍ • Infrastructure as a Code • ίϯςφपล͚ͩͰͳ͘ɺAWSͷϑϧϚωʔδυαʔϏεͳͲ
(SQS, Lambda, RDS, etc…) • ϒϥϯνઓུ • QA͕Մೳͳσʔληοτͷ༻ҙ • ϞλϞλ͍ͯ͠Δͱ৽͍͠ϚΠΫϩαʔϏε্ཱ͕͕ͪͬͯ ͍͚ͭͳ͘ͳ͍ͬͯ͘
πʔϧͷಋೖ ৫తͳऔ ϚΠΫϩαʔϏε͕େنԽͨ͠ͱͯ͠ ୯ମͷ։ൃΛམͱ͞ͳ͍ҝͷπʔϧ πʔϧΛಋೖͨ͠ͱͯ͠ΧόʔͰ͖ͳ͍ ൣғΛ৫తͳऔͰϑΥϩʔ͢Δ
πʔϧΛಋೖͯ͠ղܾ͠ͳ͍ͱʁ ͢ͰʹDX͕ѱ͍Օॴ ৫తʹऑ͍෦
લఏͱͯ͠ߟ͑Δ͜ͱ • ػೳ։ൃແݶʹ͋Δ • νʔϜͷ͠͞ɺख़ͳͲ • ֤νʔϜʹԡ͚͍ͯ͠͠έʔε
ஈ֊తͳऔΓΈ ՄࢹԽ ग़དྷΔॴ͔Β ͢Ͱʹߦ͖ಧ͍ͯͳ͍ͱ͜ΖΛՄࢹԽ͢Δ ͦΕΛօͰڞ༗͢Δ νʔϜʹΑΓऔΓΊΔ͜ͱόϥόϥ ग़དྷΔͱ͜Ζ͔Β࢝Ί͍ͯ͘ ࢄԽΛࢦ͢ DXΛਖ਼ͷεύΠϥϧʹͯ͠ࢄͯ͠ε έʔϧ͢Δ৫Λࢦ͍ͯ͘͠
ՄࢹԽ ग़དྷΔॴ͔Β ͢Ͱʹߦ͖ಧ͍ͯͳ͍ͱ͜ΖΛՄࢹԽ͢Δ ͦΕΛօͰڞ༗͢Δ νʔϜʹΑΓऔΓΊΔ͜ͱόϥόϥ ग़དྷΔͱ͜Ζ͔Β࢝Ί͍ͯ͘ ࢄԽΛࢦ͢ DXΛਖ਼ͷεύΠϥϧʹͯ͠ࢄͯ͠ε έʔϧ͢Δ৫Λࢦ͍ͯ͘͠
ϥΠϒϥϦͷߋ৽ɺηΩϡϦςΟΞοϓσʔτ • ԿϚΠΫϩαʔϏεΛӡ༻͍ͯ͠Δͱߦ͖ಧ͔ͳ͍෦͕ग़ͯ͘Δ • DX͕ѱ͍··์ஔ͞Ε͍ͯΔͱ͜Ζ • ྫ͑ɺ • ϥΠϒϥϦͷߋ৽ɺηΩϡϦςΟΞοϓσʔτ •
ͪͳΈʹɺͳͥDX͕ѱ͍ʁ • ͍͟࠷৽ͷόʔδϣϯʹ͋͛Δͱ͖ʹϏοάόϯϦϦʔεʹͳΔ • ์ஔͨ͠··ηΩϡϦςΟ͕ൃੜ͢Δͱඞཁͷͳ͔ͬͨରԠ࡞ۀ ʹΘΕΔ
·ͣՄࢹԽͯ͠Λڞ༗͢Δͱ͜Ζ͔Β • ֤ΞϓϦέʔγϣϯͷϥΠϒ ϥϦͷόʔδϣϯΛԣஅͯ͠ ՄࢹԽ • ͲͷΞϓϦέʔγϣϯͷόʔ δϣϯ͕͍··์ஔ͞Εͯ ͍Δ͔ΛҰྎવʹ •
ఆྫͰνΣοΫ
ՄࢹԽ ग़དྷΔॴ͔Β ͢Ͱʹߦ͖ಧ͍ͯͳ͍ͱ͜ΖΛՄࢹԽ͢Δ ͦΕΛօͰڞ༗͢Δ νʔϜʹΑΓऔΓΊΔ͜ͱόϥόϥ ग़དྷΔͱ͜Ζ͔Β࢝Ί͍ͯ͘ ࢄԽΛࢦ͢ DXΛਖ਼ͷεύΠϥϧʹͯ͠ࢄͯ͠ε έʔϧ͢Δ৫Λࢦ͍ͯ͘͠
Ͱ͖Δͱ͜Ζ͔ΒऔΓΉ • ि̍ճɺ༗ࢤͰू·ͬͯߦ͖ಧ͍͍ͯͳ͍ͱ͜ΖΛαϙʔτ͢Δ • ϥΠϒϥϦͷΞοϓσʔτ • ݴޠͷόʔδϣϯͷΞοϓσʔτ • Dockerfile, CIͷઃఆͳͲͷߋ৽ͳͲ
• νʔϜʹΑͬͯϦϦʔεཱ͕ͯࠐΜͰ͍ͨΓ͢Δ͜ͱ͕͋Δͷ ͰɺશମͰαϙʔτͰ͖Δମ੍Λ࡞Δͱྑ͍
υϝΠϯ͕͍ࣝΒͳ͍෦νʔϜʹͩ͜ΘΒͳ͍ • ྫ͑ɺηΩϡϦςΟύονΛ্͛Δ࡞ۀʹ͍ͭͯɺαʔϏε ͷυϝΠϯࣝ΄΅ෆཁ • ͦ͏͍ͬͨ࡞ۀʹ͍ͭͯɺνʔϜΘ͚ʹͩ͜ΘΒͣʹ࡞ۀՄೳ ͳϝϯόʔ͕Ͱ͖Δͱ͜Ζ͔Βย͚͍ͯ͘ͱྑ͍
ࡇΓతʹऔΓΉͷྑ͍
ՄࢹԽ ग़དྷΔॴ͔Β ͢Ͱʹߦ͖ಧ͍ͯͳ͍ͱ͜ΖΛՄࢹԽ͢Δ ͦΕΛօͰڞ༗͢Δ νʔϜʹΑΓऔΓΊΔ͜ͱόϥόϥ ग़དྷΔͱ͜Ζ͔Β࢝Ί͍ͯ͘ ࢄԽΛࢦ͢ DXΛਖ਼ͷεύΠϥϧʹͯ͠ࢄͯ͠ε έʔϧ͢Δ৫Λࢦ͍ͯ͘͠
͋Δఔମ੍͕ग़དྷ͖ͯͨΒࢄԽΛࢦ͢ • جຊతʹϚΠΫϩαʔϏεͷ։ൃମ੍Λεέʔϧͤ͞ΔͨΊʹ ࢄԽΛࢦ͍ͯ͘͠ • ৫ͱͯ͠DXͷѱ͍ͱ͜ΖʹϑΥʔΧεͯ͠DX͕ճ෮͖ͯͨ͠ Β֤νʔϜʹ͓ͤͰ͖Δঢ়ଶʹͳΔ • ਖ਼ͷεύΠϥϧɿDX͕ྑ͘ͳͬͯ͘ΕอͭݮΔ
ࢄ͢ΕԿेݸ͋Δ3BJMTͷόʔδϣϯΞοϓ • ओཁͳΞϓϦέʔγϣϯ 24hҎʹରԠྃ • Ҏʹͯ͢ͷαʔϏε ͷߋ৽͕ྃ
ѱ ྑ DX %9͕ѱ͍Օॴ Λಛఆ ՄࢹԽ ৫త ʹఈ্͛ ࢄԽ
ѱ ྑ DX %9͕ѱ͍Օॴ Λಛఆ ՄࢹԽ ৫త ʹఈ্͛ ࢄԽ ※
ίπ • ಛఆ͠ղܾ͢ΔΛͳΔ͘খ͘͞ • ҰͭҰͭ͜ͳͯ͠ԣల։͍ͯ͘͠
·ͱΊ
·ͱΊ • ϚΠΫϩαʔϏεʹ͓͚ΔDXͷ্ʹ͍ͭͯߟ͑ͨ • DXͷରऀDevTestSecOpsͱ֦ு͢Δ • ϚΠΫϩαʔϏεͷDXΛ্ͤ͞Δʹ • ϚΠΫϩαʔϏεͷ୯ମͷ։ൃΛམͱͣ͞ʹ •
ϚΠΫϩαʔϏεͷ֎ʹ࿙Εग़ؔ͢৺Λ͏·͘ѻ͍ͬͯ͘ • ͦͷͨΊʹ • πʔϧʹΑΔΞϓϩʔν • ৫ʹΑΔΞϓϩʔν