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
インフラエンジニアが触るJavaScriptのはなし
Search
Kohei Ota
August 21, 2018
Technology
2
690
インフラエンジニアが触るJavaScriptのはなし
Kohei Ota
August 21, 2018
Tweet
Share
More Decks by Kohei Ota
See All by Kohei Ota
CloudNative Meets WebAssembly: Exploring Wasm's Potential to Replace Containers
inductor
4
3.1k
The Cloud Native Chronicles: 10 Years of Community Growth Inside and Outside Japan
inductor
0
130
Cracking the KubeCon CfP
inductor
2
640
KubeCon Recap -Platform migration at Scale-
inductor
1
1k
コンテナビルド最新事情 2022年度版 / Container Build 2022
inductor
3
540
データベースとストレージのレプリケーション入門 / Intro-of-database-and-storage-replication
inductor
29
6.4k
KubeConのケーススタディから振り返る、Platform for Platforms のあり方と その実践 / Lessons from KubeCon case studies: Platform for Platforms and its practice
inductor
3
880
オンラインの技術カンファレンスを安定稼働させるための取り組み / SRE activity for online conference platform
inductor
1
1.3k
Kubernetesネットワーキング初級者脱出ガイド / Kubernetes networking beginner's guide
inductor
22
6.5k
Other Decks in Technology
See All in Technology
Automating Web Accessibility Testing with AI Agents
maminami373
0
1.2k
初めてAWSを使うときのセキュリティ覚書〜初心者支部編〜
cmusudakeisuke
1
230
現場で効くClaude Code ─ 最新動向と企業導入
takaakikakei
1
220
「何となくテストする」を卒業するためにプロダクトが動く仕組みを理解しよう
kawabeaver
0
380
AWSで推進するデータマネジメント
kawanago
1
1.3k
dbt開発 with Claude Codeのためのガードレール設計
10xinc
2
1.1k
【実演版】カンファレンス登壇者・スタッフにこそ知ってほしいマイクの使い方 / 大吉祥寺.pm 2025
arthur1
1
760
自作JSエンジンに推しプロポーザルを実装したい!
sajikix
1
170
CDK CLIで使ってたあの機能、CDK Toolkit Libraryではどうやるの?
smt7174
4
120
バッチ処理で悩むバックエンドエンジニアに捧げるAWS Glue入門
diggymo
3
190
下手な強制、ダメ!絶対! 「ガードレール」を「檻」にさせない"ガバナンス"の取り方とは?
tsukaman
2
420
S3アクセス制御の設計ポイント
tommy0124
3
190
Featured
See All Featured
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
53
2.9k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
252
21k
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
111
20k
Making Projects Easy
brettharned
117
6.4k
A designer walks into a library…
pauljervisheath
207
24k
Scaling GitHub
holman
463
140k
Documentation Writing (for coders)
carmenintech
74
5k
Embracing the Ebb and Flow
colly
87
4.8k
The Cost Of JavaScript in 2023
addyosmani
53
8.9k
Gamification - CAS2011
davidbonilla
81
5.4k
Building an army of robots
kneath
306
46k
Transcript
ΠϯϑϥΤϯδχΞ͕৮Δ JavaScriptͷͳ͠ Presented by @_inductor_ We are JavaScripters!
Agenda • ࣗݾհ • Πϯϑϥ x JavaScript? • Ͳ͏ͬͯΔ͔
Who am I? • inductor(@_inductor_) • Cloud(AWS)/DevOps Engineer @ Start
Today Technologies, Inc. • Admin @ Πϯϑϥษڧձ • DevOps / Containeriation / CI/CD Pipelines
ϨΠϠ͕ͪ͘Ͷʁ
JavaScript x Infrastructure? ͦͦԿʹ͏ͷʁ
Lambda@Edge
What is Lambda@Edge? • LambdaΛCloudFrontͷॲཧذʹ͑ΔαʔϏε • CloudFront = AWSͷCDNαʔϏε •
Lambda = AWSͷFaaS
Why CloudFront? • CloudFrontΛ͏ͱόοΫΤϯυͷΞΫηεෛՙ͕େ෯ʹԼ͕Δ • Τοδϩέʔγϣϯ͕ੈք֤ʹ͋ΔͨΊɺҬʹΑΔϨΠςϯγ ͷҧ͍Λ͑Δ͜ͱ͕Ͱ͖Δʢதࠃ͈́ʣ • σϓϩΠ͔ͯ͠ΒશϦʔδϣϯө͢ΔͷΉͪΌ͍ •
HTTP/2(TLS) Readyɺઃఆ͕؆୯ • ূ໌ॻͷऔಘACM࿈ܞͰ؆୯ & ແྉ • EC2ɺEBɺS3ɺECSͳͲͷଞAWSαʔϏεͱ͙͢ʹ࿈ܞͰ͖Δ
͕͜͜Πέͯͳ͍Αʂ ࠓ·ͰͷCloudFront • ͱʹ͔͘ࡉ͔͍ઃఆ͕Γʹ͍͘ʂ • ҰൠతͳWebαʔόʔʹ͋Δઃఆ߲͕ͳ͍(Firebaseͱൺͯऑ͍) • ΩϟογϡɾHTTPϨεϙϯεϔομͷࡉ͔ͳઃఆͱ͔ • (WAFແ͠ͷ)IPΞυϨε੍ݶɺUser-AgentΛͬͨৼΓ͚ͳͲ͕Ͱ͖ͳ͍
• Botͱ͔ɺͩ͘Βͳ͍ϦΫΤετΛϦʔνͤͨ͘͞ͳ͍ • SPAΛαʔόʔϨεʹ࡞Γ͍ͨͱ͖ʹΫϩʔϥʔͱͷ૬ੑ͕ѱ͍ • SSRΛೖΕΔ͜ͱݕ౼த(ͰҠߦ͢Δίετͱεέδϡʔϧ͕ɾɾɾ)
ͦ͜ͰLambda@Edge
Lambda@EdgeͰ ࣮ݱͰ͖ͨ͜ͱ • ΫϩʔϥʔʹΠϯσοΫε͍ͤͨ͞ϖʔδͷΞΫηε͕ݕࡧΤϯδϯ ͷBot͔Β͋ͬͨ߹ɺLambda@Edge͔ΒStaticͳHTMLΛฦ٫ • SEOతʹదͳίϯςϯπΛURL͝ͱʹฦͤΔΑ͏ʹͳͬͨ • Ϣʔβʔ͔ΒͷϦΫΤετʹରͯ͠HSTSX-Content-Type-Optionsͳ ͲͷηΩϡϦςΟपΓͷHTTPϔομͳͲΛS3→CFͷؒͰՃͯ͠ฦ٫
• HSTS preloadͳͲʹରԠ͠ɺಡΈࠐΈʹগͳ͔Β͍͍ͣӨڹΛ ༩͑ΒΕΔʢͱ͍͍ͳʣ • Content-Security-Policyޙग़͠ͰೖΕͨͷͰͪΐͬͱͭΒ͍
ಋೖํ๏ͳͲͷࡉ͔͍ https://tech.starttoday-tech.com/ entry/lambda-edge ʹࡌͬͯ·͢
Lambda@Edgeͷ ͍͍ͱ͜ΖɺΫιͳͱ͜Ζ • ͍͍ͱ͜Ζ • ϧʔςΟϯάָ͕ʹ࣮ݱͰ͖Δ • ͍ΘΏΔҰൠతͳURIͷύλʔϯϚονͳॻ͖ํͰͰ͖ΔͷͰָ • ΫϥΠΞϯτͷΤοδϩέʔγϣϯͰ࣮ߦ͞ΕΔͷͰ݁ߏ͍
• Ϋιͳͱ͜Ζ • Lamdaͷϩά͕Τοδϩέʔγϣϯ͝ͱʹ֤ϦʔδϣϯʹࢄΒͬͯ͠·͏ • όʔδϣϯΞοϓͷै͕ී௨ͷLambdaΑΓগ͍͔͠ʁ • ͦͦJavaScriptཧղͯ͠ΔΠϯϑϥΤϯδχΞͲΕ͚͍ͩΔͷ
Ϋϥυ͕ͨΓલͳ͔࣌ͩΒͦ͜ɺ ΠϯϑϥͰJavaScriptΛ͍͖ͬͯ· ͠ΐ͏ʂ
ΞϓϦέʔγϣϯ࣮ߦڥ ͱͯ͠ͷFaaSʹࢥ͏ٙ • ςετͱ͔ΈΜͳͲ͏ͬͯΜͩΖ͏ʁ • αʔόʔϨεͳߏͰ͖ͬͪΓӡ༻Ͱ͖͍ͯΔਓͨͪͷ ݟ͕͠Γ͍ͨɾɾɾʂʂʂ • ڵຯ͋Δਓ͍Εɺͥͻ࠙ձͰ͠·͠ΐ͏ʼʻ
͓ΘΓ