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
はてなリモートインターンシップ2022 インフラ 講義資料
Search
Hatena
December 19, 2022
Programming
2.9k
6
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
はてなリモートインターンシップ2022 インフラ 講義資料
https://hatena.co.jp/recruit/intern/2022
Hatena
December 19, 2022
More Decks by Hatena
See All by Hatena
60分で学ぶクラウドとSRE・サービス運用 / GeekCAMPAcademia 2026-05
hatena
1
80
エンジニアリング マネージャーの育成と評価軸の考え方
hatena
0
600
Perlブートキャンプ
hatena
0
5.1k
はてなサマーインターンシップ2025 Web API 講義資料
hatena
0
1.1k
はてなサマーインターンシップ2025 フロントエンド 講義資料
hatena
21
11k
はてなサマーインターンシップ2025 コンテナ + Kubernetesハンズオン 講義資料
hatena
0
740
はてなサマーインターンシップ2025 クラウドと運用 講義資料
hatena
0
780
はてなサマーインターンシップ2025 RDBMSの基礎 講義資料
hatena
0
840
はてなサマーインターンシップ2025 セキュリティ 講義資料
hatena
0
780
Other Decks in Programming
See All in Programming
Javaの型とAI時代に型が大事な理由 / java types and type in AI era
kishida
2
140
1B+ /day規模のログを管理する技術
broadleaf
0
100
Oxlintのカスタムルールの現況
syumai
6
1.1k
脅威をエンジニアリングの糧にして――現場編 / Turning Threats into Engineering Fuel — Field Edition
nrslib
0
290
技術記事、 専門家としてのプログラマ、 言語化
mizchi
13
6.3k
その問い、本当に正しいですか?AI時代のエンジニアに必要な哲学と認知科学 / ai-philosophy-cognitive-science
minodriven
11
5.9k
メソッドのジェネリクスでGoの夢は広がるか? / Kyoto.go #65
utgwkk
3
850
JJUG CCC 2026 Spring: JSpecify で実現する Kotlin フレンドリーな Java API 設計
ternbusty
1
180
エンジニアと一緒にテストコードの設計と実装を改善した話
mototakatsu
0
210
LLMによるContent Moderationの本番運用の裏側と品質担保への挑戦
suikabar
3
720
AI時代のUIはどこへ行く?その2!
yusukebe
22
7.4k
ユニットテストの先へ:テスト技法で要求・仕様を整理するJava開発実践 / Beyond_Unit_Testing_Practical_Java_Development_Techniques_for_Organizing_Requirements_and_Specifications
shimashima35
0
410
Featured
See All Featured
Marketing to machines
jonoalderson
1
5.5k
Effective software design: The role of men in debugging patriarchy in IT @ Voxxed Days AMS
baasie
0
420
What the history of the web can teach us about the future of AI
inesmontani
PRO
1
620
The #1 spot is gone: here's how to win anyway
tamaranovitovic
2
1.1k
Embracing the Ebb and Flow
colly
88
5.1k
GraphQLとの向き合い方2022年版
quramy
50
15k
Building Applications with DynamoDB
mza
96
7.1k
Jamie Indigo - Trashchat’s Guide to Black Boxes: Technical SEO Tactics for LLMs
techseoconnect
PRO
0
170
エンジニアに許された特別な時間の終わり
watany
107
250k
Taking LLMs out of the black box: A practical guide to human-in-the-loop distillation
inesmontani
PRO
3
2.3k
Why Our Code Smells
bkeepers
PRO
340
58k
The Power of CSS Pseudo Elements
geoffreycrofte
82
6.3k
Transcript
Web αʔϏε Πϯϑϥೖ #hatenaintern
׆ס铺紶מחַי Web
泘域 ! Web αʔϏεͷΠϯϑϥͱ - ΠϯϑϥͰҙ͍ࣝͯ͠Δ͜ͱ - αʔόʔઃܭ - αʔόʔߏங
- ΫϥυαʔϏεͷར༻ - αʔόʔӡ༻ - ·ͱΊ
ؕ٤نٚכע =
Web Web - ΞϓϦέʔγϣϯ - ϛυϧΣΞ - OS - Ծαʔόʔ
- ϋʔυΣΞ(ཧαʔόʔͳͲ) - ωοτϫʔΫ - ϑΝγϦςΟ(ϥοΫɺిݯɺۭௐɺͦΕΒΛઃஔɾӡ༻͢ΔσʔληϯλʔͳͲ)
泘域 - Web αʔϏεͷΠϯϑϥͱ ! ΠϯϑϥͰҙ͍ࣝͯ͠Δ͜ͱ - αʔόʔઃܭ - αʔόʔߏங
- ΫϥυαʔϏεͷར༻ - αʔόʔӡ༻ - ·ͱΊ
ؕ٤نٚך䙫閁יַ׆כ ( ) ( ) ( ) ( ) (
) כַֹئ٭لت䬠❠ג״מؕ٤نٚ㲔杯յ禴䧏
⺎榫䓪 ˝ ꤃㲹ֿ颯׀י塛ױםַبتطّ㲔杯ג״ ˝ ַחךئ٭لت⮵榫ך׀
䦡䍖䓪 ˝ 靷蕔מ⺬יقنؚ٭ُ٤ت䷉ャג״ ˝ 䒍鸵מئ٭لت⮵榫ך׀
㱦⪒䓪 ˝ ٗ٭ا٭ס车Ⳃظ٭ذ⟊閾ג״ ˝ 㱦䑏יئ٭لت⮵榫ך׀
Ⲗ曍䓪 ˝ ꄋꊤ氳յ☔氳յ侇ꝴ氳ؤتع⯡峎ג״ ˝ םئ٭لتס䡗Ꝏמחםֿ
刎鬁䓪 ˝ ئ٭لت䡗Ꝏמכםֹ邾ꥭ䓪ס㘃㛻כ梪㗞ס㚺㵚䑴 ג״ ˝ ئ٭لتס釐僶מ碛企ׂ䑴ֻ׆כֿך׀
泘域 - Web αʔϏεͷΠϯϑϥͱ - ΠϯϑϥͰҙ͍ࣝͯ͠Δ͜ͱ ! αʔόʔઃܭ - αʔόʔߏங
- ΫϥυαʔϏεͷར༻ - αʔόʔӡ༻ - ·ͱΊ
ئ٭ف٭錃銶 Web
N ( ) Web3 ΞʔΩςΫνϟ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │ │
│ │ │ │ │ Proxy Server ├───►│ App Server ├───►│ DB Server │ │ │ │ │ │ │ └──────────────┘ └──────────────┘ └──────────────┘
Web ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │ │ │ │ │ │
│ Proxy Server ├───►│ App Server ├───►│ DB Server │ │ │ │ │ │ │ └──────────────┘ └──────────────┘ └──────────────┘ Proxy Apache nginx
تآ٭ٚلٛطؔס澬⟊ 1 ( ) ( )
( ) App
( ) DB
⫛Ꝏ 1. 2.
⫛Ꝏסقذ٭٤ /
/ ( ) keepalived VIP DNS DB / VIP FQDN
VIP ┌────────────────┐ │ │ ┌───►│ Active Server │ │ │
│ │ └────────────────┘ ┌────────────────┐ │ ▲ │ │ VIP │ │ │ Client ├───────┘ │ VRRP │ │ │ └────────────────┘ ▼ ┌────────────────┐ │ │ │ Standby Server │ │ │ └────────────────┘
ٝوٛقذ٭٤ DNS App
ٞ٭غفٚ٤ئ٭✳榫㕙⺬ ┌────────────────┐ │ │ ┌──►│ Server A │ │ │
│ │ └────────────────┘ │ │ ┌──────────┐ ┌───────────────────────────┐ │ ┌────────────────┐ │ │ │ │ │ │ │ │ Client ├─────────►│ Server-side load balancer ├────┼──►│ Server B │ │ │ │ │ │ │ │ └──────────┘ └───────────────────────────┘ │ └────────────────┘ │ │ │ ┌────────────────┐ │ │ │ └──►│ Server C │ │ │ └────────────────┘
ٞ٭غفٚ٤ب٤ء 2
ئ٭ف٭ئؕغٞ٭غفٚ٤ب٤ء DNS SPOF
ٞ٭غفٚ٤ئ٭ ˝ 刎鬁ם⮆丆亠䌋 ˝ ىٜتزؘشؠמ⺎榫䓪ס䥵⟊
ٞ٭غفٚ٤ئ٭ ┌────────────────┐ │ │ ┌──►│ Server A │ │ │
│ │ └────────────────┘ │ │ ┌──────────┐ ┌───────────────────────────┐ │ ┌────────────────┐ │ │ │ │ │ │ │ │ Client ├─────────►│ Server-side load balancer ├────┼──►│ Server B │ │ │ │ │ │ │ │ └──────────┘ └───────────────────────────┘ │ └────────────────┘ │ │ │ ┌────────────────┐ │ │ │ └──►│ Server C │ │ │ └────────────────┘
DNS DNS FQDN IP 1 DNS
DNS Q1: server.example.com A1: 192.0.2.1 ┌─────────────────┐ ┌────────────────┐ ┌────────────────┐ │ │
│ │ │ │ │ DNS Server │◄────────────►│ Client A ├────────►│ Server X │ │ │ │ │ │ 192.0.2.1 │ │ │ │ │ ┌────►│ │ └─────────────────┘ └────────────────┘ │ └────────────────┘ ▲ ▲ ▲ │ │ │ │ ┌────────────────┐ │ ┌────────────────┐ │ │ │ │ │ │ │ │ │ │ │ │ Client B ├───┼────►│ Server Y │ │ │ └────────────────►│ │ │ │ 192.0.2.2 │ │ │ Q2: server.example.com│ │ │ │ │ │ │ A2: 192.0.2.2 └────────────────┘ │ └────────────────┘ │ │ │ │ │ ┌────────────────┐ │ ┌────────────────┐ │ │ │ │ │ │ │ │ │ │ Client C ├───┼────►│ Server Z │ │ └──────────────────────►│ │ │ │ 192.0.2.3 │ │ Q3: server.example.com│ │ │ │ │ │ A3: 192.0.2.3 └────────────────┘ │ └────────────────┘ │ │ │ ┌────────────────┐ │ │ │ │ │ │ │ Client D │ │ └────────────────────────────►│ ├───┘ Q4: server.example.com│ │ A4: 192.0.2.1 └────────────────┘
ؠٚؕؓ٤عئؕغٞ٭غفٚ٤ب٤ء SPOF
؞ٔشبٖ ˝ 鵭䈱⺸┕յ靷蕔鬭峎յعٚنؔشؠꄈס⯡峎ֿ泘氳 ˝ Ⲗ冽ע냕ַֿبتطّס邾ꥭꝧ氦յ鷞榫ؤتعֿ㘃ⱶ ⺎耆䓪ֵֿ ˝ ؞ٔشبֿٖⲖ׀ַֹמؓوٛآ٭ب٘٤錃銶
؞ٔشبٖס❆ Proxy લஈͷΩϟογϡ ProxyʙApp ؒͷΩϟογϡ AppʙDB ؒͷΩϟογϡ │ │ │
│ │ ▼ │ │ ┌───────┐ │ │ │ │ │ ▼ ┌►│ Redis │ │ ┌───────┐ ┌─────────┐ ┌───────┐ │ │ │ ┌───────┐ ▼ │ │ │ │ │ │ │ └───────┘ │ │ ┌────────┐ ┌─────┐ ┌────┤ │ ┌────┤ │ ┌────┤ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├─┘ │ │ │ Client ├────►│ CDN ├─────►│ LB │ Proxy ├────►│ LB │ Varnish ├────►│ LB │ App │ │ DB │ │ │ │ │ │ │ │ │ │ │ │ │ ├──────────────►│ │ └────────┘ └─────┘ └────┤ │ └────┤ │ └────┤ │ │ │ │ │ │ │ │ │ │ │ └───────┘ └─────────┘ └───────┘ └───────┘
Proxy CDN (Content Delivery Network) Web DDoS Akamai, CloudFront, Fastly,
Cloud are
Proxy App HTTP Varnish, nginx
App DB KVS (Key-Value Store) Redis, memcached
泘域 - Web αʔϏεͷΠϯϑϥͱ - ΠϯϑϥͰҙ͍ࣝͯ͠Δ͜ͱ - αʔόʔઃܭ ! αʔόʔߏங
- ΫϥυαʔϏεͷར༻ - αʔόʔӡ༻ - ·ͱΊ
ئ٭ف٭啶疣 ˝ 擻杼ئ٭ف٭ ˝ ♞䘶ئ٭ف٭ ˝ ؤ٤طػ ˝ ؤ٤طػ؛٭آتعٝ٭ب٘٤
ئ٭ف٭סٚؕنئؕؠٜ - ܭը - ௐୡ - ಋೖ - ߏங -
ӡ༻ɾอक - ഇغ
擻杼ئ٭ف٭ ˝ 榫鵍מ⺬ג刎鬁םـ٭غؘؗؓ啶䡗 ˝ ـ٭غؘؗؓס䓪耆نٜמ孨榫ך׀ ˝ ٍعٜؾشؠ꣘չױךؤ٤عٞ٭ٜך׀
擻杼ئ٭ف٭ס鐐갭 ˝ ףׂتآ٭ٜך׀םַ ˝ 鐧鷼յ㵵⪌מ侇ꝴ氳յ☔氳ؤتعֿ־־ ˝ ـ٭غؘؗؓٛخ٭تס⛷Ⱍֿ⭳יױַⲖ曍䓪ֿ䖾ַ 1
♞䘶ئ٭ف٭ Web ( ) - ΞϓϦέʔγϣϯ - ϛυϧΣΞ - OS
- Ծαʔόʔ - ϋʔυΣΞ(ཧαʔόʔͳͲ) - ωοτϫʔΫ - ϑΝγϦςΟ 1
♞䘶䤗软 CPU Xen, KVM
♞䘶ئ٭ف٭סْٛشع / ( )
... /OS
ؤ٤طػ Docker !
ؤ٤طػכ♞䘶ئ٭ف٭כס鷿ַ OS OS OS CPU
ؤ٤طػ؛٭آتعٝ٭ب٘٤ Kubernetes, ECS
Kubernetes EKS, GKE, AKS Kubernetes ! Kubernetes
ًشع־㳃槹յאס⩝ ˝ 擻杼ئ٭ف٭ ˝ לדׄꝎׂ㱦㲊י牧⥸־ֿꄆ釐ն㛻⮉מْ٤طػ٤ت ˝ ♞䘶ئ٭ف٭ ˝ ֹױׂⳂ־םׄף⛼泡 ˝
ؤ٤طػ ˝ ⺬כי僿䏨ג敯䛜מםֹמ禴䧏٬⹜兠
泘域 - Web αʔϏεͷΠϯϑϥͱ - ΠϯϑϥͰҙ͍ࣝͯ͠Δ͜ͱ - αʔόʔઃܭ - αʔόʔߏங
! ΫϥυαʔϏεͷར༻ - αʔόʔӡ༻ - ·ͱΊ
ئ٭لتס䡗Ꝏמכםֹ鐐갭 /
ؓوٛآ٭ب٘٤ס邾ꥭ ˝ ٓؿٛبشؠؓ٭؞طؠزٔ ˝ 㚺催ס䏅ꮶֿ㛻׀ׂםյꝧ氦鵭䈱ֿ⛥┖ ˝ لٜغظوٞؕמ侇ꝴֿ־־յףׂٛٛ٭تך׀ם ַ
ُؕؠٞئ٭لتؓ٭؞طؠزٔס䫑榫 !
/ ˝ 鷞榫٬⟊㱤ס☔氳յ侇ꝴ氳ؤتعֿ㘃ֻ ˝ 敯䛜ס䤧䭂כ禴䧏ֿꦘׂם ˝ 㵚䑴ֿ鷐כج؞ٖٛطؔؕ٤بظ٤عמ氦㷣⺎耆䓪 냕ׂם
ؠٚؗغئ٭لتס⮵榫 Amazon Web Services Google Cloud
XaaS IaaS PaaS SaaS
鞊♳⪦僗ٓظٜ IaaS PaaS SaaS OS OS OS OS
/ ˝ ْٛشع ˝ ُؾ٭ةغئ٭لتמꝧ氦ؤتعյ鷞榫ؤتعס⯡峎 ˝ Ⳃ氳םٛخ٭ت澬⟊מ䦡䍖䓪ס⺸┕ ˝ 䏼ꄈ鐐ꄋמؤتع僃鸵 ˝
┩槡╈מ㰆㏇ظ٭ذج٤ذ٭⮵榫׆כך愤㲹㵚瓀ֿ⺎耆 ˝ ظْٛشع ˝ بتطّסؤ٤عٞ٭ٜتذُؕثס⯆ ˝ ئ٭لتס犉哕氳ם孨榫מبتطّ⪒⛮ס邾ꥭ ˝ ي٤ر٭ٞشؠؕ٤
泘域 - Web αʔϏεͷΠϯϑϥͱ - ΠϯϑϥͰҙ͍ࣝͯ͠Δ͜ͱ - αʔόʔઃܭ - αʔόʔߏங
- ΫϥυαʔϏεͷར༻ ! αʔόʔӡ༻ - ·ͱΊ
ئ٭ف٭鷞榫 ˝ ظ٭ذס畘杼 ˝ 泃釱 ˝ ꤃㲹㵚䑴
ظ٭ذס畘杼 ˝ ظ٭ذס㱦⪒䓪յ⺎榫䓪䥵⟊׆כֿ泘氳 ˝ ظ٭ذס䮇㜊بتطّ꤃㲹מ⤓ֻ ˝ 嫎氳紶ⳉؤ٤وٚؕؓ٤ت㵚瓀ס㵚䑴䑒釐 ˝ 泘氳מ䑴י僃鸵ם䣆嫎鹟䥃 ˝
فشؠؓشوյؓ٭ؕهյٝوٛآ٭ب٘٤ e- J-SOX
فشؠؓشو ˝ 䳩⛼ِتبتطّ꤃㲹յٜؗؔت䚉刌םלס꤀מظ٭ذ䐝 仾ג״מ ˝ ظ٭ذ⪒⛮㚺催䄐⮆ظؔتؠط٭وםלյ擻杼氳מ樟ם 㕙䢥מ㲊僿氳מ⟊㰆 ˝ 䐝仾وٞجت乃傴י㲊僿氳מ澬鏀׆כֿꄆ釐
ؓ٭ؕه ˝ ꄆ釐䗯㕔Ꝏ僿ꝴמגזי⟊㰆٬孨榫 ˝ Ꝏ僿⟊㰆ֿ䑒釐םظ٭ذط٭وظؔتؠյْظؔؓ鋗ꎰ י⟊畘յ泃削䗯㕔ꝧ炐םלյ䑒釐םכ׀מꞦ鈋⺎耆מ ˝ ⟊㰆僿ꝴס畘杼յ䷉؆寕⸻סꡔ塛յꞦ鈋ٞءס畘杼םלס 㱦⪒䓪姲״
ٝوٛآ٭ب٘٤ ˝ ؾشع٠٭ؠ鵟יٜٛؓذّؕמظ٭ذ邾邮 ˝ 䐝仾⛼哅ס䑒釐ֿםׂյ⮉僀ֻ׆כך泘氳鷼䡗ך׀ ˝ فشؠؓشوכ⛍יַֿظ٭ذס䷉؆滭䮇סⲖ冽עם ַ׆כמ嫰䙫
泃釱 /
/ CPU
ؓوٛآ٭ب٘٤泃釱 ˝ ꞊䑏ׇכ ˝ قنؚ٭ُ٤تעⶇ⮆־յ꤃㲹⸉㍔ע⛰־յ塜ׂ嚀耆י ַ־ ˝ 泃釱䧗嘅 ˝ ⭚杼侇ꝴյٞءյىٜتزؘؠؙ٤غَؕ٤عםל
ئ٭لت泃釱 ˝ ꞊䑏ׇכ ˝ ئ٭لت䬠❠ך׀יַ־յ䒍鸵מ✳ֻיַ־ ˝ 泃釱䧗嘅 ˝ ٝتَ٤تؤ٭غյٝؕط٤بםל
ج؞ٖٛطؔ泃釱 ˝ ꞊䑏ׇכ ˝ ┘塜מ⮵榫יַםַ־յ耗䍏םبتطّךעםַ־ ˝ 泃釱䧗嘅 ˝ 泃削ٞءյِغؘٜؗؓ٬ٚؕهٚٛס耗䍏䓪䗯㕔םל
لةؾت泃釱 ˝ ꞊䑏ׇכ ˝ ئ٭لتע䡗Ꝏיַ־յ⮵沟ע⭳יַ־ ˝ 泃釱䧗嘅 ˝ ئ٭لت⮵榫縖丗ס㘃峎յؤتعםל
ꝧ氦قنؚ٭ُ٤ت泃釱 ˝ ꞊䑏ׇכ ˝ ꝧ氦յظوַٞؕ梪㗞禴䧏ך׀יַ־ ˝ 泃釱䧗嘅 ˝ ٛٛ٭ت값䈱յلٜغ٬ظوٞؕסٛ٭غذّؕםל
꤃㲹㵚䑴 &&
泘域 - Web αʔϏεͷΠϯϑϥͱ - ΠϯϑϥͰҙ͍ࣝͯ͠Δ͜ͱ - αʔόʔઃܭ - αʔόʔߏங
- ΫϥυαʔϏεͷར༻ - αʔόʔӡ༻ ! ·ͱΊ
ױכ״ Web