SlideShare a Scribd company logo
Multipurpose Application Server for Node.JS
All decisions are made. Solutions are scaled
Tools are provided and optimized for high load
Ready for applied development and production
Scaling
Scaling
Filesystem Structure
URL Routing
Configuration
API Development
Templating
Static Resources
Events (SSE)
DB Access
Plugins

1

Multiple applications
• at single server
• at single node.js process
• at single tcp/ip port
• at one domain (different path)
One application
• multiple processes at single server
• multiple processes at multiple servers
• at multiple domains (virtualhosts)
• at multiple network interfaces
• at multiple ports
• over multiple protocols
Scaling
Scaling
Filesystem Structure
URL Routing
Configuration
API Development
Templating
Static Resources
Events (SSE)
DB Access
Plugins

2

Deployment strategies:
• All in one process (for development):
cluster.strategy: "single"
• Separate process for each host/port pair:
cluster.strategy: "specialization"
• Single server cluster, master + multiple workers
cluster: { strategy: "multiple", workers: N }
• Single server cluster with IP-sticky
cluster.strategy: "sticky"
• Multiple servers with multiple workers on each:
strategy: "specialization", + nginx
provides balancing and sticky
• Applied cloud: hardware balancer,
multiple servers with multiple workers,
strategy: "multiple", ØMQ, impress controller
Scaling
Load Balancer

Scaling
Filesystem Structure
URL Routing
Configuration
API Development
Templating
Static Resources
Events (SSE)
DB Access
Plugins

Impress
Application
Server

HTTP

С2

С1

С3

IPC

C1N1

C1N2

C1N3

C2N1

C2N2

C2N3

C3N1

ØMQ
pub/sub + req/rep

3

С0

Impress Cloud Controller

C3N2
Filesystem Structure
Installation:
npm install impress
After that we have:
Scaling
Filesystem Structure
URL Routing
Configuration
API Development
Templating
Static Resources
Events (SSE)
DB Access
Plugins

4

Processing steps:
• access.js
• request.js
• get.js, post.js...
• html.template
URL Routing
Scaling
Filesystem Structure
URL Routing
Configuration
API Development
Templating
Static Resources
Events (SSE)
DB Access
Plugins

5

Features:
• folders are URL-handlers
• handlers and templates inheritance/overriding
• handlers by result type (html, json, csv, xml…)
• serving handlers and templates from memory
• filesystem monitoring and cache refreshing
• files changes consolidation
• multiple handler instances in memory
• URL-rewriting (using regular expressions)
• routing and reverse-proxy
Configuration
Scaling
Filesystem Structure
URL Routing
Configuration
API Development
Templating
Static Resources
Events (SSE)
DB Access
Plugins

6

• file: config.js
• file system monitoring
• config.js soft reloading
• configuration preprocessing
Configuration
Scaling
Filesystem Structure
URL Routing
Configuration
API Development
Templating
Static Resources
Events (SSE)
DB Access
Plugins

7
Configuration
Scaling
Filesystem Structure
URL Routing
Configuration
API Development
Templating
Static Resources
Events (SSE)
DB Access
Plugins

8
API Development
Scaling
Filesystem Structure
URL Routing
Configuration
API Development
Templating
Static Resources
Events (SSE)
DB Access
Plugins

9
API Development
Scaling
Filesystem Structure
URL Routing
Configuration
API Development
Templating
Static Resources
Events (SSE)
DB Access
Plugins

10

• RPC API (Stateful, state will store in RAM
between request/response pairs)
• REST API (Stateless, each request/responce
is independent, order is not important,
state is not stored in RAM)
State classification:
• system global state
• session (or connection) state
• user state
• data-object (subject domain) state
API Development
Scaling
Filesystem Structure
URL Routing
Configuration
API Development
Templating
Static Resources
Events (SSE)
DB Access
Plugins

11
Templating
Scaling
Filesystem Structure
URL Routing
Configuration
API Development
Templating
Static Resources
Events (SSE)
DB Access
Plugins

12
Templating
Scaling
Filesystem Structure
URL Routing
Configuration
API Development
Templating
Static Resources
Events (SSE)
DB Access
Plugins

13
Static Resources
Scaling
Filesystem Structure
URL Routing
Configuration
API Development
Templating
Static Resources
Events (SSE)
DB Access
Plugins

14

• Serves static files directly from RAM
(memory cache)
• File system monitoring and cache refreshing
when file changes
• Cache garbage collection (multiple file buffers)
removes items when deleting files or folders
• Gzip compresion (except small files)
storing gzipped files in RAM
• Implemented HTTP if-modified-since
and HTTP error 304 (Not modified)
• Client JavaScript minification
(using plugin "uglify-js")
Events (SSE)
Client1
Scaling
Filesystem Structure
URL Routing
Configuration
API Development
Templating
Static Resources
Events (SSE)
DB Access
Plugins

15

Client2

Client3

С1
IPC

C1N1

C1N2

C1N3

…

ClientN
Events (SSE)
Client1
Scaling
Filesystem Structure
URL Routing
Configuration
API Development
Templating
Static Resources
Events (SSE)
DB Access
Plugins

Client2

Client3

…

ClientN

HTTP/SSE

С2

С1

С3

IPC

C1N1

C1N2

C1N3

C2N1

C2N2

C2N3

C3N1

ØMQ
pub/sub + req/rep

16

С0

Impress Cloud Controller

C3N2
DB Access
Scaling
Filesystem Structure
URL Routing
Configuration
API Development
Templating
Static Resources
Events (SSE)
DB Access
Plugins

17

• Database drivers are plugins /lib/db.*.js
• Utilities for SQL-compatible DBMS
• Database schema compilation from JSON
• DBMI Web-interface for database management
• MongoDB
• MySQL
DB Access / DBMI
Scaling
Filesystem Structure
URL Routing
Configuration
API Development
Templating
Static Resources
Events (SSE)
DB Access
Plugins

18
Plugins
Scaling
Filesystem Structure
URL Routing
Configuration
API Development
Templating
Static Resources
Events (SSE)
DB Access
Plugins

19

• mail plugin (using nodemailer, multiparty)
• geoip plugin (using geoip-lite, optional installation)
• CMS plugin (in development)
• authentication, authorisation and accounting plugin
• npm plugin (optional installation)
Contacts and links
Scaling
Filesystem Structure
URL Routing
Configuration
API Development
Templating
Static Resources
Events (SSE)
DB Access
Plugins

20

https://npmjs.org/package/impress
https://github.com/tshemsedinov/impress
http://blog.aumcode.com
http://bit.ly/1cSdTF3 (NFX, AUM, UNISTACK)

mailto:timur.shemsedinov@gmail.com
skype:timur.shemsedinov
npm install impress

More Related Content

PDF
Spicing up JMX with Jolokia (Devoxx 2014)
PDF
Writing RESTful web services using Node.js
PDF
События, шины и интеграция данных в непростом мире микросервисов / Валентин Г...
PDF
Play framework productivity formula
KEY
Using NoSQL MongoDB with ColdFusion
PDF
Introduction to CQ5
PDF
Introduction to Nodejs and Isomorphic javascript
PPTX
Node.js, for architects - OpenSlava 2013
Spicing up JMX with Jolokia (Devoxx 2014)
Writing RESTful web services using Node.js
События, шины и интеграция данных в непростом мире микросервисов / Валентин Г...
Play framework productivity formula
Using NoSQL MongoDB with ColdFusion
Introduction to CQ5
Introduction to Nodejs and Isomorphic javascript
Node.js, for architects - OpenSlava 2013

What's hot (20)

PDF
https://docs.google.com/presentation/d/1DcL4zK6i3HZRDD4xTGX1VpSOwyu2xBeWLT6a_...
PDF
Threads Needles Stacks Heaps - Java edition
PPTX
Beyond the Basics 4: How to secure your MongoDB database
PPTX
Cosmos db
PPTX
Kubernetes #3 security
PPTX
Node.js Workshop - Sela SDP 2015
PDF
Transitioning From SQL Server to MySQL - Presentation from Percona Live 2016
PPTX
Securing Your MongoDB Implementation
KEY
Sphinx at Craigslist in 2012
PDF
Node JS | Dilkash Shaikh Mahajan
PDF
Data Processing and Ruby in the World
PPTX
Microsoft Azure DocumentDB - Global Azure Bootcamp 2016
PPTX
What I learned from FluentConf and then some
KEY
Living with SQL and NoSQL at craigslist, a Pragmatic Approach
PDF
Realtime Search Infrastructure at Craigslist (OpenWest 2014)
PDF
CBDW2014 - NoSQL Development With Couchbase and ColdFusion (CFML)
PPTX
What's New In Rails 4.2
PPTX
Javascript on Server-Side
PDF
2011-12-13 NoSQL aus der Praxis
PDF
WSO2 Microservices Framework for Java - Product Overview
https://docs.google.com/presentation/d/1DcL4zK6i3HZRDD4xTGX1VpSOwyu2xBeWLT6a_...
Threads Needles Stacks Heaps - Java edition
Beyond the Basics 4: How to secure your MongoDB database
Cosmos db
Kubernetes #3 security
Node.js Workshop - Sela SDP 2015
Transitioning From SQL Server to MySQL - Presentation from Percona Live 2016
Securing Your MongoDB Implementation
Sphinx at Craigslist in 2012
Node JS | Dilkash Shaikh Mahajan
Data Processing and Ruby in the World
Microsoft Azure DocumentDB - Global Azure Bootcamp 2016
What I learned from FluentConf and then some
Living with SQL and NoSQL at craigslist, a Pragmatic Approach
Realtime Search Infrastructure at Craigslist (OpenWest 2014)
CBDW2014 - NoSQL Development With Couchbase and ColdFusion (CFML)
What's New In Rails 4.2
Javascript on Server-Side
2011-12-13 NoSQL aus der Praxis
WSO2 Microservices Framework for Java - Product Overview
Ad

Similar to Impress Application Server for node.js (en) (20)

PPTX
Microservices with Node and Docker
PDF
“Kick-off with Scale in Mind” by Yousef Wadi
PDF
node.js and Containers: Dispatches from the Frontier
PPTX
Micro services
PDF
API Microservices with Node.js and Docker
PDF
Microservices - opportunities, dilemmas and problems
PPTX
Microservice architecture
ODP
MNPHP Scalable Architecture 101 - Feb 3 2011
PDF
Going FaaSter, Functions as a Service at Netflix
PDF
Amdatu - ApacheCon NA 2011
PDF
Node.js
PPTX
Node.js BFFs: our way to better/micro frontends
PDF
Node.js BFFs - our way to the better/micro frontends
PPTX
Cf summit2014 roadmap
PDF
09-01-services-slides.pdf for educations
PPTX
Cloud Foundry Roadmap (Cloud Foundry Summit 2014)
PPTX
Transforming Legacy Applications Into Dynamically Scalable Web Services
PDF
Building Microservices Software practics
PDF
Microservices - Hitchhiker's guide to cloud native applications
PPTX
Microservices, Docker deploy and Microservices source code in C#
Microservices with Node and Docker
“Kick-off with Scale in Mind” by Yousef Wadi
node.js and Containers: Dispatches from the Frontier
Micro services
API Microservices with Node.js and Docker
Microservices - opportunities, dilemmas and problems
Microservice architecture
MNPHP Scalable Architecture 101 - Feb 3 2011
Going FaaSter, Functions as a Service at Netflix
Amdatu - ApacheCon NA 2011
Node.js
Node.js BFFs: our way to better/micro frontends
Node.js BFFs - our way to the better/micro frontends
Cf summit2014 roadmap
09-01-services-slides.pdf for educations
Cloud Foundry Roadmap (Cloud Foundry Summit 2014)
Transforming Legacy Applications Into Dynamically Scalable Web Services
Building Microservices Software practics
Microservices - Hitchhiker's guide to cloud native applications
Microservices, Docker deploy and Microservices source code in C#
Ad

More from Timur Shemsedinov (20)

PDF
How to use Chat GPT in JavaScript optimizations for Node.js
PDF
IT Revolution in 2023-2024: AI, GPT, business transformation, future professi...
PDF
Multithreading in Node.js and JavaScript
PDF
Node.js threads for I/O-bound tasks
PDF
Node.js Меньше сложности, больше надежности Holy.js 2021
PDF
Rethinking low-code
PDF
Hat full of developers
PDF
FwDays 2021: Metarhia Technology Stack for Node.js
PDF
Node.js for enterprise - JS Conference
PDF
Node.js for enterprise 2021 - JavaScript Fwdays 3
PDF
Node.js in 2021
PDF
Node.js middleware: Never again!
PDF
Patterns and antipatterns
PDF
Race-conditions-web-locks-and-shared-memory
PDF
Asynchronous programming and mutlithreading
PDF
Node.js in 2020 - part 3
PDF
Node.js in 2020 - part 2
PDF
Information system structure and architecture
PDF
Node.js in 2020 - part 1
PDF
Web Locks API
How to use Chat GPT in JavaScript optimizations for Node.js
IT Revolution in 2023-2024: AI, GPT, business transformation, future professi...
Multithreading in Node.js and JavaScript
Node.js threads for I/O-bound tasks
Node.js Меньше сложности, больше надежности Holy.js 2021
Rethinking low-code
Hat full of developers
FwDays 2021: Metarhia Technology Stack for Node.js
Node.js for enterprise - JS Conference
Node.js for enterprise 2021 - JavaScript Fwdays 3
Node.js in 2021
Node.js middleware: Never again!
Patterns and antipatterns
Race-conditions-web-locks-and-shared-memory
Asynchronous programming and mutlithreading
Node.js in 2020 - part 3
Node.js in 2020 - part 2
Information system structure and architecture
Node.js in 2020 - part 1
Web Locks API

Recently uploaded (20)

PDF
Classroom Observation Tools for Teachers
PDF
The Lost Whites of Pakistan by Jahanzaib Mughal.pdf
PPTX
BOWEL ELIMINATION FACTORS AFFECTING AND TYPES
PDF
Physiotherapy_for_Respiratory_and_Cardiac_Problems WEBBER.pdf
PDF
Chapter 2 Heredity, Prenatal Development, and Birth.pdf
PDF
Module 4: Burden of Disease Tutorial Slides S2 2025
PDF
O5-L3 Freight Transport Ops (International) V1.pdf
PDF
Saundersa Comprehensive Review for the NCLEX-RN Examination.pdf
PDF
Microbial disease of the cardiovascular and lymphatic systems
PDF
3rd Neelam Sanjeevareddy Memorial Lecture.pdf
PPTX
Week 4 Term 3 Study Techniques revisited.pptx
PPTX
IMMUNITY IMMUNITY refers to protection against infection, and the immune syst...
PDF
O7-L3 Supply Chain Operations - ICLT Program
PPTX
Final Presentation General Medicine 03-08-2024.pptx
PDF
Business Ethics Teaching Materials for college
PPTX
Renaissance Architecture: A Journey from Faith to Humanism
PDF
ANTIBIOTICS.pptx.pdf………………… xxxxxxxxxxxxx
PPTX
Pharma ospi slides which help in ospi learning
PPTX
master seminar digital applications in india
PDF
FourierSeries-QuestionsWithAnswers(Part-A).pdf
Classroom Observation Tools for Teachers
The Lost Whites of Pakistan by Jahanzaib Mughal.pdf
BOWEL ELIMINATION FACTORS AFFECTING AND TYPES
Physiotherapy_for_Respiratory_and_Cardiac_Problems WEBBER.pdf
Chapter 2 Heredity, Prenatal Development, and Birth.pdf
Module 4: Burden of Disease Tutorial Slides S2 2025
O5-L3 Freight Transport Ops (International) V1.pdf
Saundersa Comprehensive Review for the NCLEX-RN Examination.pdf
Microbial disease of the cardiovascular and lymphatic systems
3rd Neelam Sanjeevareddy Memorial Lecture.pdf
Week 4 Term 3 Study Techniques revisited.pptx
IMMUNITY IMMUNITY refers to protection against infection, and the immune syst...
O7-L3 Supply Chain Operations - ICLT Program
Final Presentation General Medicine 03-08-2024.pptx
Business Ethics Teaching Materials for college
Renaissance Architecture: A Journey from Faith to Humanism
ANTIBIOTICS.pptx.pdf………………… xxxxxxxxxxxxx
Pharma ospi slides which help in ospi learning
master seminar digital applications in india
FourierSeries-QuestionsWithAnswers(Part-A).pdf

Impress Application Server for node.js (en)

  • 1. Multipurpose Application Server for Node.JS All decisions are made. Solutions are scaled Tools are provided and optimized for high load Ready for applied development and production
  • 2. Scaling Scaling Filesystem Structure URL Routing Configuration API Development Templating Static Resources Events (SSE) DB Access Plugins 1 Multiple applications • at single server • at single node.js process • at single tcp/ip port • at one domain (different path) One application • multiple processes at single server • multiple processes at multiple servers • at multiple domains (virtualhosts) • at multiple network interfaces • at multiple ports • over multiple protocols
  • 3. Scaling Scaling Filesystem Structure URL Routing Configuration API Development Templating Static Resources Events (SSE) DB Access Plugins 2 Deployment strategies: • All in one process (for development): cluster.strategy: "single" • Separate process for each host/port pair: cluster.strategy: "specialization" • Single server cluster, master + multiple workers cluster: { strategy: "multiple", workers: N } • Single server cluster with IP-sticky cluster.strategy: "sticky" • Multiple servers with multiple workers on each: strategy: "specialization", + nginx provides balancing and sticky • Applied cloud: hardware balancer, multiple servers with multiple workers, strategy: "multiple", ØMQ, impress controller
  • 4. Scaling Load Balancer Scaling Filesystem Structure URL Routing Configuration API Development Templating Static Resources Events (SSE) DB Access Plugins Impress Application Server HTTP С2 С1 С3 IPC C1N1 C1N2 C1N3 C2N1 C2N2 C2N3 C3N1 ØMQ pub/sub + req/rep 3 С0 Impress Cloud Controller C3N2
  • 5. Filesystem Structure Installation: npm install impress After that we have: Scaling Filesystem Structure URL Routing Configuration API Development Templating Static Resources Events (SSE) DB Access Plugins 4 Processing steps: • access.js • request.js • get.js, post.js... • html.template
  • 6. URL Routing Scaling Filesystem Structure URL Routing Configuration API Development Templating Static Resources Events (SSE) DB Access Plugins 5 Features: • folders are URL-handlers • handlers and templates inheritance/overriding • handlers by result type (html, json, csv, xml…) • serving handlers and templates from memory • filesystem monitoring and cache refreshing • files changes consolidation • multiple handler instances in memory • URL-rewriting (using regular expressions) • routing and reverse-proxy
  • 7. Configuration Scaling Filesystem Structure URL Routing Configuration API Development Templating Static Resources Events (SSE) DB Access Plugins 6 • file: config.js • file system monitoring • config.js soft reloading • configuration preprocessing
  • 8. Configuration Scaling Filesystem Structure URL Routing Configuration API Development Templating Static Resources Events (SSE) DB Access Plugins 7
  • 9. Configuration Scaling Filesystem Structure URL Routing Configuration API Development Templating Static Resources Events (SSE) DB Access Plugins 8
  • 10. API Development Scaling Filesystem Structure URL Routing Configuration API Development Templating Static Resources Events (SSE) DB Access Plugins 9
  • 11. API Development Scaling Filesystem Structure URL Routing Configuration API Development Templating Static Resources Events (SSE) DB Access Plugins 10 • RPC API (Stateful, state will store in RAM between request/response pairs) • REST API (Stateless, each request/responce is independent, order is not important, state is not stored in RAM) State classification: • system global state • session (or connection) state • user state • data-object (subject domain) state
  • 12. API Development Scaling Filesystem Structure URL Routing Configuration API Development Templating Static Resources Events (SSE) DB Access Plugins 11
  • 13. Templating Scaling Filesystem Structure URL Routing Configuration API Development Templating Static Resources Events (SSE) DB Access Plugins 12
  • 14. Templating Scaling Filesystem Structure URL Routing Configuration API Development Templating Static Resources Events (SSE) DB Access Plugins 13
  • 15. Static Resources Scaling Filesystem Structure URL Routing Configuration API Development Templating Static Resources Events (SSE) DB Access Plugins 14 • Serves static files directly from RAM (memory cache) • File system monitoring and cache refreshing when file changes • Cache garbage collection (multiple file buffers) removes items when deleting files or folders • Gzip compresion (except small files) storing gzipped files in RAM • Implemented HTTP if-modified-since and HTTP error 304 (Not modified) • Client JavaScript minification (using plugin "uglify-js")
  • 16. Events (SSE) Client1 Scaling Filesystem Structure URL Routing Configuration API Development Templating Static Resources Events (SSE) DB Access Plugins 15 Client2 Client3 С1 IPC C1N1 C1N2 C1N3 … ClientN
  • 17. Events (SSE) Client1 Scaling Filesystem Structure URL Routing Configuration API Development Templating Static Resources Events (SSE) DB Access Plugins Client2 Client3 … ClientN HTTP/SSE С2 С1 С3 IPC C1N1 C1N2 C1N3 C2N1 C2N2 C2N3 C3N1 ØMQ pub/sub + req/rep 16 С0 Impress Cloud Controller C3N2
  • 18. DB Access Scaling Filesystem Structure URL Routing Configuration API Development Templating Static Resources Events (SSE) DB Access Plugins 17 • Database drivers are plugins /lib/db.*.js • Utilities for SQL-compatible DBMS • Database schema compilation from JSON • DBMI Web-interface for database management • MongoDB • MySQL
  • 19. DB Access / DBMI Scaling Filesystem Structure URL Routing Configuration API Development Templating Static Resources Events (SSE) DB Access Plugins 18
  • 20. Plugins Scaling Filesystem Structure URL Routing Configuration API Development Templating Static Resources Events (SSE) DB Access Plugins 19 • mail plugin (using nodemailer, multiparty) • geoip plugin (using geoip-lite, optional installation) • CMS plugin (in development) • authentication, authorisation and accounting plugin • npm plugin (optional installation)
  • 21. Contacts and links Scaling Filesystem Structure URL Routing Configuration API Development Templating Static Resources Events (SSE) DB Access Plugins 20 https://npmjs.org/package/impress https://github.com/tshemsedinov/impress http://blog.aumcode.com http://bit.ly/1cSdTF3 (NFX, AUM, UNISTACK) mailto:timur.shemsedinov@gmail.com skype:timur.shemsedinov npm install impress