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
PHPCon福岡2024-Azureもなかなかいいですよ.pdf
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Kaz Watanabe
June 22, 2024
Technology
370
2
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
PHPCon福岡2024-Azureもなかなかいいですよ.pdf
Kaz Watanabe
June 22, 2024
More Decks by Kaz Watanabe
See All by Kaz Watanabe
開発エンジニアが取り組む DevSecOps ~ GitHub Enterprise × Azure での実践~
kaz29
0
35
Greenは本当にGreenか? - B/GデプロイとAPI自動テストで安心デプロイ
kaz29
1
190
CI/CD/IaC 久々に0から環境を作ったらこうなりました
kaz29
1
490
開発エンジニアが実践するDevSecOps
kaz29
0
150
Azure Container Apps + Bicep 〜 こんな感じで運用しています
kaz29
3
1.3k
20220908_フロントエンドパフォーマンス改善.pdf
kaz29
2
200
PHP製のPodCast配信用WebアプリをReact+Next.jsなSSGで作り直してみた話
kaz29
3
720
バックエンドエンジニアの私がお勧めする SPAフロントエンド開発環境
kaz29
6
6.3k
201909-PHPCon北海道-PHPでCI_CD.pdf
kaz29
0
4.2k
Other Decks in Technology
See All in Technology
Oracle Cloud Infrastructure:2026年6月度サービス・アップデート
oracle4engineer
PRO
0
300
不要なレビューをAIにまかせて AIコーディングの環境改善を加速した
shoota
1
260
2026年6月23日 Syncable Tech + Start Python Club にて
hamukazu
0
150
4人目のSREはAgent
tanimuyk
0
160
【FinOps】データドリブンな意思決定を目指して
z63d
0
330
FPC(フレキシブル)基板にZephyr実装してみた。
iotengineer22
0
170
AIをフル活用してオンコール機能のプロトタイプを2日で作った話 / Building an AI-Powered On-Call Prototype in Just Two Days
nari_ex
0
120
感情と身体を置き去りにしない、エンジニアの生きのこり方 ──いまから、ここから「自分の状態」を扱うという選択
saorimurooka
0
340
40代で“やっとエンジニアになれた”――閉じた学びを開き、空の青さを知る / 20260628 Naoki Takahashi
shift_evolve
PRO
4
850
クレデンシャル流出 ― 攻撃 3 時間 vs 復旧 10 時間。この非対称性にどう備えるか
kazzpapa3
3
560
AWS Security Hub CSPMの成功・失敗体験
cmusudakeisuke
0
540
アラート調査向けAIエージェントの本番導入とその後/AI Agents for Alert Investigation: Production Deployment and After
taddy_919
0
120
Featured
See All Featured
The browser strikes back
jonoalderson
0
1.3k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
32
2.9k
RailsConf 2023
tenderlove
30
1.5k
Why Our Code Smells
bkeepers
PRO
340
58k
JAMstack: Web Apps at Ludicrous Speed - All Things Open 2022
reverentgeek
1
480
Tell your own story through comics
letsgokoyo
1
960
The Cost Of JavaScript in 2023
addyosmani
55
10k
SEO Brein meetup: CTRL+C is not how to scale international SEO
lindahogenes
1
2.7k
Bootstrapping a Software Product
garrettdimon
PRO
307
120k
Why You Should Never Use an ORM
jnunemaker
PRO
61
9.9k
Accessibility Awareness
sabderemane
1
140
Making the Leap to Tech Lead
cromwellryan
135
9.9k
Transcript
"[VSFͳ͔ͳ͔ྑ͍Ͱ͢Αʂ 1)1FSͷҝͷ"[VSFೖ 2024/06/24 PHPΧϯϑΝϨϯεԬ2024 JCOMגࣜձࣾ Θͨͳ(@kaz_29)
WHO? ลҰ (Θͨͳ ͔ͣͻΖ) @kaz_29 JCOMגࣜձࣾ
None
Agenda • PHPΛ࣮ߦՄೳͳαʔϏε • ֤αʔϏεͷ֓ཁհ • ࠷ۙΑ͘͏αʔϏεɾߏͷհ • WebαʔϏεΛఏڙ͢Δ্ͰΑ͘͏֤छαʔϏεͷհ •
·ͱΊ
Azure App Service Azure App Service on Linux
• MSఏڙͷLinuxڥ • GithubͳͲ͔ΒCD • Φʔτεέʔϧ Up / Down •
ෳSlotରԠ • Azure portal্͔ΒSSHͰϩάΠϯՄೳ(Ұ෦੍ݶ͋Γ) QSPEVDUJPOQSFWJFXͷ༷ʹෳ TMPUΛ࡞ͬͯ؆୯ʹ#(σϓϩΠ Azure App Service "[VSF"QQ4FSWJDFPO-JOVY 1PSUBMͰઃఆΛ͢ΔͱσϓϩΠʹ ඞཁͳઃఆ͕Ճ͞ΕɺXPSL fl PX ͕DPNNJU͞ΕΔ https://azure.microsoft.com/ja-jp/pricing/details/app-service/linux/
Azure App Service "[VSF"QQ4FSWJDFPO-JOVY https://azure.microsoft.com/ja-jp/pricing/details/app-service/linux/ # Docs for the Azure
Web Apps Deploy action: https://github.com/Azure/webapps-deploy # More GitHub Actions for Azure: https://github.com/Azure/actions name: Build and deploy PHP app to Azure Web App - phpconfuk on: push: branches: - main workflow_dispatch: jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Setup PHP uses: shivammathur/setup-php@v2 with: php-version: '8.3' - name: Check if composer.json exists id: check_files uses: andstor/file-existence-action@v1 with: files: 'composer.json' - name: Run composer install if composer.json exists if: steps.check_files.outputs.files_exists == 'true' run: composer validate --no-check-publish && composer install --prefer-dist --no-progress - name: Zip artifact for deployment run: zip release.zip ./* -r - name: Upload artifact for deployment job uses: actions/upload-artifact@v3 with: name: php-app path: release.zip deploy: runs-on: ubuntu-latest needs: build environment: name: 'Production' url: ${{ steps.deploy-to-webapp.outputs.webapp-url }} permissions: id-token: write #This is required for requesting the JWT steps: - name: Download artifact from build job uses: actions/download-artifact@v3 with: name: php-app - name: Unzip artifact for deployment run: unzip release.zip - name: Login to Azure uses: azure/login@v1 with: client-id: ${{ secrets.AZUREAPPSERVICE_CLIENTID_XXX }} tenant-id: ${{ secrets.AZUREAPPSERVICE_TENANTID_XXX }} subscription-id: ${{ secrets.AZUREAPPSERVICE_SUBSCRIPTIONID_XXX }} - name: 'Deploy to Azure Web App' uses: azure/webapps-deploy@v2 id: deploy-to-webapp with: app-name: 'phpconfuk' slot-name: 'Production' package: . OpenID Connect(OIDC) Ͱೝূ(MSਪ) - name: Login to Azure uses: azure/login@v1 with: client-id: ${{ secrets.AZUREAPPSERVICE_CLIENTID_… }} tenant-id: ${{ secrets.AZUREAPPSERVICE_TENANTID_… }} subscription-id: ${{ secrets.AZUREAPPSERVICE_SUBSCRIPTIONID_… }}
Azure App Service "[VSF"QQ4FSWJDFPO-JOVY DBUFUDPTSFMFBTF 13&55:@/".&%FCJBO(/6-JOVY CPPLXPSN /".&%FCJBO(/6-JOVY 7&34*0/@*%
7&34*0/ CPPLXPSN ʜ DBUFUDEFCJBO@WFSTJPO QIQWFSTJPO 1)1 DMJ CVJMU.BS /54 $PQZSJHIU D 5IF1)1(SPVQ ;FOE&OHJOFW $PQZSJHIU D ;FOE5FDIOPMPHJFT XJUI;FOE01DBDIFW $PQZSJHIU D CZ;FOE5FDIOPMPHJFT QTBY 1*%55:45"55*.&$0.."/% 4/TCJOCBTICJOJOJU@DPOUBJOFSTI 4/TTTIEVTSTCJOTTIE<MJTUFOFS>PGTUBSUVQT 4/CJOTIPQUTUBSUVQTUBSUVQTI 4/TOHJOYNBTUFSQSPDFTTVTSTCJOOHJOY 4/OHJOYXPSLFSQSPDFTT 4/TQIQGQNNBTUFSQSPDFTT VTSMPDBMFUDQIQGQNDPOG 4/QIQGQNQPPMXXX 4/QIQGQNQPPMXXX https://azure.microsoft.com/ja-jp/pricing/details/app-service/linux/
Azure App Service "[VSF"QQ4FSWJDFPO-JOVY https://azure.microsoft.com/ja-jp/pricing/details/app-service/linux/ App Service Plan ΞϓϦ1 ΞϓϦ2
Worker1 Worker2 ΞϓϦ1 ΞϓϦ2
Azure App Service Web Apps for Containers
• GithubͳͲ͔ΒCD • Φʔτεέʔϧ Up / Down • ෳSlotରԠ •
Azure portal্͔ΒSSHͰϩάΠϯՄೳ(Ұ෦੍ݶ͋Γ) sshdΛࢦఆͷํ๏Ͱ্͓͛ͯ͘ඞཁ͕͋Γ·͢ Azure App Service 8FC"QQTGPS$POUBJOFST https://azure.microsoft.com/ja-jp/pricing/details/app-service/linux/
Azure Container Instances
"[VSF$POUBJOFS*OTUBODFT ֓ཁ • ΦϯσϚϯυͰίϯςφΛ࣮ߦ͢ΔαʔϏε Hyper-VͰ͞Εͨίϯςφʔ • ࠷େ8vCPU / 32GiB ຊϦʔδϣϯͰ·ͩͰ͕͢ɺGPUΛ͑Δߏ͕ϓϨϏϡʔͰެ։த
• AKSͷεέʔϧઌͱͯ͠ར༻Մೳ AKSͰΞΫηε͕ूதͨ͠ࡍͷΦϑϩʔυઌͱͯ͑͠Δ
Azure Container Apps
Azure Container Apps ֓ཁ • ϑϧϚωʔδυk8sϕʔεͷΞϓϦέʔγϣϯϓϥοτϑΥʔϜ • KEDAΛར༻ͨ͠ಈతεέʔϦϯά HTTP /
TCP / Azure Storage Queue / Azure Service Bus / Azure Event Hubs etc… • ϓϥϯ • Consumption Plan(ফඅ) • Dedicated(ઐ༻) • ैྔ՝ۚϫʔΫϩʔυϓϩϑΝΠϧ • ઐ༻ϫʔΫϩʔυϓϩϑΝΠϧ
Azure Container Apps ར༻Մೳͳ CPU ͱϝϞϦ IUUQTMFBSONJDSPTPGUDPNKBKQB[VSFDPOUBJOFSBQQTDPOUBJOFST
Azure Container Apps ࣮ߦڥͷΠϝʔδ CONTAINER APP 1 CONTAINER(S) REPLICA REVISION
1 CONTAINER(S) REPLICA REVISION 2 CONTAINER APP 2 CONTAINER(S) REPLICA REVISION 1 CONTAINER(S) REPLICA REVISION 2 CONTAINER APPS ENVIRONMENT
͜͜·Ͱͷ·ͱΊ 1)1Λ࣮ߦՄೳͳ1BB4 • Azure App Service on Linux MSۘͷLinuxڥ •
Web Apps for Containers DockerΛ࣮ߦՄೳͳαʔϏε • Azure Container Instances ΦϯσϚϯυͰίϯςφΛ࣮ߦ͢ΔαʔϏε • Azure Container Apps ϑϧϚωʔδυk8sϕʔεͷΞϓϦέʔγϣϯϓϥοτϑΥʔϜ
ͦͷ΄͔ͷΑ͘͏αʔϏε • Azure Static Web Apps ϑϩϯτΞϓϦͳͲ੩తίϯςϯπΛ৴ • Azure Container
Registry ίϯςφΠϝʔδͷཧ • Azure Front Door WAF / CDN • Azure Monitor / Log Analytics Workspace ϩάཧ • Azure Application Insights ΞϓϦέʔγϣϯϩάཧ(ϑϩϯτͷϩάऩू) • Azure Key Vault ೝূใͳͲൿಗੑͷߴ͍ใͷཧ • Azure Storage • Blob Storage ΫϥυετϨʔδ • Queue ϝοηʔδϯάετΞ • Azure Database for PostgreSQL / MySQL • Azure Web PubSub ϦΞϧλΠϜϝοηʔδϯά(WebSocket) • Bicep(ARM Template) IaCπʔϧ
Azure Static WebApps
Azure Static WebApps ֓ཁ • ੩తίϯςϯπ৴༻ͷαʔϏε • ෳͷڥ(slotతͳͷ) • ΧελϜυϝΠϯରԠ(ূ໌ॻແྉɺࣗಈߋ৽)
• ଳҬ෯ - 100 GB (αϒεΫϦϓγϣϯ͋ͨΓ) • ೝূ • API࿈ܞ(Functions / Container Apps) • ϓϥϯ • Free(ফඅ) • Standard(ઐ༻) • SLAɺଳҬաՄೳ(ैྔ՝ۚ)
͓͢͢Ίͷߏ ࠷ۙΑ͘͏ߏ "[VSF'SPOU%PPS 4UBUJD8FC"QQT "[VSF'SPOU%PPS "[VSF%BUBCBTF GPS1PTUHSF42- "[VSF$POUBJOFS"QQT "1* 2VFVF8PSLFS
8FC)PPL "[VSF4UPSBHF2VFVF
·ͱΊ • PHPͷ࣮ߦڥ Azure App Service on Linux Web Apps
for Containers Azure Container Instances Azure Container Apps • ؔ࿈αʔϏε
͓͠·͍