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.2k
マイクロサービスにおける 最高の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
730
マイクロサービスでのセキュリティパッチ含めた ライブラリ更新のつらみと取り組み / security-jaws-no13-kenjiszk
kenjiszk
2
1.1k
Rubyでブロックチェーンを実装してみた話 / Blockchain by Ruby
kenjiszk
2
580
FiNCのRelease Engineering / finc_release_engineering
kenjiszk
0
600
デプロイおじさんのお葬式 / Good-Bye Deploy Ojisan
kenjiszk
0
910
イーサリアムとスマートコントラクト入門 / BlockTecCo vol.1
kenjiszk
1
440
FiNCのデータ戦略と AWSでのデータプラットフォーム構築 / Healthcare Data in FiNC
kenjiszk
0
2.1k
FiNCにおけるブロックチェーンの取り組み
kenjiszk
1
1.8k
How to manage containers in FiNC
kenjiszk
0
3.7k
Other Decks in Technology
See All in Technology
再考 アクターモデル/ reconsider actor model
ytake
0
370
「家族アルバム みてね」における運用管理・ オブザーバビリティの全貌 / Overview of Operation Management and Observability in FamilyAlbum
isaoshimizu
4
160
忙しい人のためのLangGraph概要まとめ
__ymgc__
1
200
『GRANBLUE FANTASY: Relink』最高の「没入感」を実現するカットシーン制作手法とそれを支える技術
cygames
1
140
Tricentisにおけるテスト自動化へのAI活用ご紹介/20240910Shunsuke Katakura
shift_evolve
0
200
OSTという文化を組織に根付かせてみた
sansantech
PRO
2
400
事前準備が肝!AI活用のための業務改革
layerx
PRO
1
390
Segment Anything Model 2
tenten0727
3
710
DroidKaigi 2024 たすけて!ViewModel
mhidaka
5
960
プログラム検証入門
riru
6
880
社内の学びの場・コミュニティ形成とエンジニア同士のリレーションシップ構築/devreljapan2024
nishiuma
3
290
プロダクトエンジニアを支えるための開発生産性向上施策
tsukakei
0
150
Featured
See All Featured
The Pragmatic Product Professional
lauravandoore
31
6.2k
Unsuck your backbone
ammeep
667
57k
Clear Off the Table
cherdarchuk
91
320k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
166
48k
No one is an island. Learnings from fostering a developers community.
thoeni
18
2.9k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
5
480
[RailsConf 2023] Rails as a piece of cake
palkan
48
4.6k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
131
32k
Code Review Best Practice
trishagee
62
16k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
26
1.3k
How GitHub Uses GitHub to Build GitHub
holman
472
290k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
41
6.5k
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Λ্ͤ͞Δʹ • ϚΠΫϩαʔϏεͷ୯ମͷ։ൃΛམͱͣ͞ʹ •
ϚΠΫϩαʔϏεͷ֎ʹ࿙Εग़ؔ͢৺Λ͏·͘ѻ͍ͬͯ͘ • ͦͷͨΊʹ • πʔϧʹΑΔΞϓϩʔν • ৫ʹΑΔΞϓϩʔν