Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Python アプリケーションの裏側とその機序 -WSGI, ASGI 編-
Search
himura467
June 01, 2025
Technology
110
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Python アプリケーションの裏側とその機序 -WSGI, ASGI 編-
himura467
June 01, 2025
More Decks by himura467
See All by himura467
Figma MCP 勉強会
himura
0
23
基盤モデルのアーキテクチャを改造してみよう - 時系列基盤モデルのマルチモーダル拡張事例の紹介 -
himura
1
1.4k
人生における期待効用の最大化について考える
himura
0
130
CA_kube-scheduler
himura
0
32
Other Decks in Technology
See All in Technology
ペアプロの価値はコードを書くことだけじゃない
codmoninc
PRO
0
200
越境するなら専門用語を使うな高校校歌 / If you wanna cross border, you shouldn't use jargon
vtryo
0
120
AIに丸投げしないトイル削減 / Eliminating Toil Without Leaving It All to AI
kohbis
4
1.1k
20260912_スクラムにジェネラリストは必要か
ryugen04
0
370
AIオーケストレーションを活用した 開発ワークフローの設計と実践
bqnq
0
140
アプリをもっと"iOSアプリっぽく"する小さな工夫 / Small Touches That Make Your App Feel More Like an iOS App
matsuji
1
620
2026-09-10 【Snowflake World Tour Tokyo 2026】dbt Core と Snowflake で実現する多層的なデータガバナンス / Multi-Layered Data Governance Powered by dbt Core and Snowflake
civitaspo
0
340
登壇の自信を奪う3匹のオバケ / 3 Ghosts That Rob You of Your Confidence in Public Speaking
pauli
3
190
NW運用でNWトポロジ可視化ツールに期待すること/shumoku-meetup1
corestate55
2
120
リージョンの壁を越える、 ちょっと変わったAWSサービスの話
falken
PRO
1
310
AIエージェントの自己改善をどう設計するか / How to Design Self-Improvement for AI Agents
22mi
3
1.9k
OpenTelemetryのメトリクスをCloudWatchに送ってPromQLで見てみた
ota1022
0
120
Featured
See All Featured
Design in an AI World
tapps
1
310
How To Speak Unicorn (iThemes Webinar)
marktimemedia
1
570
Max Prin - Stacking Signals: How International SEO Comes Together (And Falls Apart)
techseoconnect
PRO
0
460
Un-Boring Meetings
codingconduct
0
410
Why Your Marketing Sucks and What You Can Do About It - Sophie Logan
marketingsoph
0
410
Jamie Indigo - Trashchat’s Guide to Black Boxes: Technical SEO Tactics for LLMs
techseoconnect
PRO
0
660
Side Projects
sachag
456
43k
HDC tutorial
michielstock
2
860
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.6k
Dominate Local Search Results - an insider guide to GBP, reviews, and Local SEO
greggifford
PRO
0
330
The World Runs on Bad Software
bkeepers
PRO
72
12k
Building an army of robots
kneath
306
46k
Transcript
ͻΉΒ 1ZUIPOΞϓϦέʔγϣϯͷཪଆͱͦͷػং 84(* "4(*ฤ 2025.5.31 1
͓ͼ Gomen 2025.5.31 2 ͓ͼ
%PDLFSͷ·ͰḷΓண͚ͳ͔ͬͨʜ Moushiwakenai 2025.5.31 5 ͓ͼ 3
8FCΞϓϦέʔγϣϯͷཪଆ Web Application Backyard 2025.5.31 4 8FCΞϓϦͷཪଆ
8FCͷΈ How web works 2025.5.31 5 8FCΞϓϦͷཪଆ 5 Ϣʔβʔ͕ϒϥβʹΞΫηε͢Δͱ͖ɺཪଆͰԿ͕ى͍ͬͯ͜Δʁ ૉͳٙ
8FCͷΈ How web works 2025.5.31 5 8FCΞϓϦͷཪଆ 6 URL Web
Server Browser HTTP HTML DB ੩తίϯςϯπΛ৴͢Δ߹ nginx apache
8FCͷΈ How web works 2025.5.31 5 8FCΞϓϦͷཪଆ 7 Web Server
Browser HTTP HTML ಈతίϯςϯπΛ৴͢Δ߹ Application Server HTTP HTML DB WebSocket Frame WebSocket Frame
ίϯϐϡʔλͷཪଆ Computer Backyard 2025.5.31 8 ίϯϐϡʔλͷཪଆ
ύιίϯങ͏࣌ͱ͔ʜ Buying new PC 2025.5.31 5 ίϯϐϡʔλͷཪଆ 9
ύιίϯങ͏࣌ͱ͔ʜ Buying new PC 2025.5.31 5 ίϯϐϡʔλͷཪଆ 10
$16ͷཪଆ CPU backyard 2025.5.31 5 ίϯϐϡʔλͷཪଆ 11 CPU ίΞ ্ͷྫͰίΞ
Web Server εϨου ্ͷྫͰίΞ Memory CPU(non-SMT) Core Core Core ϓϩηε $16࣌ؒ୯ҐͰׂΓৼΒΕΔ ϓϩάϥϜͷ࣮ߦ୯Ґ εϨου $16Λར༻͢ΔͨΊͷ࣮ߦ୯Ґ ࠷খॲཧ୯Ґ Process Thread Thread Thread Process Thread Core
ϓϩηεͷத Process backyard 2025.5.31 5 ίϯϐϡʔλͷཪଆ 12 Memory Process Text
Segment Data Segment Process Text Segment Data Segment Text Segment Data Segment ϓϩάϥϜͷ໋ྩྻ ͪΖΜ໋ྩػցޠ 3FBE0OMZ ɾ11%" 1FS1SPDFTT%BUB"SFB ε λ ο Ϋ ϙΠ ϯ λɺ ϓ ϩ ά ϥϜ Χ ϯ λ ͳ ͲΧʔωϧͷ࣮ߦใΛอ࣋͢Δ ɾσʔλྖҬ ɹɾ੩తྖҬ ɹఆάϩʔόϧม ɹɾώʔϓྖҬ ɹ௨ৗͷมͳͲ ɾελοΫྖҬ ҾϩʔΧϧείʔϓͳͲͷҰ࣌σʔλ
8FCαʔόͷཪଆ Web Server Backyard 2025.5.31 13 8FCαʔόͷཪଆ
8FCͷฒྻॲཧ Parallel Processing 2025.5.31 5 8FCΞϓϦͷཪଆ 14 ʮαʔό͕ෳ্ཱ͕͍ͪͬͯΔʯ ʮϫʔΧ͕ϝϞϦΛ৯͍௵ͯ͠ࢮΜͩʯ ˢԿͷʁʁ
Ϛϧνϓϩηε Multi Process 2025.5.31 5 8FCαʔόͷཪଆ 15 Memory Process Text
Segment Data Segment ࢠProcess Data Segment ෳͷϓϩηεΛฒྻॲཧ͢Δ͜ͱ ࢠϓϩηεΛෳ্ཱͪ͛ͯฒྻʹಈ͔͢ σʔληάϝϯτͷΈίϐʔ͢Δ ίϐʔ ɾϓϩηεؒͷϝϞϦΛࢀরͰ͖ͳ͍
ϚϧνεϨου Multi Thread 2025.5.31 5 8FCαʔόͷཪଆ 16 Memory Process Text
Segment Data Segment Thread ϓϩηε͔ΒεϨουΛੜ͢Δ ϓϩηεͷྖҬʹεϨουΛෳ্ཱͪ͛ͯ ฒྻʹಈ͔͢ Stack Area Stack Area ίϐʔ ɾϝϞϦۭ͕֤ؒεϨουͷؒͰڞ༗Մೳ ɾϝϞϦۭؒͷΓସ͕͑গͳ͍ɺϝϞϦফඅྔ ɹίϯςΩετεΠονͷΦʔόʔϔου͕খ͍͞
8FCαʔόͷΞʔΩςΫνϟ .1. Web Server Architecture 2025.5.31 17 8FCαʔόͷΞʔΩςΫνϟ
QSFGPSL prefork 2025.5.31 5 8FCαʔόͷΞʔΩςΫνϟ 18 Web Server BQBDIFͰσϑΥϧτͰ࠾༻ Ϛϧνϓϩηε
ϦΫΤετͱϓϩηε͕ରͰରԠ ͭͷϓϩηε่͕յͯ͠ଞͷϓϩηεແࣄ αʔόৗʹز͔ͭͷΞΠυϧͳαʔόϓϩηεΛҡ͍࣋ͯͯ͠ɺ ͦΕΒೖ͖ͬͯͨϦΫΤετʹԠͰ͖ΔΑ͏ʹػ͍ͯ͠Δ ͜ͷΑ͏ʹͯ͠ΫϥΠΞϯτɺϦΫΤετ͕Ԡ͞ΕΔલʹ৽͍͠ࢠϓϩηε͕ GPSL͞ΕΔͷΛͨͳͯ͘Α͍Α͏ʹͳ͍ͬͯΔʢQSFGPSLʣ
XPSLFS worker 2025.5.31 5 8FCαʔόͷΞʔΩςΫνϟ 19 Web Server ϚϧνϓϩηεͱϚϧνεϨουͷϋΠϒϦουܕ ֤ࢠϓϩηεͰෳͷεϨου͕ฒྻ࣮ߦ
ϦΫΤετͱεϨου͕ରͰରԠ αʔόৗʹز͔ͭͷΞΠυϧͳαʔόεϨουͷϓʔϧΛৗʹҡ͍࣋ͯͯ͠ ͦΕΒೖͬͯ͘ΔϦΫΤετʹԠ͑ΒΕΔΑ͏ʹػ͍ͯ͠Δ ىಈॳظ࣌ͷϓϩηε૯StartServers σΟϨΫςΟϒͰઃఆ͞ΕΔ ՔಇதʹαʔόશϓϩηεͷΞΠυϧεϨουͷ߹ܭΛݟੵΓ MinSpareThreads ͱ .BY4QBSF5ISFBET Ͱࢦఆ͞Εͨൣғͷதʹ ͜ͷ͕ऩ·ΔΑ͏ʹGPSLͨ͠ΓLJMMͨ͠Γͯ͠͏·͍͜ͱௐ͢Δ
$L C10k Problem 2025.5.31 5 8FCαʔόͷΞʔΩςΫνϟ 20 ϚϧνϓϩηεϚϧνεϨουؔͳ͘ಉ࣌ଓ͕૿͑Δ͜ͱʹΑΓ ϝϞϦ͕ѹഭ͞ΕΔઃܭ prefork,worker
ͩͱ Ͳ͏ͯ͠ಉ࣌ଓͷ૿Ճʹͬͯαʔό͕ࢮ͵
FWFOU event 2025.5.31 5 8FCαʔόͷΞʔΩςΫνϟ 21 Web Server OHJOYͰ࠾༻͞Ε͍ͯΔʢBQBDIFͰ3)&-͔ΒσϑΥϧτʹʣ ΫϥΠΞϯτ͔ΒͷϦΫΤετΛΠϕϯτͱͯ͠ѻ͍
ͦΕΛτϦΨʔʹϓϩηεͰϋϯυϦϯά͢Δ ΠϕϯτϧʔϓʹΑΔඇಉظͳΠϕϯτۦಈͱ*0ଟॏԽʹΑΔϦΫΤετͷฒߦॲཧ $Lʹରॲ ίϯςΩετεΠονൃੜ͠ͳ͍ʢγϯάϧεϨουʣ γϯάϧεϨου͕ނʹϝϞϦϦʔΫΛىͨ͜͠߹ʹ શϦΫΤετ͕ר͖ఴ͑ʹͳͬͯ͠·͏ϦεΫͷ͜ͱΛݴ͍ͬͯΔ
ͪͳΈʹ1ZUIPOͰʁ case Python: 2025.5.31 5 8FCαʔόͷΞʔΩςΫνϟ 22 GIL(Global Interpreter Lock)
ෳͷεϨου͕ಉ࣌ʹϝϞϦʹΞΫηε͢Δ͜ͱ͕ͳ͍Α͏ʹɺෳͷεϨουͰ 1ZUIPOΠϯλʔϓϦλʔΛಉ࣌ʹ࣮ߦ͢Δ͜ͱΛ͙ͨΊͷͷ 1ZUIPOϓϩάϥϜෳͷεϨουΛ࡞Ͱ͖ΔͷͷɺҰʹ࣮ࡍͷ1ZUIPO ίʔυΛ࣮ߦͰ͖ΔͷͭͷεϨου͚ͩ ͨͩɺྲྀੴʹϚϧνίΞ$16Λ׆༻Ͱ͖ͳ͍ͷ·͍ͣͷͰ ࠷৽ͷ1ZUIPOͰGSFFUISFBEJOHͱ͍͏ػೳʹΑͬͯ(*-Λ ΦϓγϣϯͰແޮԽͰ͖ΔΑ͏ʹͳ͍ͬͯΔʢ·ͩ৮Ε͍ͯͳ͍ʣ
༨ஊ Digression 2025.5.31 5 8FCαʔόͷΞʔΩςΫνϟ 23 ಡ*5༻ޠ࢛ఱԦɺ͋ͱҰਓʁ ɾnginx ɾJWT ɾWSGI
1ZUIPOͰ 8FCΞϓϦέʔγϣϯΛ ࡞ͬͯΈΔͧʂ Python Web Application 2025.5.31 24 1ZUIPOͰ8FCΞϓϦΛ࡞Δ
1ZUIPO8FCϑϨʔϜϫʔΫҰཡ Web Application Framework ೝূػߏɺ03.ɺ944ɺ42-JͷରࡦػߏͳͲΛඪ४Ͱࡌ͍ͯ͠ΔॾʑίϛίϛศརϑϨʔϜϫʔΫ *OTUBHSBN 1JOUFSFTU 'JSFGPYͷ։ൃʹ༻͍ΒΕ͍ͯΔ 2025.5.31 Django
5 1ZUIPOͰ8FCΞϓϦΛ࡞Δ 25 ඞཁ࠷খݶͷػೳͷΈΛඋ͑ͨίϯύΫτͳϑϨʔϜϫʔΫ ֶशίετ͕͍ Flask ͱΓ͋͑ͣ͘ɺόοΫΤϯυ։ൃʹ͓͍ͯσϑΝΫτελϯμʔυײ͕͋Δ σϑΥϧτͰ"1*υΩϡϝϯτΛੜͯ͘͠ΕΔ FastAPI
ྫ͑ʜ For example 2025.5.31 FastAPI 5 1ZUIPOͰ8FCΞϓϦΛ࡞Δ 26 GPSFDBTUBUUFOEBODF ͱ͍͏"1*ͷఆٛ
͜Ε8FCͷߏͷͲ͜ʹ͋ͨΔʁ Kore ha Web no kousei no uchi doko ni
ataru? 2025.5.31 5 1ZUIPOͰ8FCΞϓϦΛ࡞Δ 27 Web Server Browser HTTP HTML ಈతίϯςϯπΛ৴͢Δ߹ Application Server HTTP HTML DB WebSocket Frame WebSocket Frame
͜Ε8FCͷߏͷͲ͜ʹ͋ͨΔʁ Kore ha Web no kousei no uchi doko ni
ataru? 2025.5.31 5 1ZUIPOͰ8FCΞϓϦΛ࡞Δ 28 Web Server Browser HTTP HTML ಈతίϯςϯπΛ৴͢Δ߹ Application Server HTTP HTML DB WebSocket Frame WebSocket Frame
'BTU"1*͚ͩͰ)551Λѻ͑ͳ͍ FastAPI cannot handle HTTP 2025.5.31 5 1ZUIPOͰ8FCΞϓϦΛ࡞Δ 29 6WJDPSOͱ͍͏ϥΠϒϥϦΛͬͯݺͿඞཁ͕͋Δ
6WJDPSOͱʁ What is Uvicorn? 2025.5.31 5 1ZUIPOͰ8FCΞϓϦΛ࡞Δ 30 "4(*ͱ͍͏8FCඪ४ʹ४ڌͨ͠8FCαʔόͷ࣮ ɾ"4(*
ඇಉظରԠͷ1ZUIPO8FCαʔόͱ8FCΞϓϦέʔγϣϯؒͷ ൚༻తͳΠϯλʔϑΣʔε 84(*ͷޙܧͱͯ͠࡞ΒΕͨ දతͳ࣮ͱͯ͠Uvicorn, NGINX Unit, HypercornͳͲ͕͋Δ ɾ84(* 1ZUIPO8FCαʔόͱ8FCΞϓϦέʔγϣϯؒͷ ൚༻తͳΠϯλʔϑΣʔε දతͳ࣮ͱͯ͠Gunicorn, uWSGIͳͲ͕͋Δ
1ZUIPO8FCϑϨʔϜϫʔΫͷରԠඪ४ Web Application Framework and Interface mapping 84(* "4(*ʢ࠷ۙରԠͨ͠ʣ 2025.5.31
Django 5 1ZUIPOͰ8FCΞϓϦΛ࡞Δ 31 84(* Flask "4(* FastAPI
6WJDPSOͷཪଆ Uvicorn backyard 2025.5.31 5 1ZUIPOͰ8FCΞϓϦΛ࡞Δ 32 ࣮6WJDPSOγϯάϧϓϩηεͰ͔͠ಈ͔ͳ͍ ͦͷͨΊɺૉʹσϓϩΠ͢ΔͱϚϧνίΞͷϚγϯϦιʔεΛेશʹ׆͔͖͠Εͳ͍
ϚϧνίΞΛ׆͔͢ߏ Make use of Multiple CPU core 2025.5.31 5 1ZUIPOͰ8FCΞϓϦΛ࡞Δ
33 ϚϧνίΞΛ׆͔ͯ͠ฒྻॲཧΛ༻͍ͯϦΫΤετΛࡹ͖͍ͨ߹ʁ (VOJDPSO ϚϧνϓϩηεͰ͍͚ΔͷͰɺ(VOJDPSO ͷϫʔΧʔϓϩηεͱͯ͠ 6WJDPSOΛ༻͍Δߏ͕Αͦ͞͏ʢ'BTU"1*͕ਪ͍ͯ͠Δʣ ͪͳΈʹ(VOJDPSO/HJOYͳͲͷQSPYZTFSWFSͷཪͰಈ͔͢͜ͱΛਪ͍ͯ͠Δ ͷͰɺ/HJOY(VOJDPSO6WJDPSOͱ͍͏ߏ͕ຊ൪ڥͱͯ͠Αͦ͞͏
ͻΉΒ ͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠ Α͖1ZUIPOϥΠϑΛʂ 2025.5.31 34