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
660
インフラエンジニアが触る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
3
2.2k
The Cloud Native Chronicles: 10 Years of Community Growth Inside and Outside Japan
inductor
0
120
Cracking the KubeCon CfP
inductor
2
540
KubeCon Recap -Platform migration at Scale-
inductor
1
970
コンテナビルド最新事情 2022年度版 / Container Build 2022
inductor
3
480
データベースとストレージのレプリケーション入門 / Intro-of-database-and-storage-replication
inductor
26
6.2k
KubeConのケーススタディから振り返る、Platform for Platforms のあり方と その実践 / Lessons from KubeCon case studies: Platform for Platforms and its practice
inductor
3
800
オンラインの技術カンファレンスを安定稼働させるための取り組み / SRE activity for online conference platform
inductor
1
1.2k
Kubernetesネットワーキング初級者脱出ガイド / Kubernetes networking beginner's guide
inductor
19
6.1k
Other Decks in Technology
See All in Technology
Iceberg Meetup Japan #1 : Iceberg and Databricks
databricksjapan
0
350
コンピュータビジョンの社会実装について考えていたらゲームを作っていた話
takmin
1
600
Two Blades, One Journey: Engineering While Managing
ohbarye
4
1.9k
Cracking the Coding Interview 6th Edition
gdplabs
14
28k
内製化を加速させるlaC活用術
nrinetcom
PRO
2
140
AWS Well-Architected Frameworkで学ぶAmazon ECSのセキュリティ対策
umekou
2
140
EDRの検知の仕組みと検知回避について
chayakonanaika
11
4.8k
Potential EM 制度を始めた理由、そして2年後にやめた理由 - EMConf JP 2025
hoyo
2
2.6k
役員・マネージャー・著者・エンジニアそれぞれの立場から見たAWS認定資格
nrinetcom
PRO
3
5.9k
Change Managerを活用して本番環境へのセキュアなGUIアクセスを統制する / Control Secure GUI Access to the Production Environment with Change Manager
yuj1osm
0
100
"TEAM"を導入したら最高のエンジニア"Team"を実現できた / Deploying "TEAM" and Building the Best Engineering "Team"
yuj1osm
1
140
入門 PEAK Threat Hunting @SECCON
odorusatoshi
0
150
Featured
See All Featured
The Invisible Side of Design
smashingmag
299
50k
Visualization
eitanlees
146
15k
Raft: Consensus for Rubyists
vanstee
137
6.8k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
45
9.4k
Build The Right Thing And Hit Your Dates
maggiecrowley
34
2.5k
Java REST API Framework Comparison - PWX 2021
mraible
29
8.4k
Building a Modern Day E-commerce SEO Strategy
aleyda
38
7.1k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
280
13k
Reflections from 52 weeks, 52 projects
jeffersonlam
348
20k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
248
1.3M
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
40
2k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
100
18k
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ʹࢥ͏ٙ • ςετͱ͔ΈΜͳͲ͏ͬͯΜͩΖ͏ʁ • αʔόʔϨεͳߏͰ͖ͬͪΓӡ༻Ͱ͖͍ͯΔਓͨͪͷ ݟ͕͠Γ͍ͨɾɾɾʂʂʂ • ڵຯ͋Δਓ͍Εɺͥͻ࠙ձͰ͠·͠ΐ͏ʼʻ
͓ΘΓ