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
Webアプリを動かすまでのインフラ構築 / infra-build-for-web-app
Search
Tomoyuki KOYAMA
July 17, 2021
Technology
520
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Webアプリを動かすまでのインフラ構築 / infra-build-for-web-app
23卒エンジニア志望学生LT会 vol.2 July 17, 2021 @オンライン
Tomoyuki KOYAMA
July 17, 2021
More Decks by Tomoyuki KOYAMA
See All by Tomoyuki KOYAMA
OSINT for SRE: 学術論文とポストモーテムから探る システム障害の共通パターン / SRE NEXT 2026
tomoyk
1
6k
イベントとリソース定義から作成した依存グラフを用いた連鎖障害の調査時間の短縮 / DPS-206
tomoyk
0
57
Root Cause Analysis for Middleware Issues by Kubernetes Resource Events / KST-2026
tomoyk
0
160
Query Prediction for Log Search for Distributed Tracing with External Monitoring Alerts
tomoyk
0
75
Reading HTTP Client Hints
tomoyk
0
170
Log message with JSON item count for root cause analysis in microservices
tomoyk
1
300
Distributed Log Search Based on Time Series Access and Service Relations
tomoyk
0
430
コンピュータが大好きな私が大学院進学した理由 / Why I chose graduate school
tomoyk
1
1.1k
検索性能に配慮した複製による分散ログ管理 / DPS-185
tomoyk
0
56
Other Decks in Technology
See All in Technology
Lint の層を組み直した話
bengo4com
1
170
AI秘書と毎日働くのはもう当たり前。開発以外の業務に足りない機能をどう埋める?
minorun365
PRO
4
1.9k
Devin プロモコードの受け取りと適用(2026.10.27)
kinopeee
1
700
これだけは抑えておきたい!後悔しない re:Invent の過ごし方 / AWS re:Invent 2026 prestudy
kinunori
2
550
Microsoft のサポート ライフサイクルを理解する
murachiakira
PRO
0
230
GitHub、使う?使わない?
happysamurai294
0
110
Claude Code をローカルとサーバー上で利用した際の Bedrock 利用料をユーザー単位で一本化してみる
ohorig
0
190
データマネジメント × 法務で作りあげる、 freeeの新しいデータガバナンスへの軌跡
freee
PRO
2
550
(swiftc) NonCopyableとライフタイム修飾子
teamhimeh
0
150
[re:Invent2026事前勉強会(有志開催)]続きは、ラスベガスの廊下で / continue-in-the-vegas-hallway
sh_fk2
0
390
Adversary Infrastructure Hunting101
disconinja
0
170
"計画的無茶振り"を通してAIネイティブ世代の新人を育てる
subroh0508
1
130
Featured
See All Featured
The #1 spot is gone: here's how to win anyway
tamaranovitovic
4
1.2k
Bootstrapping a Software Product
garrettdimon
PRO
306
120k
Kristin Tynski - Automating Marketing Tasks With AI
techseoconnect
PRO
0
570
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
203
77k
Navigating Weather and Climate Data
rabernat
0
560
Understanding Cognitive Biases in Performance Measurement
bluesmoon
32
3.1k
How to optimise 3,500 product descriptions for ecommerce in one day using ChatGPT
katarinadahlin
PRO
3
3.9k
Building a Modern Day E-commerce SEO Strategy
aleyda
45
9.3k
The Power of CSS Pseudo Elements
geoffreycrofte
82
6.6k
How Software Deployment tools have changed in the past 20 years
geshan
2
35k
Paper Plane
katiecoart
PRO
5
54k
WENDY [Excerpt]
tessaabrams
14
40k
Transcript
Webアプリを動かすまでの インフラ構築 Tomoyuki KOYAMA 23卒エンジニア志望学⽣LT会 vol.2 July 17, 2021 @オンライン
⾃⼰紹介 • 名前︓こやま ともゆき • 所属︓東京⼯科⼤ M1 • 初プログラミング︓中2のときにVBA •
好きな技術︓コンテナ,CI/CD,監視 • 好きなお酒︓エールビール tomoyk tomoyk [Slack] #times-koyama_5000000000000000
はじめに ◆本⽇のゴール デプロイしたWebアプリが動作するために必要な インフラ技術を理解する. ◆対象とする⽅ Webアプリの開発者 (デプロイしたWebアプリが動作する裏側を知りたい) Web App (Flask/Rails)
インター ネット いい感じ な何か ユーザ
アジェンダ Webアプリを動かすための 環境構築 リクエストがAppに 到達するまで
Webアプリを動かすための 環境構築 ⼟台づくり
Webアプリの動作に必要なもの ◆Webアプリの実⾏環境を構成する要素 Application 実⾏対象のソースコード(main.py) Binary/Library (Middleware) Python, OpenSSL, Nginx, MySQL
OS Linux (Ubuntu, Alpine Linux) Hardware CPU, メモリ, ストレージ, ネットワーク OS Bin/Lib App Hardware ®Ubuntu is a registered trademark of Canonical Ltd. ⾼レイヤ 低レイヤ
Webアプリの動作に必要なもの ◆クラウド上にある実⾏環境での管理対象 • 責任共有モデル︓クラウド利⽤者とクラウド提供者で責任を共有 • 管理対象が増えるほど,考えるべきことが増える. • アップデート,セキュリティ対応,品質保証 OS Bin/Lib
App OS Bin/Lib App IaaS 例: AWS EC2 OS Bin/Lib App PaaS / FaaS 例: Heroku CaaS 例: Google Cloud Run OS Bin/Lib Container Hardware Hardware Hardware I: Infrastructure P: Platform F: Function C: Container クラウド 利⽤者 クラウド 提供者
Webアプリの動作に必要なもの • IaaSを例にWebアプリの動作に関わるインフラ構築を紹介 • Flask製Webアプリ(⾔語: Python) を例に紹介 • パブリッククラウドを対象にするため,Hardwareは割愛 •
※ Hardwareの知識は,チューニングには必要不可⽋ OS Bin/Lib App Hardware ®Ubuntu is a registered trademark of Canonical Ltd.
OSレイヤー ◆OSの選定とインストール • OSの例)Ubuntu, CentOS, Amazon Linux, Alpine Linux •
クラウドの場合,⼀般的にOSテンプレートから選択 • AWSの場合,AMI(Amazon Machine Images)を選択 ◆OSの初期設定 ホスト名,ユーザ管理,ファイアウォール (監視,ロギング,バックアップ) Hardware OS ®Ubuntu is a registered trademark of Canonical Ltd.
Bin/Libレイヤー ◆Binary/Libraryのインストール パッケージマネージャで導⼊する. ソースコードからビルドして導⼊する. OS Hardware Bin/Lib $ sudo apt
install python3.9 The following additional packages will be installed: ca-certificates file libexpat1 libmagic-mgc libmagic1 libpython3.9-minimal libpython3.9-stdlib libreadline8 libsqlite3-0 libssl1.1 mime-support openssl python3.9-minimal readline-common tzdata xz-utils Suggested packages: python3.9-venv python3.9-doc binutils binfmt-support readline-doc The following NEW packages will be installed: ca-certificates file libexpat1 libmagic-mgc libmagic1 libpython3.9-minimal libpython3.9-stdlib libreadline8 libsqlite3-0 libssl1.1 mime-support openssl python3.9 python3.9-minimal readline-common tzdata xz-utils $ wget http://nginx.org/download/nginx- 1.21.1.tar.gz $ tar xvf nginx-1.21.1.tar.gz $ cd nginx-1.21.1 $ ./configure && make && make install
Appレイヤー ◆Applicationライブラリ パッケージをインストール ◆Applicationのデプロイ ソースコードの配置(Ansible, Capistrano) ◆Applicationの起動(永続化) OS Bin/Lib App
Hardware $ pip install –r requirements.txt $ rsync /path/to/src remote:/dest $ /path/to/python /opt/src/main.py
リクエストがAppに 到達するまで リクエストが処理される順序
3層 2層 1層 PaaS / FaaS PaaS / FaaS Managed
Database PaaS / FaaS リクエストがAppに到達するまで ◆アーキテクチャの例 Managed Load Balancer Load Balancer uWSGI + Flask MySQL エンド ユーザ Bin/Lib (Middleware) App Bin/Lib (Middleware) 仮想マシン Nginx uWSGI + Flask MySQL エンド ユーザ Bin/Lib (Middleware) App Bin/Lib (Middleware) Managed Service 単⼀の仮想マシン 3層アーキテクチャ
1層 1層 − Webサーバ • エンドユーザからのリクエストを受け取る. • OSSの例)Apache HTTP Server,
Nginx, Caddy • Managed Serviceの例)AWS ALB, Azure Load Balancer • 主な役割︓HTTPSの終端,ロードバランサ,キャッシュ Webサーバ エンド ユーザ Bin/Lib (Middleware) HTTPS
2層 2層 − Appサーバ • Webサーバ(Nginx)からのリクエストに応じた処理を⾏う. • 「Webサーバ→Appサーバ」でのインターフェースは, WebサーバとAppサーバの組み合わせにより変化 •
⾔語やライブラリによりアーキテクチャは変わる. • ⾮同期処理が得意な⾔語/ライブラリか︖ → cf. C10K問題 Nginx uWSGI – Appサーバ Bin/Lib (Middleware) HTTP(S) Unix domain socket 通信⽅式 process process process thread thread WSGI(Python) Rack(Ruby) PSGI(Perl) Flask Flask
Note: ゲートウェイ・インターフェース ◆英語版WikipediaのSCGI 出典 https://en.wikipedia.org/wiki/Simple_Common_Gateway_Interface 2021-07-17アクセス
3層 − データベース • Appサーバからのクエリ(SQL)を受け取る. • クエリに対応したレコードを返答する. • OSSの例)MySQL, MongoDB,
PostgreSQL • 商⽤DBの例)Oracle Database, AWS DynamoDB, Google Cloud Spanner 3層 MySQL Bin/Lib (Middleware) uWSGI + Flask TCP Unix domain socket 通信⽅式
3層 2層 1層 まとめ Webアプリの構成要素 3層アーキテクチャ OS Bin/Lib App Hardware
⾼レイヤ 低レイヤ Nginx uWSGI + Flask MySQL エンド ユーザ Bin/Lib (Middleware) App Bin/Lib (Middleware) ®Ubuntu is a registered trademark of Canonical Ltd.