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
コンテナベースのクラウド基盤とマイクロサービスアーキテクチャ / IEICE NW NWS16
Search
ozzozz
June 07, 2018
Technology
0
130
コンテナベースのクラウド基盤とマイクロサービスアーキテクチャ / IEICE NW NWS16
2018年6月7日に電子情報通信学会第16回ネットワークソフトウェア研究会に招待いただき講演したものです。
ozzozz
June 07, 2018
Tweet
Share
More Decks by ozzozz
See All by ozzozz
BOSH 101 winter 2018
ozzozz
3
1.1k
BOSH101 autumn 2017
ozzozz
5
1.9k
Cloud Foundry について 〜日本国内のCFコミュニティ界隈の状況など〜 / Session 4-B2-1 at OpenStack Days Tokyo 2017
ozzozz
1
470
Cloud Foundry on OpenStack deep dive / Session 4-B2-5 at OpenStack Days Tokyo 2017
ozzozz
2
220
Cloud Foundry Summit Silicon Valley 2017 参加報告
ozzozz
1
300
Cloud Foundryに関する日本国内コミュニティについて / About Cloud Foundry community in Japan
ozzozz
0
1.4k
Dockerイメージ置き場の件
ozzozz
5
4k
Running Concourse CI on enterprise private cloud
ozzozz
1
530
Running Concourse CI on enterprise private cloud【日本語版】
ozzozz
4
880
Other Decks in Technology
See All in Technology
AI時代だからこそ考える、僕らが本当につくりたいスクラムチーム / A Scrum Team we really want to create in this AI era
takaking22
7
4k
そのWAFのブロック、どう活かす? サービスを守るための実践的多層防御と思考法 / WAF blocks defense decision
kaminashi
0
140
いまさら聞けない ABテスト入門
skmr2348
1
230
Oracle Base Database Service 技術詳細
oracle4engineer
PRO
11
78k
定期的な価値提供だけじゃない、スクラムが導くチームの共創化 / 20251004 Naoki Takahashi
shift_evolve
PRO
4
360
SREとソフトウェア開発者の合同チームはどのようにS3のコストを削減したか?
muziyoshiz
1
210
PLaMoの事後学習を支える技術 / PFN LLMセミナー
pfn
PRO
9
4k
綺麗なデータマートをつくろう_データ整備を前向きに考える会 / Let's create clean data mart
brainpadpr
3
370
Simplifying Cloud Native app testing across environments with Dapr and Microcks
salaboy
0
130
How to achieve interoperable digital identity across Asian countries
fujie
0
140
Optuna DashboardにおけるPLaMo2連携機能の紹介 / PFN LLM セミナー
pfn
PRO
2
940
業務効率化をさらに加速させる、ノーコードツールとStep Functionsのハイブリッド化
smt7174
2
110
Featured
See All Featured
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
252
21k
Product Roadmaps are Hard
iamctodd
PRO
54
11k
How to Ace a Technical Interview
jacobian
280
24k
Reflections from 52 weeks, 52 projects
jeffersonlam
352
21k
Documentation Writing (for coders)
carmenintech
75
5k
Designing for humans not robots
tammielis
254
26k
What’s in a name? Adding method to the madness
productmarketing
PRO
23
3.7k
Building a Modern Day E-commerce SEO Strategy
aleyda
43
7.7k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
22k
Building Applications with DynamoDB
mza
96
6.7k
The Language of Interfaces
destraynor
162
25k
Statistics for Hackers
jakevdp
799
220k
Transcript
ίϯςφϕʔεͷΫϥυج൫ͱ ϚΠΫϩαʔϏεΞʔΩςΫνϟ /55ιϑτΣΞΠϊϕʔγϣϯηϯλ ʗຊ$MPVE'PVOESZάϧʔϓձ ඌ৲݈ ిࢠใ௨৴ֶձୈ16ճωοτϫʔΫιϑτΣΞݚڀձ
ʰίϯςφϕʔεͷΫϥυج൫ͱ ɹɹϚΠΫϩαʔϏεΞʔΩςΫνϟʱ l ίϯςφͱ l ίϯςφϕʔεͷΫϥυج൫ͱ l ϚΠΫϩαʔϏεΞʔΩςΫνϟͱ l σδλϧτϥϯεϑΥʔϝʔγϣϯʹ
͚ͯ ࣍
ίϯςφͱ l Χʔωϧ͕Ϣʔβʹఏڙ͢Δػೳ l Χʔωϧ͕ཧ͢ΔҎԼͷϦιʔεΛίϯ ςφຖʹִ ίϯςφͷϓϩηε͔Βί ϯςφ֎ͷ֤Ϧιʔε͕ݟ͑ͳ͍ l
ϓϩηε*%ɺ6*%ɺ(*% l ϝϞϦ l ϑΝΠϧγεςϜ l ωοτϫʔΫ l ίϯςφؒͰΧʔωϧΛڞ༻
ΞϓϦέʔγϣϯϓϩηε͔ΒΈͨ ɹɹԾϚγϯ 7. ͱίϯςφͷҧ͍ 7.ϗετ ϗετ04Χʔωϧ ϋΠύʔόΠβ ԾϚγϯ ήετ04Χʔωϧ ΞϓϦϓϩηε
ίϯςφϗετ ϗετ04Χʔωϧ ίϯςφ ΞϓϦϓϩηε ϑΝΠϧγεςϜԾԽͳͲ ɾɾɾ ɾɾɾ
7.ϗετͰQTίϚϯυ $ ps axw PID TTY STAT TIME COMMAND 1
? Ss 1:24 /sbin/init 2 ? S 0:02 [kthreadd] 3 ? S 0:09 [ksoftirqd/0] 5 ? S< 0:00 [kworker/0:0H] ... 1230 ? Ssl 0:00 /usr/sbin/libvirtd ... 21498 ? Sl 2703:27 qemu-system-x86_64 -enable-kvm -name vm101 -S -machine pc-1.0,accel=kvm,usb=off -m 4096 -realtime mlock= 21500 ? S 25:26 [vhost-21498] 21503 ? S 0:00 [kvm-pit/21498] ...
%PDLFSίϯςφϗετͰQTίϚϯυ $ ps axw PID TTY STAT TIME COMMAND 1
? Ss 0:14 /sbin/init 2 ? S 0:00 [kthreadd] 3 ? S 0:01 [ksoftirqd/0] 5 ? S< 0:00 [kworker/0:0H] ... 1035 ? Ssl 49:20 /usr/bin/dockerd -H fd:// 1237 ? Ssl 33:09 docker-containerd -l unix:///var/run/docker/ libcontainerd/docker-containerd.sock --metrics-interval=0 --s ... 2114 ? Sl 0:02 /usr/bin/docker-proxy -proto tcp -host-ip 0.0.0.0 -host-port 14567 -container-ip 172.17.0.3 -container-po 2129 ? Sl 0:02 docker-containerd-shim 7ce15569757d613f301bfafd9da34450102f1e9b8bfae74f46ef23f178dbe922 /var/ run/docker/l 2146 pts/1 Ssl+ 0:00 ruby app.rb -e production ...
%PDLFSίϯςφͰQTίϚϯυ $ docker exec -it app_container sh /home/app # ps
axw PID TTY STAT TIME COMMAND 1 ? Ssl+ 0:00 ruby app.rb -e production 189 ? Ss 0:00 sh 193 ? R+ 0:00 ps axw /home/app #
%PDLFSίϯςφ֎ͰVOBNFBίϚϯυ $ docker exec -it app_container sh /home/app # uname
-a Linux 7ce15569757d 4.4.0-103-generic #126-Ubuntu SMP Mon Dec 4 16:23:28 UTC 2017 x86_64 Linux • ίϯςφ • %PDLFSϗετ 6CVOUV-54 $ uname -a Linux docker01 4.4.0-103-generic #126-Ubuntu SMP Mon Dec 4 16:23:28 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
7.ͱൺֱͯ͠ͷ ίϯςφͷಛ l ىಈɾఀࢭ͕͍ l ϒʔτγϟοτμϯͷγʔέϯε͕ͳ͍ l Χʔωϧબͳ͍ l ྫ͑ɺ-JOVYϗετ্Ͱ8JOEPXTωΠςΟϒ
ίʔυͷίϯςφ ͦͷ··Ͱ ಈ͔ͳ͍ l σʔλΛӬଓతʹอ࣋͢ΔϑΝΠϧγεςϜͷ ΞΫηε͍ l ϑΝΠϧγεςϜԾԽͷͨΊɺετϨʔδΞ ΫηεʹΦʔόʔϔου͕͔͔Δ
ίϯςφͳͥྲྀߦͬͨʁ l %PDLFSͷొ͕͖͔͚ͬ l ίϯςφΠϝʔδʢίϯςφͷσΟϨΫτϦ πϦʔʣͷϏϧυͱɺίϯςφΠϯελϯ εͷ࡞ͱ࣮ߦΛ؆қԽ l ίϯςφΠϝʔδΛϨΠϠߏͱ͠ɺࠩͰ ͋ΔϨΠϠΛϏϧυɾ͢ΔػೳΛ۩උ
l %PDLFS)VCʢίϯςφΠϝʔδͷڞ༗ɾެ ։ɾαΠτʣ͕ଘࡏ l Ϋϥυར༻ʹ͓͍ͯ7.ϨϕϧͷԾԽ͕ඞཁෆ ՄܽͰͳ͔ͬͨ͜ͱͷؾ͖͕͕Δ
ʰίϯςφϕʔεͷΫϥυج൫ͱ ɹɹϚΠΫϩαʔϏεΞʔΩςΫνϟʱ l ίϯςφͱ l ίϯςφϕʔεͷΫϥυج൫ͱ l ϚΠΫϩαʔϏεΞʔΩςΫνϟͱ l σδλϧτϥϯεϑΥʔϝʔγϣϯʹ
͚ͯ ࣍
ίϯςφϕʔεͷΫϥυج൫ͱ l 7.Ͱͳ͘ίϯςφΛಉ࣌େྔʹՔಇ͞ ͤɺܭࢉػϦιʔεͷޮతͳར༻ΛਤΔ ίϯςφϗετ ίϯςφϗετ ίϯςφϗετ ɾɾɾ "αʔϏ ε༻ίϯ
ςφ "αʔϏ ε༻ίϯ ςφ #αʔϏ ε༻ίϯ ςφ #αʔϏ ε༻ίϯ ςφ $αʔϏ ε༻ίϯ ςφ ੍ޚܥ(εέδϡʔϦϯάɺΦʔέετϨʔγϣϯɺɾɾɾ)
ίϯςφϕʔεͷΫϥυج൫ͷಛ l εέʔϧΞτɾεέʔϧΠϯ͕͍ l ίϯςφىಈɾఀࢭ͕͍͔Β l ಛʹॲཧෛՙ͕ࠁʑͱେ͖͘มಈ͢Δ 8FCαʔϏεͳͲʹ͏͚ͬͯͭ l σʔλͷӬଓతอ࣋ۤख
l ίϯςφͷϑΝΠϧγεςϜ͍ l ίϯςφͷஔઌϗετ͕ෆఆͩͱڞ༗ε τϨʔδΛߟྀཁ l ஔઌϗετݻఆͩͱނোੑʹ͋Γ
ෳίϯςφϗετͱετϨʔδ l ίϯςφϗετͷϩʔΧϧετϨʔδσʔλӬ ଓԽʹ͑ͳ͍ l ڞ༗ετϨʔδ͕ඞཁ l ͔͠͠ɺڞ༗ετϨʔδ*0ίετ͕ߴ͍ɾɾɾ ίϯςφϗετ ίϯςφϗετ
ίϯςφϗετ ɾɾɾ "αʔϏ ε༻ίϯ ςφ "αʔϏ ε༻ίϯ ςφ #αʔϏ ε༻ίϯ ςφ #αʔϏ ε༻ίϯ ςφ #αʔϏ ε༻ίϯ ςφ "αʔϏ ε༻ίϯ ςφ ڞ༗ετϨʔδ
ΦʔϓϯιʔεͷίϯςφϕʔεΫϥυج൫ l ߴεΩϧͷΤϯδχΞ͕࣮ͨ͠ෳࡶͳߏΛί ϯςφͱԾωοτϫʔΫΛۦͯ͠Քಇͤ͞Δ ʮίϯςφΦʔέετϨʔγϣϯπʔϧʯ l ΞϓϦέʔγϣϯ։ൃऀͷฏқͳΫϥυ ར༻ମݧͷఏڙͱϚϧνςφϯγʔΛॏࢹ͢Δ ʮΫϥυΞϓϦέʔγϣϯج൫ʯ
ෳίϯςφͷߏʢ༻͢ΔίϯςφΠϝʔδɺί ϯςφϓϩηεىಈํ๏ͳͲʣίϯςφؒωοτ ϫʔΫଓ݅ͳͲΛࡉ͔͘ఆٛ͠ೖ ίϯςφϗετ ίϯςφϗετ ίϯςφϗετ ɾɾɾ "αʔϏ ε༻ίϯ ςφ
"αʔϏ ε༻ίϯ ςφ ੍ޚܥ(εέδϡʔϦϯάɺΦʔέετϨʔγϣϯɺɾɾɾ) "αʔϏε༻ Ծ/8 #αʔϏε༻ Ծ/8 #αʔϏ ε༻ίϯ ςφ #αʔϏ ε༻ίϯ ςφ #αʔ Ϗεߏ ఆٛ
ΞϓϦέʔγϣϯίϯςφͷϏϧυͱΠϝʔδͷཧɺ ίϯςφͷஔআɾىಈఀࢭɾࢹ෮چɾϩάϝ τϦΫεͷऩूɺ--ϧʔςΟϯάͳͲΛશͯ୲͏ • CVJMEQBDLʹΑΔίϯςφΠϝʔδͷϏϧυʹରԠ • CVJMEQBDLϓϩάϥϛϯάݴޠϑϨʔϜϫʔΫͷࣗಈݕɺ࣮ ߦڥͷੜɺىಈ࣌ॲཧͷࣗಈઃఆΛ୲͏ • %PDLFSΠϝʔδͷ࣋ͪࠐΈʹରԠ • SVODίϯςφΛඪ४αϙʔτ
• 8JOEPXTαʔό্Ͱͷ8JOEPXTωΠςΟϒΞϓϦ࣮ߦʹରԠ • ϚϧνϢʔβɺϚϧνςφϯτରԠ
$MPVE'PVOESZͷ෦ߏ IUUQTEPDTDMPVEGPVOESZPSHDPODFQUTBSDIJUFDUVSFJOEFYIUNMΑΓ ֤ʑผϓϩηε͔ΒͳΔϚΠΫϩαʔϏεΞʔΩςΫνϟɺෳࡶͳࢄγεςϜ
$MPVE'PVOESZͷجຊతͳಈ͖ ʰ$MPVE'PVOESZͰֶͿɺ1BB4ͷ͘͠Έߨ࠲ʱIUUQXXXTMJEFTIBSFOFUKBDPQFOQBBTGPSCFHJOOFSTʹՃච $ cf push ΞϓϦͷ Ξοϓϩʔυ εςʔδϯά ίϯςφΠϝʔδͷϏϧυ
ίϯςφͷىಈ
ͪͳΈʹ%PDLFSͷ߹ ʰ$MPVE'PVOESZͰֶͿɺ1BB4ͷ͘͠Έߨ࠲ʱIUUQXXXTMJEFTIBSFOFUKBDPQFOQBBTGPSCFHJOOFSTʹՃච ΞϓϦͷ Ξοϓϩʔυ ίϯςφΠϝʔδͷ Ϗϧυ ίϯςφͷىಈ $ scp $
docker run Dockerfile $ docker build
ίϯςφϕʔεΫϥυج൫ͷ͍͚ l ͕ߴ͘ࠓޙվमػೳ֦ॆ͕͋·Γͳͦ͞͏ͳίϯςφ܈ ΛՔಇͤ͞Δͷʹ͍͍ͯΔ l ߴεΩϧͷอकΤϯδχΞ͕͍Δ߹ʹ͍͍ͯΔ l ։ൃ్্͘͠ࠓޙසൟʹվम͕ݟࠐ·ΕΔΞϓϦΛՔಇ͞ ͤΔͷʹ͍͍ͯΔ
l ΞϓϦ։ൃऀ͕ηϧϑαʔϏεͰΞϓϦͷอकӡ༻Λ୲͏߹ʹ ͍͍ͯΔ ແཧʹΘͳ͍ʂʢඇίϯςφߏɺΦϒδΣΫτετϨʔδ׆༻ʣ l σʔλΛӬଓతʹอ͍࣋ͨ͠߹
ʰίϯςφϕʔεͷΫϥυج൫ͱ ɹɹϚΠΫϩαʔϏεΞʔΩςΫνϟʱ l ίϯςφͱ l ίϯςφϕʔεͷΫϥυج൫ͱ l ϚΠΫϩαʔϏεΞʔΩςΫνϟͱ l σδλϧτϥϯεϑΥʔϝʔγϣϯʹ
͚ͯ ࣍
ϚΠΫϩαʔϏεΞʔΩςΫνϟͱ l ϩδοΫͷ༰ɾׂϓϩηεෛՙͷ ͳͲʹج͍ͮͯదʹׂ͞Εͨෳͷ ϓϩηεʢϚΠΫϩαʔϏεʣΛ࿈ܞͤ͞ɺ શମͱͯ͠εέʔϥϒϧͳαʔϏεΛఏڙ ͠Α͏ͱ͢ΔΞʔΩςΫνϟ l ରٛޠϞϊϦγοΫΞʔΩςΫνϟ
ϚΠΫϩαʔϏεΞʔΩςΫνϟͱ http://www.nttdata.com/jp/ja/insights/trend_keyword/2015072301.html ΑΓҾ༻
ϚΠΫϩαʔϏεΞʔΩςΫνϟͷద༻ࢦ l ͍ͭಋೖ͢ΕΑ͍ͷ͔ɺͲ͏ׂ͢Ε Α͍ͷ͔ɺͳͲͷ֬ݻͨΔࢦ·ͩແ͍ l αʔϏεͷ༰ಛੑɺ։ൃӡ༻ϓϩ δΣΫτͷମ੍จԽͳͲɺෳͷཁҼ ʹΑΓ࠷దղ͕େ͖͘ҟͳΔͷͰ l ׂ͢Δࡍʹɺͦͷ*'༷ΛͳΔ͘
ૄ݁߹ͱ͢Δͱͱʹɺ໌จԽͯ͠ɺ૬ޓ ͷ࣮ͷӨڹΛۃখԽ͢Δ͖
ίϯςφͱϚΠΫϩαʔϏεΞʔΩςΫνϟ l ϚΠΫϩαʔϏεΛίϯςφϕʔεͷΫϥ υج൫্Ͱ࣮ߦ͢Δ͜ͱʹΑΔϝϦοτ l *'༷ͷ໌֬Խͱૄ݁߹͕ڧ੍͞ΕΔ l ༻͢ΔܭࢉػϦιʔεͷ؍ଌɾ੍ޚ͕ ߋʹ༰қʹͳΔ l
࣮ߦڥʹର͢ΔϙʔλϏϦςΟ͕૿͢
ϚΠΫϩαʔϏεΞʔΩςΫνϟͱ৫ ใγεςϜ෦ Ұຕؠͳ৫͕*5αʔϏεΛఏڙ ଞͷ෦ॺ ސ٬ ཁ݅ ఏڙ ϚΠΫϩαʔϏεΞʔΩςΫνϟʹదԠͨ͠ ৫͕*5αʔϏεΛఏڙ ఏڙ
ఏڙ ఏڙ ఏڙ ఏڙ
$POXBZͷ๏ଇ システムを設計する組織は、 その構造をそっくりまねた構造 の設計を生み出してしまう Melvin Conway (英)
ʰίϯςφϕʔεͷΫϥυج൫ͱ ɹɹϚΠΫϩαʔϏεΞʔΩςΫνϟʱ l ίϯςφͱ l ίϯςφϕʔεͷΫϥυج൫ͱ l ϚΠΫϩαʔϏεΞʔΩςΫνϟͱ l σδλϧτϥϯεϑΥʔϝʔγϣϯʹ
͚ͯ ࣍
σδλϧτϥϯεϑΥʔϝʔγϣϯʹ͚ͯ l ࣌ʑࠁʑͱมԽ͢Δސ٬χʔζࣄۀڥʹਝʹԠ͑ Δ͜ͱͰސ٬Λຬͤ͞ΔͨΊʹɺ*5Λ༗ޮ׆༻ͨ͠ ΞδϟΠϧͳࣄۀӡӦ͕ඞཁෆՄܽ l ΞδϟΠϧͳࣄۀӡӦͷͨΊʹඞཁͳͷ l దʹݖݶҕৡ͞ΕখճΓ͕ར͖ΞδϦςΟͷߴ͍Τ ϯδχΞνʔϜͷߏஙʢ·ׂͨʣɺҭɺ૿৩
l lQJ[[BSVMFz ֓Ͷʙ໊ఔͱݴΘΕΔ l ͦΕΛࢧ͑ΔπʔϧΫϥυج൫ͷಋೖͱར༻ l ͦΕΒʹجͮ͘ࢼߦࡨޡΛ౿·͑ɺ݁Ռͱͯ͠ϚΠΫϩ αʔϏεΞʔΩςΫνϟΛ࠾͍ͬͯΔՄೳੑߴ͍
ʲએʳ$MPVE'PVOESZؔ࿈ͷίϛϡχςΟ • IUUQDMPVEGPVOESZHSKQ • ຊࠃͰͷ$MPVE'PVOESZͷීٴΛਤΔϢ ʔβάϧʔϓ • (PPHMF(SPVQT·ͨ4MBDLʹొʹೖձ • IUUQQBBTDPOOQBTTDPN
• ʰ$MPVE'PVOESZιʔείʔυྠಡձʱ͔Βൃల ٕͨ͠ज़ษڧձ • IUUQTXXXDMPVEGPVOESZPSH • શੈքͷ$MPVE'PVOESZ։ൃऀɾϢʔβΛ·ͱΊΔ • ͍͔ͭ͘ͷຊاۀձһʹ • /55ɺ࢜௨ɺཱɾɾɾ