SlideShare a Scribd company logo
1 of 35
Download to read offline
JAMstack
your Angular
applications with
Scully
Steffi Keran Rani
Lead Engineer @
With Angular since 2018
SteffiKeranJ
steffi-keran-rani-j
@steffikeranj
2
Hi there!
JAMstack SSG Scully Demo Summary
Agenda
3
What is JAMstack?
4
Present Day Scenario
5
Website Server Caching server
Caching server
Database
Program
CDN
Cloud Provisioning Cache Invalidation
Versioning
Finger printing
Monitoring
Security updates
Release engineering
Replication
Migration
Present Day Scenario - Concerns
6
1.Site Speed
2.Reliability
3.Security
Is there a solution to this?
7
Solutions
8
1.Decouple building from hosting
2.Decouple frontend from backend
3.APIs rather than databases
4.Generate the markup and decorate it with JavaScript
JavaScript, API and Markup
9
Website
CDN
“Generate Markups, decorate with JavaScript and consume APIs”
- Matt Biilmann
API
10
“Deliver safe, fast, and dynamic sites without relying on web servers!”
https://jamstack.org
JAMstack values
11
1.Pre-render all views
2.Cache maximum API calls
3.Supply them from CDN
A JAMstack site is a
dynamically generated static site!
12
13
Static Site Generators (SSG)
▪ SSG apply data and content to templates, and
generate a view of a page which can be served to the
visitors of a site.
▪ Instead of waiting until a page is requested and
then generating its view on demand each time, a
SSG does this in advance so that the view is ready
to serve ahead of time, for every possible view of a
site at build time.
Image: netlify.com
Static Site Generators (SSG)
14
Oh c’mon!
But does Angular have
a Static Site
Generator?
15
16
Yes!!!
Created by
17
1. First Static Site Generator for Angular
2. ~ 0 effort in configuration
3. Support for Markdown
4. Automatic route discovery:
• Static routes (using guess-parser)
• Dynamic routes (Scully/ custom plugins)
5. Support for plugins
Scully – An Overview
Caching
TransferState – for making calls during
the build, caching and shipping them to
the CDN along with HTML/JS/CSS
Pre-rendering
Plugins play a major role in
• Route Discovery
• Pre-rendering
CDN
Puts your site closer to the user, further
increasing the performance
18
Route Discovery in
19
/
/home
/crew
/dragons
Route Discovery in Scully – Static Routes
20
1. Uses Angular routing config
2. guess parser library extracts
the routes
Examples:
https://github.com/guess-js/guess
21
Route Discovery in Scully – Dynamic Routes
1. Uses Scully’s route config
2. Auto-extracted / expanded
using built-in & custom plugins
Examples:
https://scully.io/docs/Reference/plugins/overview/
/crew/123
/crew/456
/crew/789
npm run scully -- --scanRoutes
22
/assets/scully-routes.json
Scully in action
CLI Scully Puppeteer Project
1. ng build –prod
2. npx scully
DONE
3. Generate list of routes
4. Starts server for prod build
5. Starts puppeteer instances 6. Load specific route
/crew/1 7. App loads
1st navigation
done
8. Zone.js stable
9. AngularReady
10. Serialize and save html files
to /crew/1/index.html
… For every route
Scully – The Process
24
1. Traverse, read the source of the application to find all routes.
2. Merge in extraRoutes, where we specify routes we know, but can't automatically traverse
3. We now have a list of unhandled routes
4. Enrich/expand the found unhandled routes routes with router-plugins.
5. Process/change the resulting handled routes list with routeProcess plugins.
6. Write out the scully.routes.json files.
7. Trigger routeDiscoveryDone with results from 5
8. Trigger the render plugins for each route
9.Trigger allDone plugins
25
Scully in action
Response page crew/1/index.html
Request page crew/1
Browser Static Server
Angular Static Site Development
26
Create an
Angular
project
Add Scully to
your Angular
project
Inject Scully
Route Service
for Dynamic
Routes
Host
SETUP
PREREQUISITES:
1. Angular versions: v9.x.x or higher
2. Node.js: 12 or higher
3. Route-enabled
27
INSTALLATION
LOCAL DEVELOPMENT
PRODUCTION
- Configuration
28
ScullyLibModule
Building for Production
29
ng build –prod && npm run scully -- --scanRoutes
1 2
Hosting Options
30
Azure Static Web Apps
Hosting on Firebase
31
https://angular-scully-b1ab1.web.app/
Performance Stats – Comparison
32
Courtesy: Lighthouse reports
Notes
33
Scully is a very young tool, which is evolving at a phenomenal speed.
The best part is the plugin ecosystem that Scully provides.
Generating thousands of pages in each build will be like going overboard. In this case, try considering
Universal.
34
REFERENCE
 https://scully.io
 https://github.com/scullyio/scully
 https://jamstack.org
 https://www.ample.co/blog/from-static-to-jamstack
 https://samvloeberghs.be
 https://www.netlify.com/blog
 https://www.youtube.com/watch?v=Sh37rIUL-d4
 https://academind.com/tutorials/scully-introduction
 https://docs.microsoft.com/en-us/azure/static-web-
apps
 https://www.youtube.com/watch?v=XJ1WzPKPSQo
Thank you !

More Related Content

What's hot

KUBEBOOT - SPRING BOOT DEPLOYMENT ON KUBERNETES HAS NEVER BEEN SO EASY
KUBEBOOT - SPRING BOOT DEPLOYMENT ON KUBERNETES HAS NEVER BEEN SO EASYKUBEBOOT - SPRING BOOT DEPLOYMENT ON KUBERNETES HAS NEVER BEEN SO EASY
KUBEBOOT - SPRING BOOT DEPLOYMENT ON KUBERNETES HAS NEVER BEEN SO EASYRed Hat Developers
 
Infrastructure = Code
Infrastructure = CodeInfrastructure = Code
Infrastructure = CodeGeorg Sorst
 
Load Balancing in the Cloud using Nginx & Kubernetes
Load Balancing in the Cloud using Nginx & KubernetesLoad Balancing in the Cloud using Nginx & Kubernetes
Load Balancing in the Cloud using Nginx & KubernetesLee Calcote
 
Jazoon12 355 aleksandra_gavrilovska-1
Jazoon12 355 aleksandra_gavrilovska-1Jazoon12 355 aleksandra_gavrilovska-1
Jazoon12 355 aleksandra_gavrilovska-1Netcetera
 
Puppet in the Pipeline
Puppet in the PipelinePuppet in the Pipeline
Puppet in the PipelinePuppet
 
Puppet Camp London Fall 2015 - Service Discovery and Puppet
Puppet Camp London Fall 2015 - Service Discovery and PuppetPuppet Camp London Fall 2015 - Service Discovery and Puppet
Puppet Camp London Fall 2015 - Service Discovery and PuppetMarc Cluet
 
Deploy a compute instance with a remote startup script
Deploy a compute instance with a remote startup scriptDeploy a compute instance with a remote startup script
Deploy a compute instance with a remote startup scriptMahmmoud Mahdi
 
Google cloud essential skills challenge lab
Google cloud essential skills challenge labGoogle cloud essential skills challenge lab
Google cloud essential skills challenge labMahmmoud Mahdi
 
ONAP MultiCloud/K8s Casablanca
ONAP MultiCloud/K8s CasablancaONAP MultiCloud/K8s Casablanca
ONAP MultiCloud/K8s CasablancaVictor Morales
 
Modern Infrastructure from Scratch with Puppet
Modern Infrastructure from Scratch with PuppetModern Infrastructure from Scratch with Puppet
Modern Infrastructure from Scratch with PuppetPuppet
 
Puppet Camp Paris 2015: Continuous Integration of Puppet Code (Intermediate)
Puppet Camp Paris 2015: Continuous Integration of Puppet Code (Intermediate) Puppet Camp Paris 2015: Continuous Integration of Puppet Code (Intermediate)
Puppet Camp Paris 2015: Continuous Integration of Puppet Code (Intermediate) Puppet
 
Control your deployments with Capistrano
Control your deployments with CapistranoControl your deployments with Capistrano
Control your deployments with CapistranoRamazan K
 
Support of containerized workloads in ONAP
Support of containerized workloads in ONAPSupport of containerized workloads in ONAP
Support of containerized workloads in ONAPVictor Morales
 
Setting up and open fidy dev environment
Setting up and open fidy dev environmentSetting up and open fidy dev environment
Setting up and open fidy dev environmentianibbo
 

What's hot (20)

KUBEBOOT - SPRING BOOT DEPLOYMENT ON KUBERNETES HAS NEVER BEEN SO EASY
KUBEBOOT - SPRING BOOT DEPLOYMENT ON KUBERNETES HAS NEVER BEEN SO EASYKUBEBOOT - SPRING BOOT DEPLOYMENT ON KUBERNETES HAS NEVER BEEN SO EASY
KUBEBOOT - SPRING BOOT DEPLOYMENT ON KUBERNETES HAS NEVER BEEN SO EASY
 
Devopstore
DevopstoreDevopstore
Devopstore
 
Infrastructure = Code
Infrastructure = CodeInfrastructure = Code
Infrastructure = Code
 
Load Balancing in the Cloud using Nginx & Kubernetes
Load Balancing in the Cloud using Nginx & KubernetesLoad Balancing in the Cloud using Nginx & Kubernetes
Load Balancing in the Cloud using Nginx & Kubernetes
 
Jazoon12 355 aleksandra_gavrilovska-1
Jazoon12 355 aleksandra_gavrilovska-1Jazoon12 355 aleksandra_gavrilovska-1
Jazoon12 355 aleksandra_gavrilovska-1
 
Puppet in the Pipeline
Puppet in the PipelinePuppet in the Pipeline
Puppet in the Pipeline
 
Puppet Camp London Fall 2015 - Service Discovery and Puppet
Puppet Camp London Fall 2015 - Service Discovery and PuppetPuppet Camp London Fall 2015 - Service Discovery and Puppet
Puppet Camp London Fall 2015 - Service Discovery and Puppet
 
Deploy a compute instance with a remote startup script
Deploy a compute instance with a remote startup scriptDeploy a compute instance with a remote startup script
Deploy a compute instance with a remote startup script
 
Google cloud essential skills challenge lab
Google cloud essential skills challenge labGoogle cloud essential skills challenge lab
Google cloud essential skills challenge lab
 
Sync data sfdc_heroku_aws
Sync data sfdc_heroku_awsSync data sfdc_heroku_aws
Sync data sfdc_heroku_aws
 
ONAP MultiCloud/K8s Casablanca
ONAP MultiCloud/K8s CasablancaONAP MultiCloud/K8s Casablanca
ONAP MultiCloud/K8s Casablanca
 
Azure cli2.0
Azure cli2.0Azure cli2.0
Azure cli2.0
 
Modern Infrastructure from Scratch with Puppet
Modern Infrastructure from Scratch with PuppetModern Infrastructure from Scratch with Puppet
Modern Infrastructure from Scratch with Puppet
 
Puppet Camp Paris 2015: Continuous Integration of Puppet Code (Intermediate)
Puppet Camp Paris 2015: Continuous Integration of Puppet Code (Intermediate) Puppet Camp Paris 2015: Continuous Integration of Puppet Code (Intermediate)
Puppet Camp Paris 2015: Continuous Integration of Puppet Code (Intermediate)
 
Salt stack introduction
Salt stack introductionSalt stack introduction
Salt stack introduction
 
DockerCoreNet
DockerCoreNetDockerCoreNet
DockerCoreNet
 
Control your deployments with Capistrano
Control your deployments with CapistranoControl your deployments with Capistrano
Control your deployments with Capistrano
 
Capistrano 3 Deployment
Capistrano 3 DeploymentCapistrano 3 Deployment
Capistrano 3 Deployment
 
Support of containerized workloads in ONAP
Support of containerized workloads in ONAPSupport of containerized workloads in ONAP
Support of containerized workloads in ONAP
 
Setting up and open fidy dev environment
Setting up and open fidy dev environmentSetting up and open fidy dev environment
Setting up and open fidy dev environment
 

Similar to JAMstack your Angular Applications with Scully

Introduction to node js - From "hello world" to deploying on azure
Introduction to node js - From "hello world" to deploying on azureIntroduction to node js - From "hello world" to deploying on azure
Introduction to node js - From "hello world" to deploying on azureColin Mackay
 
Getting Started with Apache Spark on Kubernetes
Getting Started with Apache Spark on KubernetesGetting Started with Apache Spark on Kubernetes
Getting Started with Apache Spark on KubernetesDatabricks
 
OWASP ZAP Workshop for QA Testers
OWASP ZAP Workshop for QA TestersOWASP ZAP Workshop for QA Testers
OWASP ZAP Workshop for QA TestersJavan Rasokat
 
7-Step Recipe For Continuous Integration Using OpenStack - Part 2
7-Step Recipe For Continuous Integration Using OpenStack - Part 27-Step Recipe For Continuous Integration Using OpenStack - Part 2
7-Step Recipe For Continuous Integration Using OpenStack - Part 2Platform9
 
20171122 aws usergrp_coretech-spn-cicd-aws-v01
20171122 aws usergrp_coretech-spn-cicd-aws-v0120171122 aws usergrp_coretech-spn-cicd-aws-v01
20171122 aws usergrp_coretech-spn-cicd-aws-v01Scott Miao
 
Continuos integration for iOS projects
Continuos integration for iOS projectsContinuos integration for iOS projects
Continuos integration for iOS projectsAleksandra Gavrilovska
 
Boost your productivity with Scala tooling!
Boost your productivity  with Scala tooling!Boost your productivity  with Scala tooling!
Boost your productivity with Scala tooling!MeriamLachkar1
 
Java @ Cloud - Setor Público SP
Java @ Cloud - Setor Público SPJava @ Cloud - Setor Público SP
Java @ Cloud - Setor Público SPIlan Salviano
 
The next step from Microsoft - Vnext (Srdjan Poznic)
The next step from Microsoft - Vnext (Srdjan Poznic)The next step from Microsoft - Vnext (Srdjan Poznic)
The next step from Microsoft - Vnext (Srdjan Poznic)Geekstone
 
Dynamic Languages & Web Frameworks in GlassFish
Dynamic Languages & Web Frameworks in GlassFishDynamic Languages & Web Frameworks in GlassFish
Dynamic Languages & Web Frameworks in GlassFishIndicThreads
 
Clocker - How to Train your Docker Cloud
Clocker - How to Train your Docker CloudClocker - How to Train your Docker Cloud
Clocker - How to Train your Docker CloudAndrew Kennedy
 
Meetup 2022 - APIs with Quarkus.pdf
Meetup 2022 - APIs with Quarkus.pdfMeetup 2022 - APIs with Quarkus.pdf
Meetup 2022 - APIs with Quarkus.pdfLuca Mattia Ferrari
 
1st Chinaonrails Open Course 高级战略
1st Chinaonrails Open Course 高级战略1st Chinaonrails Open Course 高级战略
1st Chinaonrails Open Course 高级战略Jesse Cai
 
Building websites with Node.ACS
Building websites with Node.ACSBuilding websites with Node.ACS
Building websites with Node.ACSralcocer
 
Building websites with Node.ACS
Building websites with Node.ACSBuilding websites with Node.ACS
Building websites with Node.ACSRicardo Alcocer
 
Dynamic Languages Web Frameworks Indicthreads 2009
Dynamic Languages Web Frameworks Indicthreads 2009Dynamic Languages Web Frameworks Indicthreads 2009
Dynamic Languages Web Frameworks Indicthreads 2009Arun Gupta
 
Clocker: Managing Container Networking and Placement
Clocker: Managing Container Networking and PlacementClocker: Managing Container Networking and Placement
Clocker: Managing Container Networking and PlacementDocker, Inc.
 
Clocker - The Docker Cloud Maker
Clocker - The Docker Cloud MakerClocker - The Docker Cloud Maker
Clocker - The Docker Cloud MakerAndrew Kennedy
 

Similar to JAMstack your Angular Applications with Scully (20)

Introduction to node js - From "hello world" to deploying on azure
Introduction to node js - From "hello world" to deploying on azureIntroduction to node js - From "hello world" to deploying on azure
Introduction to node js - From "hello world" to deploying on azure
 
Getting Started with Apache Spark on Kubernetes
Getting Started with Apache Spark on KubernetesGetting Started with Apache Spark on Kubernetes
Getting Started with Apache Spark on Kubernetes
 
OWASP ZAP Workshop for QA Testers
OWASP ZAP Workshop for QA TestersOWASP ZAP Workshop for QA Testers
OWASP ZAP Workshop for QA Testers
 
7-Step Recipe For Continuous Integration Using OpenStack - Part 2
7-Step Recipe For Continuous Integration Using OpenStack - Part 27-Step Recipe For Continuous Integration Using OpenStack - Part 2
7-Step Recipe For Continuous Integration Using OpenStack - Part 2
 
20171122 aws usergrp_coretech-spn-cicd-aws-v01
20171122 aws usergrp_coretech-spn-cicd-aws-v0120171122 aws usergrp_coretech-spn-cicd-aws-v01
20171122 aws usergrp_coretech-spn-cicd-aws-v01
 
Continuos integration for iOS projects
Continuos integration for iOS projectsContinuos integration for iOS projects
Continuos integration for iOS projects
 
Boost your productivity with Scala tooling!
Boost your productivity  with Scala tooling!Boost your productivity  with Scala tooling!
Boost your productivity with Scala tooling!
 
Java @ Cloud - Setor Público SP
Java @ Cloud - Setor Público SPJava @ Cloud - Setor Público SP
Java @ Cloud - Setor Público SP
 
The next step from Microsoft - Vnext (Srdjan Poznic)
The next step from Microsoft - Vnext (Srdjan Poznic)The next step from Microsoft - Vnext (Srdjan Poznic)
The next step from Microsoft - Vnext (Srdjan Poznic)
 
Dynamic Languages & Web Frameworks in GlassFish
Dynamic Languages & Web Frameworks in GlassFishDynamic Languages & Web Frameworks in GlassFish
Dynamic Languages & Web Frameworks in GlassFish
 
Clocker - How to Train your Docker Cloud
Clocker - How to Train your Docker CloudClocker - How to Train your Docker Cloud
Clocker - How to Train your Docker Cloud
 
Meetup 2022 - APIs with Quarkus.pdf
Meetup 2022 - APIs with Quarkus.pdfMeetup 2022 - APIs with Quarkus.pdf
Meetup 2022 - APIs with Quarkus.pdf
 
1st Chinaonrails Open Course 高级战略
1st Chinaonrails Open Course 高级战略1st Chinaonrails Open Course 高级战略
1st Chinaonrails Open Course 高级战略
 
Building websites with Node.ACS
Building websites with Node.ACSBuilding websites with Node.ACS
Building websites with Node.ACS
 
Building websites with Node.ACS
Building websites with Node.ACSBuilding websites with Node.ACS
Building websites with Node.ACS
 
Dynamic Languages Web Frameworks Indicthreads 2009
Dynamic Languages Web Frameworks Indicthreads 2009Dynamic Languages Web Frameworks Indicthreads 2009
Dynamic Languages Web Frameworks Indicthreads 2009
 
Clocker: Managing Container Networking and Placement
Clocker: Managing Container Networking and PlacementClocker: Managing Container Networking and Placement
Clocker: Managing Container Networking and Placement
 
Angular 2.0
Angular  2.0Angular  2.0
Angular 2.0
 
Npm scripts
Npm scriptsNpm scripts
Npm scripts
 
Clocker - The Docker Cloud Maker
Clocker - The Docker Cloud MakerClocker - The Docker Cloud Maker
Clocker - The Docker Cloud Maker
 

Recently uploaded

Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...stazi3110
 
Engage Usergroup 2024 - The Good The Bad_The Ugly
Engage Usergroup 2024 - The Good The Bad_The UglyEngage Usergroup 2024 - The Good The Bad_The Ugly
Engage Usergroup 2024 - The Good The Bad_The UglyFrank van der Linden
 
What is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWhat is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWave PLM
 
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...Christina Lin
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...MyIntelliSource, Inc.
 
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdfThe Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdfkalichargn70th171
 
Cloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackCloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackVICTOR MAESTRE RAMIREZ
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfkalichargn70th171
 
Project Based Learning (A.I).pptx detail explanation
Project Based Learning (A.I).pptx detail explanationProject Based Learning (A.I).pptx detail explanation
Project Based Learning (A.I).pptx detail explanationkaushalgiri8080
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comFatema Valibhai
 
DNT_Corporate presentation know about us
DNT_Corporate presentation know about usDNT_Corporate presentation know about us
DNT_Corporate presentation know about usDynamic Netsoft
 
Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)OPEN KNOWLEDGE GmbH
 
Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...OnePlan Solutions
 
chapter--4-software-project-planning.ppt
chapter--4-software-project-planning.pptchapter--4-software-project-planning.ppt
chapter--4-software-project-planning.pptkotipi9215
 
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxKnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxTier1 app
 
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...gurkirankumar98700
 
Unit 1.1 Excite Part 1, class 9, cbse...
Unit 1.1 Excite Part 1, class 9, cbse...Unit 1.1 Excite Part 1, class 9, cbse...
Unit 1.1 Excite Part 1, class 9, cbse...aditisharan08
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdfWave PLM
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...MyIntelliSource, Inc.
 

Recently uploaded (20)

Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
 
Engage Usergroup 2024 - The Good The Bad_The Ugly
Engage Usergroup 2024 - The Good The Bad_The UglyEngage Usergroup 2024 - The Good The Bad_The Ugly
Engage Usergroup 2024 - The Good The Bad_The Ugly
 
What is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWhat is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need It
 
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
 
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdfThe Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
 
Cloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackCloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStack
 
Call Girls In Mukherjee Nagar 📱 9999965857 🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
Call Girls In Mukherjee Nagar 📱  9999965857  🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...Call Girls In Mukherjee Nagar 📱  9999965857  🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
Call Girls In Mukherjee Nagar 📱 9999965857 🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
 
Project Based Learning (A.I).pptx detail explanation
Project Based Learning (A.I).pptx detail explanationProject Based Learning (A.I).pptx detail explanation
Project Based Learning (A.I).pptx detail explanation
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.com
 
DNT_Corporate presentation know about us
DNT_Corporate presentation know about usDNT_Corporate presentation know about us
DNT_Corporate presentation know about us
 
Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)
 
Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...
 
chapter--4-software-project-planning.ppt
chapter--4-software-project-planning.pptchapter--4-software-project-planning.ppt
chapter--4-software-project-planning.ppt
 
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxKnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
 
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
 
Unit 1.1 Excite Part 1, class 9, cbse...
Unit 1.1 Excite Part 1, class 9, cbse...Unit 1.1 Excite Part 1, class 9, cbse...
Unit 1.1 Excite Part 1, class 9, cbse...
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
 

JAMstack your Angular Applications with Scully

  • 2. Steffi Keran Rani Lead Engineer @ With Angular since 2018 SteffiKeranJ steffi-keran-rani-j @steffikeranj 2 Hi there!
  • 3. JAMstack SSG Scully Demo Summary Agenda 3
  • 5. Present Day Scenario 5 Website Server Caching server Caching server Database Program CDN Cloud Provisioning Cache Invalidation Versioning Finger printing Monitoring Security updates Release engineering Replication Migration
  • 6. Present Day Scenario - Concerns 6 1.Site Speed 2.Reliability 3.Security
  • 7. Is there a solution to this? 7
  • 8. Solutions 8 1.Decouple building from hosting 2.Decouple frontend from backend 3.APIs rather than databases 4.Generate the markup and decorate it with JavaScript
  • 9. JavaScript, API and Markup 9 Website CDN “Generate Markups, decorate with JavaScript and consume APIs” - Matt Biilmann API
  • 10. 10 “Deliver safe, fast, and dynamic sites without relying on web servers!” https://jamstack.org
  • 11. JAMstack values 11 1.Pre-render all views 2.Cache maximum API calls 3.Supply them from CDN
  • 12. A JAMstack site is a dynamically generated static site! 12
  • 13. 13 Static Site Generators (SSG) ▪ SSG apply data and content to templates, and generate a view of a page which can be served to the visitors of a site. ▪ Instead of waiting until a page is requested and then generating its view on demand each time, a SSG does this in advance so that the view is ready to serve ahead of time, for every possible view of a site at build time. Image: netlify.com
  • 15. Oh c’mon! But does Angular have a Static Site Generator? 15
  • 17. 17 1. First Static Site Generator for Angular 2. ~ 0 effort in configuration 3. Support for Markdown 4. Automatic route discovery: • Static routes (using guess-parser) • Dynamic routes (Scully/ custom plugins) 5. Support for plugins Scully – An Overview
  • 18. Caching TransferState – for making calls during the build, caching and shipping them to the CDN along with HTML/JS/CSS Pre-rendering Plugins play a major role in • Route Discovery • Pre-rendering CDN Puts your site closer to the user, further increasing the performance 18
  • 20. / /home /crew /dragons Route Discovery in Scully – Static Routes 20 1. Uses Angular routing config 2. guess parser library extracts the routes Examples: https://github.com/guess-js/guess
  • 21. 21 Route Discovery in Scully – Dynamic Routes 1. Uses Scully’s route config 2. Auto-extracted / expanded using built-in & custom plugins Examples: https://scully.io/docs/Reference/plugins/overview/ /crew/123 /crew/456 /crew/789
  • 22. npm run scully -- --scanRoutes 22 /assets/scully-routes.json
  • 23. Scully in action CLI Scully Puppeteer Project 1. ng build –prod 2. npx scully DONE 3. Generate list of routes 4. Starts server for prod build 5. Starts puppeteer instances 6. Load specific route /crew/1 7. App loads 1st navigation done 8. Zone.js stable 9. AngularReady 10. Serialize and save html files to /crew/1/index.html … For every route
  • 24. Scully – The Process 24 1. Traverse, read the source of the application to find all routes. 2. Merge in extraRoutes, where we specify routes we know, but can't automatically traverse 3. We now have a list of unhandled routes 4. Enrich/expand the found unhandled routes routes with router-plugins. 5. Process/change the resulting handled routes list with routeProcess plugins. 6. Write out the scully.routes.json files. 7. Trigger routeDiscoveryDone with results from 5 8. Trigger the render plugins for each route 9.Trigger allDone plugins
  • 25. 25 Scully in action Response page crew/1/index.html Request page crew/1 Browser Static Server
  • 26. Angular Static Site Development 26 Create an Angular project Add Scully to your Angular project Inject Scully Route Service for Dynamic Routes Host
  • 27. SETUP PREREQUISITES: 1. Angular versions: v9.x.x or higher 2. Node.js: 12 or higher 3. Route-enabled 27 INSTALLATION LOCAL DEVELOPMENT PRODUCTION
  • 29. Building for Production 29 ng build –prod && npm run scully -- --scanRoutes 1 2
  • 32. Performance Stats – Comparison 32 Courtesy: Lighthouse reports
  • 33. Notes 33 Scully is a very young tool, which is evolving at a phenomenal speed. The best part is the plugin ecosystem that Scully provides. Generating thousands of pages in each build will be like going overboard. In this case, try considering Universal.
  • 34. 34 REFERENCE  https://scully.io  https://github.com/scullyio/scully  https://jamstack.org  https://www.ample.co/blog/from-static-to-jamstack  https://samvloeberghs.be  https://www.netlify.com/blog  https://www.youtube.com/watch?v=Sh37rIUL-d4  https://academind.com/tutorials/scully-introduction  https://docs.microsoft.com/en-us/azure/static-web- apps  https://www.youtube.com/watch?v=XJ1WzPKPSQo