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
クラウドとオンプレ / on the Cloud or Premises
Search
Harukasan
PRO
March 12, 2015
Technology
5
9.4k
クラウドとオンプレ / on the Cloud or Premises
pixiv SPRING BOOTCAMP 2015 講義資料
Harukasan
PRO
March 12, 2015
Tweet
Share
More Decks by Harukasan
See All by Harukasan
Successor to PicoRabbit: Ruby Programming Envorinment / RubyKaigi 2025 follow up
harukasan
PRO
1
220
Write your own mrbgem, Create your own device
harukasan
PRO
1
250
PicoRabbit: a Tiny Presentation Device Powered by Ruby
harukasan
PRO
2
640
pixivを支える技術 / 技育CAMPアカデミア
harukasan
PRO
3
560
20240401 新卒研修 - ピクシブにおける技術領域
harukasan
PRO
1
900
ピクシブのコンテンツ配信基盤技術 / pixiv TECH SALON
harukasan
PRO
5
5.8k
Goにおける画像ファイル処理 / golang.tokyo #19
harukasan
PRO
7
6.8k
WebRTC動画をトランスコードする / Transcoding video streams from WebRTC
harukasan
PRO
5
1.6k
ImageFluxを支えるリモート開発 / 20171202
harukasan
PRO
2
1.9k
Other Decks in Technology
See All in Technology
生成AIを活用した音声文字起こしシステムの2つの構築パターンについて
miu_crescent
PRO
3
230
Oracle Base Database Service 技術詳細
oracle4engineer
PRO
15
93k
GitHub Copilot CLI を使いやすくしよう
tsubakimoto_s
0
110
猫でもわかるKiro CLI(セキュリティ編)
kentapapa
0
120
SRE Enabling戦記 - 急成長する組織にSREを浸透させる戦いの歴史
markie1009
0
170
コミュニティが変えるキャリアの地平線:コロナ禍新卒入社のエンジニアがAWSコミュニティで見つけた成長の羅針盤
kentosuzuki
0
130
マーケットプレイス版Oracle WebCenter Content For OCI
oracle4engineer
PRO
5
1.6k
Exadata Fleet Update
oracle4engineer
PRO
0
1.1k
【Oracle Cloud ウェビナー】[Oracle AI Database + AWS] Oracle Database@AWSで広がるクラウドの新たな選択肢とAI時代のデータ戦略
oracle4engineer
PRO
2
190
GitHub Issue Templates + Coding Agentで簡単みんなでIaC/Easy IaC for Everyone with GitHub Issue Templates + Coding Agent
aeonpeople
1
260
AWS Network Firewall Proxyを触ってみた
nagisa53
1
250
学生・新卒・ジュニアから目指すSRE
hiroyaonoe
2
770
Featured
See All Featured
Exploring anti-patterns in Rails
aemeredith
2
250
[RailsConf 2023] Rails as a piece of cake
palkan
59
6.3k
Optimizing for Happiness
mojombo
379
71k
Why You Should Never Use an ORM
jnunemaker
PRO
61
9.7k
Rails Girls Zürich Keynote
gr2m
96
14k
世界の人気アプリ100個を分析して見えたペイウォール設計の心得
akihiro_kokubo
PRO
66
37k
The AI Revolution Will Not Be Monopolized: How open-source beats economies of scale, even for LLMs
inesmontani
PRO
3
3.1k
Building Better People: How to give real-time feedback that sticks.
wjessup
370
20k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
55
3.3k
We Have a Design System, Now What?
morganepeng
54
8k
Collaborative Software Design: How to facilitate domain modelling decisions
baasie
0
140
Being A Developer After 40
akosma
91
590k
Transcript
ΫϥυͱΦϯϓϨ Shunsuke Michii / Harukasan 2015-03-11
Harukasan / Shunsuke Michii • 2012ʹ৽ଔͱͯ͠ΠϯϑϥνʔϜʹଐ • ίϯςϯπ৴Λ͡Ίͱͯ͠αʔϏεશମͷج൫Λ୲ • αʔϏεج൫͚ͩͰͳ͘σʔλղੳج൫ͷߏஙͳͲ
• ٕज़ܥࡶࢽͷࣥචͳͲ ϐΫγϒגࣜձࣾɹΠϯϑϥνʔϜ
Agenda • WebαʔϏεʹ͓͚ΔΠϯϑϥετϥΫνϟ • ΫϥυͱΦϯϓϨϛεͷҧ͍ • ΫϥελϦϯάͱΦʔέετϨʔγϣϯ
WebαʔϏεʹ͓͚Δ ΠϯϑϥετϥΫνϟ • ͦͦΠϯϑϥετϥΫνϟͱ • ΤϯδχΞϦϯάεέʔϧ͠ͳ͍ • ΠϯϑϥνʔϜͱ • ΠϯϑϥετϥΫνϟεέʔϧ͢Δ
Q1 ͋ͳ͕ͨWebαʔϏεΛઃܭ͢ΔͳΒ ͲͷΑ͏ͳߏΛߟ͑Δ͔ʁ
Application Application Database Cache Storage Application Application Load Balancer DNS
? ? ? ? ? ? ? ? Application Application
Database Cache Storage Application Application Load Balancer DNS
Server Server Server Server Server Local Network Internet Server Server
/ Appliance Server Server Application Application Database Cache Storage Application Application Load Balancer DNS
Heroku Add-on Add-on Add-on Application Add-on DNS Database Cache Storage
EC2 EC2 RDS ElastiCache S3 EC2 EC2 ELB Route53 Database
Cache Storage Application Application Application Application DNS Load Balancer
DNS
ͦͦ ΠϯϑϥετϥΫνϟͱ • αʔϏεΛӡ༻͢Δ্Ͱɺ߃ৗతʹඞཁͱͳΔج൫ • αʔϏεΛߏங͢Δ্ͰͱͳΔͷ • ࣗͰΒͳ͍ͱ͜Ζ
ΠϯϑϥετϥΫνϟ ͦΕࣗՁΛੜ·ͳ͍ • ຊʹՁ͕͋Δͷӡ༻͍ͯ͠ΔαʔϏεɺ͍҃ αʔϏε͕ఏڙ͍ͯ͠ΔͷͰ͋Δ • Πϯϑϥͱͯ͠ԿΛબ͢Δ͔ɺͲ͏͍͏ߏʹ͢ Δ͔ͱ͍ͬͨߏஙϊϋ͕ՁʹͳΔ͜ͱ͋Δ ͕ɺΠϯϑϥࣗମՁʹͳΒͳ͍
Ͳ͜ͰՁΛੜΉ͔ • ΠϯϑϥΑΓ্ͷϨΠϠʔͰՁΛੜΈग़͢ • ʢΤϯδχΞͱͯ͠ʣͲ͜ͰՁΛग़͔͕͢ॏཁ
Contents σβΠϯɾίʔσΟϯά ίϯςϯπࣥච DNS value value
DNS Contents Heroku Add-on Database Add-on Cache Add-on Storage Application
σβΠϯɾίʔσΟϯά ઃܭɾ։ൃ γεςϜઃܭ ίϯςϯπࣥච value value value value
ΤϯδχΞϦϯά εέʔϧ͠ͳ͍ • ࣗͷೳྗ͕ٸʹ100ഒʹͳΔ͜ͱͳ͍ • ʢΤϯδχΞͱͯ͠ʣͲ͜ͰՁΛग़͔͕͢ॏཁ
εέʔϧ͠ͳ͍ͷΛ࡞Βͳ͍ • 1ਓ͔͠ఏڙ͠ͳ͍αʔϏεͦΕҎ্ͷՁΛੜΊ ͳ͍ • ਓεέʔϧ͠ͳ͍͕ʢ͠ͳ͍ͷͰʣɺ༻͢Δਓ ͕ଟ͍΄Ͳ1ਓʹఏڙ͢ΔαʔϏεͷίετԼ͕Δ • εέʔϧ͢ΔϚʔέοτ͕͋Δ͔
ΠϯϑϥνʔϜͱ • αʔϏεΠϯϑϥΛ։ൃऀʹఏڙ͢Δ • ͬͯΔ͜ͱ֤ࣾΒΒ • ΠϯϑϥνʔϜࣗମ͕Πϯϑϥ
ΠϯϑϥνʔϜ Application
ʢۃΛݴ͏ͱʣࣗͷཱͪҐஔΑΓ ԼͷϨΠϠʔͯ͢Πϯϑϥ • ΠϯϑϥΤϯδχΞ͔ΒݟͨΒDCۀऀΠϯϑϥ • DCۀऀ͔ΒΈͯిؾࣄۀऀΠϯϑϥ • ։ൃऀ͔ΒΈͯΠϯϑϥΤϯδχΞΠϯϑϥ • ܦӦऀ͔ΒΈͯܧଓత։ൃΠϯϑϥʢʹࣄۀج൫ʣ
ΠϯϑϥετϥΫνϟ εέʔϧ͢Δ • ΠϯϑϥετϥΫνϟαʔϏεͱͯ͠εέʔϧ͢Δ • ύλʔϯԽͰ͖Δʹεέʔϧ͢Δ • εέʔϧ͢Ε͢Δ΄ͲίετϝϦοτ͕ग़Δ • ڊਓͷݞʹΔ
IaaS (Infrastructure as a Service) • WebαʔϏεͷΠϯϑϥετϥΫνϟΛαʔϏεͱ ͯ͠ఏڙ͢Δ • දతͳαʔϏεʹAWSɺGCPɺSoftLayerͳͲ
• ࣗࣾͷΠϯϑϥετϥΫνϟج൫ΛαʔϏεͱͯ͠ ఏڙ͍ͯ͠Δ
XaaS (X as a Service) • ͳΜͱ͔as a ServiceͱݺΕΔͷશ෦Πϯϑϥ ͳͷͰ·ͱΊͯIaaSͰΑ͍
• ͲͷϨΠϠʔ·Ͱఏڙ͍ͯ͠Δ͔Θ͔Βͳ͘ͳΔʢൺ ֱͰ͖ͳ͘ͳΔʣͷͰPaaSΈ͍ͨͳݴ༿͕ΘΕΔ
WebαʔϏεʹ͓͚Δ ΠϯϑϥετϥΫνϟ • ࣗͰΒͳ͍ͱ͜Ζ • ʢΤϯδχΞͱͯ͠ʣͲ͜ͰՁΛग़͔͕͢ॏཁ • ΠϯϑϥΛαʔϏεʹ͢Δͱεέʔϧ͢Δ ·ͱΊ:
break
IaaSͱΦϯϓϨ • ΦϯϓϨͱʁ • IaaSͱΦϯϓϨͷҧ͍
ΦϯϓϨϛε: On-Premises • ༁͢Δͱ"ߏʹ"ͱͳΔ • ͱͱࣾʹΠϯϑϥετϥΫνϟΛઃஔ͢Δ͜ ͱΛ͍ࣔͯͨ͠
ͳͥΦϯϓϨͱݴ͏ͷ͔ • Ϋϥυͷରٛޠ͕ͳ͔ͬͨ • Macͷରٛޠͱͯ͠ͷPC
ݱͷΦϯϓϨϛεڥ Ϋϥυʹ͍ۙ • ࣗࣾߏʹαʔό͓͍ͯΔͱ͜ΖͳΜͯ·Ε • ଏʹ”ΦϯϓϨ”ͱݺΕΔͱ͖αʔόIDCʹઃஔ ͯ͋͠Δ • ੈͷதͷ΄ͱΜͲͷΦϯϓϨ”ͳΜͪΌͬͯΦϯϓ Ϩϛε”ʹͳͬͯΔ
ຊͷΦϯϓϨϛε ͳΜͪΌͬͯΦϯϓϨϛε ઃஔॴ ࣗࣾDC ϗεςΟϯά αʔόઃஔɾཧ ࣗࣾ IDCɾϕϯμʔ ௐୡ ࣗࣾ
ࣗࣾɾϕϯμʔ ిݯ ࣗࣾܖ IDC ରࡦ ࣗࣾͰઃܭ IDC ճઢ ઐ༻ճઢ IDC ճઢࢹ ࣗࣾ IDC
Q2 IaaSͱΦϯϓϨϛεͷେ͖ͳҧ͍ͱʁ
IaaSͱΦϯϓϨͷҧ͍ • ͚ࣗͩͰ͏͔ɺΈΜͳͰ͏͔ • ͍ํ͕ҧ͏ͷͰ՝ۚମܥ͕େ͖͘ҟͳΔ
ΦϯϓϨͷௐୡ Load Infrastructure • ෛՙʹ߹ΘͤͯௐୡܭըΛཱͯΔ ௐୡλΠϛϯά ↓ ௐୡλΠϛϯά ↓ ௐୡλΠϛϯά
↓
Waste ΦϯϓϨͷௐୡ Load • ෛՙʹ߹ΘͤͯௐୡܭըΛཱͯΔ ௐୡλΠϛϯά ↓ ௐୡλΠϛϯά ↓ ௐୡλΠϛϯά
↓
ΦϯϓϨେม • ͏ͷશͯࣗͰ༻ҙࣗ͠Ͱӡ༻͢Δ • εέʔϧ͠ͳ͍ • ઌΛಡ·ͳ͍ͱ͍͚ͳ͍
IaaSͷௐୡ Load • ෛՙʹ߹Θͤͯ૿ݮͰ͖Δʢཧʣ
IaaSͷௐୡ Load • ෛՙʹ߹Θͤͯ૿ݮͰ͖Δʢݱ࣮ʣ
IaaS͚ͬ͜͏େม • ݁ہࣗͰεέʔϦϯά͢ΔΑ͏ʹ͠ͳ͚Εࣗಈ Ͱεέʔϧ͠ͳ͍ʢͪΐͬͱੲͷʣ • ୯Ձ͚ͩͰݟΕߴ͍
CPU୯Ձͷൺֱ • ʢඇެ։ʣ
ωοτϫʔΫ୯Ձͷൺֱ • ʢඇެ։ʣ
ίετͷҧ͍ • ୯Ձ͚ͩͰݟΕIaaSͷํ͕ߴͦ͏ʹݟ͑Δ • ࣮ࡍʹӡ༻ʹ͔͔Δਓ݅අɺDCΠϯϑϥʹ͔͔Δ ྉۚͳͲ͍ΖΜͳݻఆඅ͕͔͔Δ • େͷ߹IaaSͷํ͕εέʔϧϝϦοτͰ҆͘ͳΔ • ݻఆඅ͕খ͘͞ݟ͑Δ΄Ͳεέʔϧ͢ΕΦϯϓϨ
Ͱͬͨํ͕͍҆
IaaSͱΦϯϓϨ • ΦϯϓϨશ͕ͯࣗલͰͳ͍ʢͨΓલʣ • IaaSεέʔϧ͢Δ͜ͱͰϝϦοτΛग़͍ͯ͠Δ • CPU࣌ؒͰΈΔͱ͔ͳΓΑ͘ͳ͖ͬͯͨ • ωοτϫʔΫ͚ͬ͜͏ߴ͍ ·ͱΊ:
break
ΫϥελϦϯάͱ ΦʔέετϨʔγϣϯ • ΫϥελϦϯάͱΦʔέετϨʔγϣϯ • ͳͥΫϥελϦϯά͍ͨ͠ͷ͔ • ίϯςφΫϥελϦϯά
ΫϥελϦϯάͱ • ଟͷϦιʔεΛ1ͭͷϦιʔεͱͯ͠͏ • Ͱ͔͍Πϯελϯεߴ͍͠ɺSPOFʢ୯Ұোʣ ʹͳΔ • εέʔϦϯά͢Δʹ͍҆ϦιʔεΛͨ͘͞Μฒͯ 1ͭͷϦιʔεʹͯ͠Θͳ͍ͱ͍͚ͳ͍
ΦʔέετϨʔγϣϯͱ • Φʔέετϥͷԋํ๏ɺసͯ͡ฤɺ৫ԽΛ ࢦ͢୯ޠʹͳͬͨ • γεςϜ/ϛυϧΣΞͷࣗಈతͳߏཧɺσϓϩ Πϝϯτͷ͜ͱΛࢦ͢
ΫϥελϦϯά͍ͨ͠ • αʔϏεͷنΛ༧ଌ͢Δͷ͍͠ • ༻ҙ͍ͯ͠ΔΠϯϑϥΛ͙͢ʹೖ͍ͨ͠ • Ϋϥελશମͷ͏ܾͪ·ׂͬͨ߹ͷϦιʔεΛׂΓ ͍ͯͨ
ΦϯϓϨͷௐୡ Load • ෛՙʹ߹ΘͤͯௐୡܭըΛཱͯΔ ௐୡλΠϛϯά ↓ ௐୡλΠϛϯά ↓ ௐୡλΠϛϯά ↓
ʢ෮शʣ
Server Server Server Server Application Application Application Load balancer Application
Application
ΫϥελϦϯά͢ΔͨΊʹ ίϯςφΛ͏ • εέʔϧ͢ΔͨΊʹɺΞϓϦέʔγϣϯɺϛυϧΣ ΞɺઃఆͳͲ༷ʑͳͷΛσϓϩΠͯ͠ಈ࡞͢ΔΑ͏ ʹ͠ͳ͚ΕͳΒͳ͍ • ίϯςφ͝ͱσϓϩΠ͢Εྑ͍ =ΦʔέετϨʔγϣϯ͕؆୯
Docker • ίϯςφཧπʔϧ • DockerfileΛॻ͚ͩ͘ͰίϯςφΛϏϧυͰ͖Δ • ͍·ͷͱ͜ΖσϑΝΫτελϯμʔυ
dockerhub build push pull Dockerfile deployment Image
ͳͥίϯςφʹ͍ͨ͠ͷ͔ • ґଘؔΛύοέʔδϯά͍ͨ͠ • ։ൃऀ͕ϛυϧΣΞͷґଘؔΛཧ͢Δ͜ͱ͕ Ͱ͖ΔΑ͏ʹͳΔ • ίϯςφΛ͏ͱ͜Ε·ͰΠϯϑϥͩͬͨͷ͕ ΠϯϑϥͰͳ͘ͳΔ
Infrastructure Application
Infrastructure Application Container
ίϯςφԽ͞ΕΔͱԿ͕ى͜Δ͔ • ΠϯϑϥͷϨΠϠʔ͕1ͭԼ͕Δ • OSͷύοέʔδཧෆཁʹͳΔ • ίϯςφ͝ͱʹࢹ͕ඞཁʹͳΔ
CoreOS • ίϯςφϗετʹ࠷దԽ͞ΕͨLinuxσΟετϦ Ϗϡʔγϣϯ • systemdʹΑΔίϯςφͷཧͱEtcdɺFleetdͱ͍ͬ ͨΫϥελϦϯάɺΦʔέετϨʔγϣϯπʔϧ͔Β ߏ͞ΕΔ • ࣗಈతͳηΩϡϦςΟΞοϓσʔτ
ΦʔέετϨʔγϣϯ͕Γͳ͍ • ͍ͭ͘ίϯςφΛσϓϩΠ͢Δ͔ • ίϯςφؒͷ૬ޓଓͲ͏͢Δ͔ • ͲͷλΠϛϯάͰεέʔϧ͢Ε͍͍͔
Kubernates • Google͕ͭͬͨ͘ίϯςφΫϥελཧπʔϧ • αʔϏε୯ҐͰͷσϓϩΠ͕Ͱ͖Δ • ͍͍ͩͨશ෦ͷػೳ͕͋Δ͚ͲɺͰ͔͗͢Δ
ͦͦࣗͰΔҙຯ • ίϯςφΛσϓϩΠ͢ΔઌΛࣗલͰΒͳͯ͘ྑ ͍ͷͰ • ͋ΔఔͷεέʔϧʹͳΔͱࣗͰΔ͜ͱΛߟ͑Δ
ΫϥελϦϯάͱ ΦʔέετϨʔγϣϯ • Ͳ͜·Ͱ͕Πϯϑϥ͔࣌ʹΑͬͯมԽ͢Δ • ίϯςφΛ͏ͱ͍Ζ͍ΖͱมΘΓͦ͏ • ͍Ζ͍Ζͱߟ͑ͳ͍ͱ͍͚ͳ͍͜ͱ͕ଟ͍ ·ͱΊ:
·ͱΊ
ΫϥυͱΦϯϓϨ • ΫϥυͰ͋Δ͔Βͱ͔ɺΦϯϓϨͰ͋Δ͔Βɺ ͱ͍͏ͷ͋·Γେ͖ͳͰͳ͍ • ࠷࠷దͳج൫Λબ͢Δͷ͕Α͍ • ͩΊʹͳͬͨΒΓ͑Εྑ͍ • ʢΤϯδχΞͱͯ͠ʣͲ͜ͰՁΛग़͔͕͢ॏཁ