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
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Kohei Ota
August 21, 2018
Technology
2
710
インフラエンジニアが触る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.3k
The Cloud Native Chronicles: 10 Years of Community Growth Inside and Outside Japan
inductor
0
160
Cracking the KubeCon CfP
inductor
2
760
KubeCon Recap -Platform migration at Scale-
inductor
1
1k
コンテナビルド最新事情 2022年度版 / Container Build 2022
inductor
3
560
データベースとストレージのレプリケーション入門 / Intro-of-database-and-storage-replication
inductor
29
6.5k
KubeConのケーススタディから振り返る、Platform for Platforms のあり方と その実践 / Lessons from KubeCon case studies: Platform for Platforms and its practice
inductor
3
930
オンラインの技術カンファレンスを安定稼働させるための取り組み / SRE activity for online conference platform
inductor
1
1.3k
Kubernetesネットワーキング初級者脱出ガイド / Kubernetes networking beginner's guide
inductor
22
7k
Other Decks in Technology
See All in Technology
Ruby版 JSXのRuxが気になる
sansantech
PRO
0
160
Introduction to Bill One Development Engineer
sansan33
PRO
0
360
登壇駆動学習のすすめ — CfPのネタの見つけ方と書くときに意識していること
bicstone
3
120
Agent Skils
dip_tech
PRO
0
120
Red Hat OpenStack Services on OpenShift
tamemiya
0
120
OpenShiftでllm-dを動かそう!
jpishikawa
0
130
AIエージェントを開発しよう!-AgentCore活用の勘所-
yukiogawa
0
170
ファインディの横断SREがTakumi byGMOと取り組む、セキュリティと開発スピードの両立
rvirus0817
1
1.4k
レガシー共有バッチ基盤への挑戦 - SREドリブンなリアーキテクチャリングの取り組み
tatsukoni
0
220
Data Hubグループ 紹介資料
sansan33
PRO
0
2.7k
30万人の同時アクセスに耐えたい!新サービスの盤石なリリースを支える負荷試験 / SRE Kaigi 2026
genda
4
1.3k
20260208_第66回 コンピュータビジョン勉強会
keiichiito1978
0
170
Featured
See All Featured
Game over? The fight for quality and originality in the time of robots
wayneb77
1
120
More Than Pixels: Becoming A User Experience Designer
marktimemedia
3
320
YesSQL, Process and Tooling at Scale
rocio
174
15k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
2.7k
The Pragmatic Product Professional
lauravandoore
37
7.1k
The State of eCommerce SEO: How to Win in Today's Products SERPs - #SEOweek
aleyda
2
9.5k
Building Flexible Design Systems
yeseniaperezcruz
330
40k
The Cost Of JavaScript in 2023
addyosmani
55
9.5k
Leveraging Curiosity to Care for An Aging Population
cassininazir
1
160
What does AI have to do with Human Rights?
axbom
PRO
0
2k
Building a Modern Day E-commerce SEO Strategy
aleyda
45
8.7k
Rebuilding a faster, lazier Slack
samanthasiow
85
9.4k
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ʹࢥ͏ٙ • ςετͱ͔ΈΜͳͲ͏ͬͯΜͩΖ͏ʁ • αʔόʔϨεͳߏͰ͖ͬͪΓӡ༻Ͱ͖͍ͯΔਓͨͪͷ ݟ͕͠Γ͍ͨɾɾɾʂʂʂ • ڵຯ͋Δਓ͍Εɺͥͻ࠙ձͰ͠·͠ΐ͏ʼʻ
͓ΘΓ