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
750
マイクロサービスでのセキュリティパッチ含めた ライブラリ更新のつらみと取り組み / security-jaws-no13-kenjiszk
kenjiszk
2
1.1k
Rubyでブロックチェーンを実装してみた話 / Blockchain by Ruby
kenjiszk
2
590
FiNCのRelease Engineering / finc_release_engineering
kenjiszk
0
610
デプロイおじさんのお葬式 / Good-Bye Deploy Ojisan
kenjiszk
0
940
イーサリアムとスマートコントラクト入門 / 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
FlutterアプリにおけるSLI/SLOを用いたユーザー体験の可視化と計測基盤構築
ostk0069
0
120
【令和最新版】AWS Direct Connectと愉快なGWたちのおさらい
minorun365
PRO
5
780
強いチームと開発生産性
onk
PRO
36
12k
Python(PYNQ)がテーマのAMD主催のFPGAコンテストに参加してきた
iotengineer22
0
540
The Role of Developer Relations in AI Product Success.
giftojabu1
1
150
Lambda10周年!Lambdaは何をもたらしたか
smt7174
2
130
Engineer Career Talk
lycorp_recruit_jp
0
190
Storybook との上手な向き合い方を考える
re_taro
5
960
複雑なState管理からの脱却
sansantech
PRO
1
160
OCI Security サービス 概要
oracle4engineer
PRO
0
6.5k
SSMRunbook作成の勘所_20241120
koichiotomo
3
170
AGIについてChatGPTに聞いてみた
blueb
0
130
Featured
See All Featured
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
44
6.8k
Statistics for Hackers
jakevdp
796
220k
A Philosophy of Restraint
colly
203
16k
Fashionably flexible responsive web design (full day workshop)
malarkey
405
65k
Building Better People: How to give real-time feedback that sticks.
wjessup
364
19k
Large-scale JavaScript Application Architecture
addyosmani
510
110k
Scaling GitHub
holman
458
140k
4 Signs Your Business is Dying
shpigford
180
21k
Fireside Chat
paigeccino
34
3k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
665
120k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
229
52k
Done Done
chrislema
181
16k
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Λ্ͤ͞Δʹ • ϚΠΫϩαʔϏεͷ୯ମͷ։ൃΛམͱͣ͞ʹ •
ϚΠΫϩαʔϏεͷ֎ʹ࿙Εग़ؔ͢৺Λ͏·͘ѻ͍ͬͯ͘ • ͦͷͨΊʹ • πʔϧʹΑΔΞϓϩʔν • ৫ʹΑΔΞϓϩʔν