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
Python アプリケーションの裏側とその機序 -WSGI, ASGI 編-
Search
himura467
June 01, 2025
Technology
91
0
Share
Python アプリケーションの裏側とその機序 -WSGI, ASGI 編-
himura467
June 01, 2025
More Decks by himura467
See All by himura467
Figma MCP 勉強会
himura
0
19
基盤モデルのアーキテクチャを改造してみよう - 時系列基盤モデルのマルチモーダル拡張事例の紹介 -
himura
1
1.3k
人生における期待効用の最大化について考える
himura
0
120
CA_kube-scheduler
himura
0
19
Other Decks in Technology
See All in Technology
プラットフォームエンジニア ワークショップ/ platform-workshop
databricksjapan
0
170
電子辞書Brainをネットに繋げてみた(自力編)
raspython3
0
420
インフラが苦手でも大丈夫! 紙芝居 Kubernetes -WWGT 10周年編-
aoi1
1
330
React、まだ楽しくて草
uhyo
7
3.9k
OCI Oracle AI Database Services新機能アップデート(2026/03-2026/05)
oracle4engineer
PRO
0
150
Cloud Run のアップデート 触ってみる&紹介
gre212
0
300
「コーディング」しない人のための Claude Code 入門 ChatGPT の次の一歩 — 業務に組み込む 育成・共有・自動化
rfdnxbro
2
1.1k
ルールやカスタム機能、どう使う?理想の出力を引き出すために今知りたいIBM Bob 5つの機能
muehara
1
300
もりもり新機能を一挙紹介! AgentCoreに入門して、AWS上にAIエージェントを構築しよう
minorun365
PRO
6
680
自称宇宙最速で不合格となったAIP-C01にリベンジを果たすべくAIで問題集アプリを作ってみた。
yama3133
0
260
価格.comをAI駆動で全面刷新する ー 30年分の技術的負債を返し、次の30年の土台をつくる ー / AI Engineering Summit Tokyo 2026
tkyowa
25
23k
Javaで学ぶSOLID原則
negima
1
270
Featured
See All Featured
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
55k
Keith and Marios Guide to Fast Websites
keithpitt
413
23k
The Anti-SEO Checklist Checklist. Pubcon Cyber Week
ryanjones
0
150
How Software Deployment tools have changed in the past 20 years
geshan
0
34k
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
600
AI: The stuff that nobody shows you
jnunemaker
PRO
8
680
Noah Learner - AI + Me: how we built a GSC Bulk Export data pipeline
techseoconnect
PRO
0
190
Public Speaking Without Barfing On Your Shoes - THAT 2023
reverentgeek
1
410
Evolving SEO for Evolving Search Engines
ryanjones
0
210
Lightning talk: Run Django tests with GitHub Actions
sabderemane
0
190
4 Signs Your Business is Dying
shpigford
187
22k
Bioeconomy Workshop: Dr. Julius Ecuru, Opportunities for a Bioeconomy in West Africa
akademiya2063
PRO
1
130
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