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
870
オンラインの技術カンファレンスを安定稼働させるための取り組み / 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
複数サービスを支えるマルチテナント型Batch MLプラットフォーム
lycorptech_jp
PRO
0
220
「魔法少女まどか☆マギカ Magia Exedra」での負荷試験の実践と学び
gree_tech
PRO
0
620
Kubernetes における cgroup v2 でのOut-Of-Memory 問題の解決
pfn
PRO
0
460
La gouvernance territoriale des données grâce à la plateforme Terreze
bluehats
0
120
BPaaSにおける人と協働する前提のAIエージェント-AWS登壇資料
kentarofujii
0
120
フィンテック養成勉強会#56
finengine
0
130
自作JSエンジンに推しプロポーザルを実装したい!
sajikix
1
160
Bye-Bye Query Spaghetti: Write Queries You'll Actually Understand Using Pipelined SQL Syntax
tobiaslampertlotum
0
150
研究開発と製品開発、両利きのロボティクス
youtalk
1
480
Platform開発が先行する Platform Engineeringの違和感
kintotechdev
3
480
[RSJ25] Feasible RAG: Hierarchical Multimodal Retrieval with Feasibility-Aware Embodied Memory for Mobile Manipulation
keio_smilab
PRO
0
120
[ JAWS-UG 東京 CommunityBuilders Night #2 ]SlackとAmazon Q Developerで 運用効率化を模索する
sh_fk2
1
230
Featured
See All Featured
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
29
2.8k
Visualization
eitanlees
148
16k
Build your cross-platform service in a week with App Engine
jlugia
231
18k
How STYLIGHT went responsive
nonsquared
100
5.8k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
229
22k
The Pragmatic Product Professional
lauravandoore
36
6.9k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
187
54k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
48
9.7k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
46
7.6k
Producing Creativity
orderedlist
PRO
347
40k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
667
120k
Learning to Love Humans: Emotional Interface Design
aarron
273
40k
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ʹࢥ͏ٙ • ςετͱ͔ΈΜͳͲ͏ͬͯΜͩΖ͏ʁ • αʔόʔϨεͳߏͰ͖ͬͪΓӡ༻Ͱ͖͍ͯΔਓͨͪͷ ݟ͕͠Γ͍ͨɾɾɾʂʂʂ • ڵຯ͋Δਓ͍Εɺͥͻ࠙ձͰ͠·͠ΐ͏ʼʻ
͓ΘΓ