Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
The Future of the Dynamic
Application Server, NGINX Unit
Kevin Jones

Global Solutions Architect, NGINX / F5 Networks

14:...
About Me
Kevin Jones

Global Solutions Architect for NGINX

• Has worked at NGINX for 4 years

• History in Site Reliabili...
Agenda
● Modernization: The state of the application
ecosystem and how its changing

● Unit architecture and features

● Q...
NGINX Open Source 
NGINX Plus
NGINX Unit
NGINX Controller
● Refactoring of services

● Move to agile deployments

● Requirement for versatile deployments

● Demand for security
Mod...
86% of enterprises expect
microservices to be their default
architecture within 5 years. 
— Global Microservices Trend Rep...
Microservices Today
● Modern apps: built distributed

● Legacy apps: being modernized

● Ability to communicate is crucial
Amazon deploys a new or
updated application
every 11.7 seconds
Agility:
Agility is key
● As services get smaller, code
testing cycles are getting
shorter, deployments are
getting faster

● Progr...
Versatility:
“multilingual strategy improves business
velocity; enables flexibility, portability, and
interoperability; and attracts th...
Polyglot Environments
● New languages for new goals 

● Legacy/modern apps coexist

● Different tasks, different stacks
It’s estimated that almost 46% of
all web applications have a high
security vulnerability
— Web Application Vulnerability ...
Security Is Multi-Faceted
● Apps are becoming isolated 

● Need for manageable limits

● Complex orchestration impacts
per...
Introducing NGINX Unit…
Built From Scratch
Rooted in NGINX development culture

Dynamic multilingual server, designed for modern
applications

Foc...
Unit Architecture
$ ps aux --forest | grep unit | grep -v grep
root 5355 0.0 0.1 8448 2268 Ss 14:32 0:00 unit: main v1.9.0 [./unit/sbin/unit...
Unit Features…
Multilingual
● Perl, PHP, Python, Ruby, Go, ...

● Side-by-side language versions

● Uniform app configuration

● Apps run...
Dynamic by Design
● Instant reconfiguration in
memory

● No reload or restart required

● Less overhead during updates

● ...
API-Controlled
● RESTful API

● Does not rely on config files

● Methods: GET, PUT, POST,
DELETE

● Familiar JSON payload
Listeners object
● Defines ip/ports to listen on

● Maps connection to the specific
application or route object
$ curl 127...
Applications object
● Defines name and type of
application

● Defines user account to run
that application

● Other applic...
Built in routing
(added in Unit 1.8 & 1.9)
● routes object, internal routing
between listeners and apps

● Route based on…...
● SSL/TLS (OpenSSL 1.0.1+)

● Add/Change/Remove
Certificates in memory

● Zero downtime

Secure
● No shared credentials required

● Independent, manageable apps
Secures and Isolates
● One app fails, affects no others

● Server is uniformly configurable

● Goal: cgroups support

Secures and Isolates
Whats next?
● Websocket support

● Proxy enhancements

● Static files

● New languages?? :) Maybe…
Obtaining Unit:
unit.nginx.org

github.com/nginx/unit

docker run nginx/unit
Help and support:
unit@nginx.org

github.com/...
Thank you for coming!
Kevin Jones 

@webopsx / @kmjones1979

@kevinjonescreates
APIdays Helsinki 2019 - The Future of the Dynamic Application Server, NGINX Unit Kevin Jones, NGINX
APIdays Helsinki 2019 - The Future of the Dynamic Application Server, NGINX Unit Kevin Jones, NGINX
Upcoming SlideShare
Loading in …5
×

APIdays Helsinki 2019 - The Future of the Dynamic Application Server, NGINX Unit Kevin Jones, NGINX

67 views

Published on

The Future of the Dynamic Application Server, NGINX Unit
Kevin Jones, Global Consulting Engineer and Technical Architect at NGINX Software

Published in: Technology
  • Be the first to comment

  • Be the first to like this

APIdays Helsinki 2019 - The Future of the Dynamic Application Server, NGINX Unit Kevin Jones, NGINX

  1. 1. The Future of the Dynamic Application Server, NGINX Unit Kevin Jones Global Solutions Architect, NGINX / F5 Networks 14:00 - 14:25
  2. 2. About Me Kevin Jones Global Solutions Architect for NGINX • Has worked at NGINX for 4 years • History in Site Reliability Engineering • From Los Angeles, but currently living in San Francisco, California • Photographer / Filmmaker
  3. 3. Agenda ● Modernization: The state of the application ecosystem and how its changing ● Unit architecture and features ● Q&A
  4. 4. NGINX Open Source NGINX Plus NGINX Unit NGINX Controller
  5. 5. ● Refactoring of services ● Move to agile deployments ● Requirement for versatile deployments ● Demand for security Modernization
  6. 6. 86% of enterprises expect microservices to be their default architecture within 5 years.  — Global Microservices Trend Report, Light Step Refactoring:
  7. 7. Microservices Today ● Modern apps: built distributed ● Legacy apps: being modernized
 ● Ability to communicate is crucial
  8. 8. Amazon deploys a new or updated application every 11.7 seconds Agility:
  9. 9. Agility is key ● As services get smaller, code testing cycles are getting shorter, deployments are getting faster ● Programability and orchestration has to be automated ● Zero downtime a must
  10. 10. Versatility:
  11. 11. “multilingual strategy improves business velocity; enables flexibility, portability, and interoperability; and attracts the best developers” — Developer Language Report, The Cloud Foundry Foundation
  12. 12. Polyglot Environments ● New languages for new goals ● Legacy/modern apps coexist ● Different tasks, different stacks
  13. 13. It’s estimated that almost 46% of all web applications have a high security vulnerability — Web Application Vulnerability Report, Acunetix Security:
  14. 14. Security Is Multi-Faceted ● Apps are becoming isolated ● Need for manageable limits ● Complex orchestration impacts performance ● Today complexity makes security difficult
  15. 15. Introducing NGINX Unit…
  16. 16. Built From Scratch Rooted in NGINX development culture Dynamic multilingual server, designed for modern applications Focuses on performance and optimization Open-source initiative and actively developed
  17. 17. Unit Architecture
  18. 18. $ ps aux --forest | grep unit | grep -v grep root 5355 0.0 0.1 8448 2268 Ss 14:32 0:00 unit: main v1.9.0 [./unit/sbin/unitd] kjones 5357 0.0 0.0 18692 1844 S 14:32 0:00 _ unit: controller kjones 5358 0.0 0.1 166288 3724 Sl 14:32 0:00 _ unit: router pyuser 5368 0.0 0.3 19360 8032 S 14:32 0:00 _ unit: "ftm" application gouser 5369 0.0 0.2 306080 5044 Sl 14:32 0:00 _ /home/kjones/demo/go/unit-fc phpuser 5374 0.0 0.8 211744 17772 S 14:32 0:00 _ unit: "mainpage" application
  19. 19. Unit Features…
  20. 20. Multilingual ● Perl, PHP, Python, Ruby, Go, ...
 ● Side-by-side language versions ● Uniform app configuration ● Apps run on the same server
  21. 21. Dynamic by Design ● Instant reconfiguration in memory ● No reload or restart required ● Less overhead during updates
 ● Zero-interruption reconfigure
  22. 22. API-Controlled ● RESTful API ● Does not rely on config files ● Methods: GET, PUT, POST, DELETE ● Familiar JSON payload
  23. 23. Listeners object ● Defines ip/ports to listen on ● Maps connection to the specific application or route object $ curl 127.1:8443/config/listeners { "*:8080": { "pass": “applications/mainpage” }, "*:8081": { "pass": "applications/ftm" }, "*:8082": { "pass": "applications/fc" } }
  24. 24. Applications object ● Defines name and type of application ● Defines user account to run that application ● Other application specific configurations $ curl 127.1:8443/config/applications { "ftm": { "type": "python 2.7", "module": "wsgi", "user": "pyuser", "path": "/apps/python" }, "fc": { "type": "external", "user": "gouser", "executable": “/apps/go/unit-fc” }, "mainpage": { "type": "php", "user": “phpuser", "root": "/apps/php", "script": "index.php" } }
  25. 25. Built in routing (added in Unit 1.8 & 1.9) ● routes object, internal routing between listeners and apps ● Route based on… - Arguments - Cookies - Headers - Hostname - Method - URI { "routes": [ { "match": { "host": "example.com", "uri": “/admin/*”, "arguments": { "site_access": "yes" } }, "action": { "pass": “applications/php5_app”. } }, { "action": { "pass": "applications/php7_app" } } ] }
  26. 26. ● SSL/TLS (OpenSSL 1.0.1+) ● Add/Change/Remove Certificates in memory ● Zero downtime Secure
  27. 27. ● No shared credentials required ● Independent, manageable apps Secures and Isolates
  28. 28. ● One app fails, affects no others
 ● Server is uniformly configurable
 ● Goal: cgroups support Secures and Isolates
  29. 29. Whats next? ● Websocket support ● Proxy enhancements ● Static files ● New languages?? :) Maybe…
  30. 30. Obtaining Unit: unit.nginx.org github.com/nginx/unit docker run nginx/unit Help and support: unit@nginx.org github.com/nginx/unit/issues nginx.com nick@nginx.com
  31. 31. Thank you for coming! Kevin Jones @webopsx / @kmjones1979 @kevinjonescreates

×