About the webinar
Application development using microservices is changing very quickly, even as many organizations are gearing up to produce their first full-fledged microservices apps, or expand microservices development. Among these changes are the emergence of Kubernetes as the most widely -used approach to container management and the arrival of service mesh architectures. The Istio service mesh architecture has reached version 1.0.
There is also an increasing recognition of the need for security in service-to-service communications. In the upcoming Version 1.2 of the Microservices Reference Architecture, NGINX will offer an update to its robust and flexible array of models for microservices development, giving developers much more choice and the opportunity to “right-size” the microservices model they choose to the task at hand, while preserving the opportunity for future growth.
2. Agenda
1. Introducing NGINX
2. History of the MRA
○ NGINX Microservices Network Architectures
○ NGINX Microservices Reference Architecture
3. The Future of the MRA
4. Q&A
3. “... when I started NGINX,
I focused on a very specific
problem – how to handle more
customers per a single server.”
- Igor Sysoev, NGINX creator and founder
6. About NGINX, Inc.
• Founded in 2011, NGINX Plus first released in 2013
• $43 million series C funding from Goldman Sachs and NEA
• Offices in SF, London, Cork, Singapore, Sydney, and Moscow
• 1,500+ commercial customers
• 200+ employees
7. NGINX Unit
The new dynamic web and application
server from NGINX. Open source,
support for multiple languages, and a
dynamic REST API-driven
configuration.
NGINX Plus
The only all-in-one load balancer, web
server, and content cache. Simplify
your architecture while reducing costs.
Our Products
NGINX Controller
Centralized monitoring and
management for NGINX Plus. Deploy
virtual load balancers with a single,
beautiful interface. Automate with a
GraphQL API.
NGINX WAF
Open source web application firewall
(WAF). Stop SQL injection, LFI, RFI,
and other Layer 7 attacks. Powered by
ModSecurity.
10. A Timeline
May 2017
Fabric Model Architecture
repository released to open
source
January 2018
Microservices Reference
Architecture “Ingenious”
released to open source
November 2016
Architectures announced at
NGINX Conf
June 2017
Router Mesh Architecture
repository released to open
source
July 2018
Ingenious v1.1.0 released
October 2018
Scheduled Release for
Ingenious 1.2.0
announcements for 2.0
features
11. Resources
● Microservices Network Architectures Announcement at NGINX Conf 2016
○ YouTube
● Microservices Reference Architecture (MRA)
○ Ingenious application
■ Configuration and logic to handle web requests
13. Abstraction vs. Implementation
● Microservices Network Architectures
(MNA)
○ Proxy Model
○ Router Mesh Architecture
○ Fabric Model Architecture
■ Network designs which use NGINX
as the proxy for requests to and
among microservices
● Microservices Reference Architecture
(MRA)
○ Ingenious application
■ Configuration and logic to handle
web requests
vs.
upstream service-a {
server service-a:80;
}
upstream service-b {
server service-b:80;
}
upstream service-c {
server service-c:80;
}
...
14. Proxy Model
● Load Balances requests
to services
● Analogous to connectivity
for a horizontally scaled
monolith
● Services are left to
communicate with each
other
● Acts as an entry point for
monolith migration
● Lays the foundation for
building a service mesh
15. Router Mesh
● Standalone NGINX Plus
instance which acts as a
traffic manager
● Provides service
discovery via DNS SRV
records
● Load balances to
instances of services
● NGINX Plus provides
active health checks
allowing for circuit
breaker functionality
16. Fabric Model
● NGINX Plus exists as a
sidecar within the same
container as the service
● NGINX Plus and the app
communicate only on
localhost
● Instances of NGINX Plus
communicate directly
with each other
● Incorporates all the
features of the Router
Mesh and adds
persistent SSL
connections
18. Ingenious
● Seven distinct services written in
different languages comprising a
single application
● Release 1.X uses the Fabric
Model
● Quick Start:
○ https://github.com/nginxinc/mra-ingenious
19. Auth Proxy
● Written in Python
● Has the most complex NGINX
configuration because it routes
requests to all services
● Connects to an instance of Redis
for where authenticated users are
cached
● Repository:
○ https://github.com/nginxinc/mra-auth-proxy
Auth Proxy
- FROM: python:3.5
- NGINX Plus installed in the
container
- Docker CMD is a script
which starts NGINX Plus as
well as the python application
20. Pages Service
● Written in PHP using the Symfony
Framework
● NGINX Configuration used to
route requests to other services
● No data store
● Repository:
○ https://github.com/nginxinc/mra-pages
Pages
- FROM: php:5.6-fpm
- NGINX Plus installed in the
container
- Docker CMD is a script
which starts NGINX Plus as
well as the Symfony
application
21. User Manager Service
● Written in python using flask and
pm2
● NGINX Configuration handles
requests
● Uses a DynamoDB datastore
● Repository:
○ https://github.com/nginxinc/mra-user-manager
Content Service
- FROM: python:3.5
- NGINX Plus installed in the
container
- Docker CMD is a script
which starts NGINX Plus as
well as pm2 to run the
application
22. Content Service
● Written in Go 1.8
● NGINX Configuration handles
requests and has a configuration
for the album-manager
● Uses a RethinkDB datastore
● Repository:
○ https://github.com/nginxinc/mra-content-service
Content Service
- FROM: golang:1.8.3-jessie
- NGINX Plus installed in the
container
- Docker CMD is a script
which starts NGINX Plus as
well as the golang application
23. Album Manager Service
● Written in Ruby and starts a
unicorn server
● NGINX Configuration handles
requests and has a configuration
for the user-manager
● Uses a MySQL datastore
● Repository:
○ https://github.com/nginxinc/mra-album-manager
Content Service
- FROM: ruby:2.2.3
- NGINX Plus installed in the
container
- Docker CMD is a script
which starts NGINX Plus as
well as the unicorn server
24. Photo Resizer Service
● Written in Java and uses libraries
from io.dropwizard to handle
requests
● NGINX Configuration handles
requests and has a configuration
for the photo uploader service
● Uses an S3 datastore
● Repository:
○ https://github.com/nginxinc/mra-photoresizer
Content Service
- FROM: openjdk:8-jdk
- NGINX Plus installed in the
container
- Docker CMD is a script
which starts NGINX Plus as
well as the Java application
25. Photo Uploader Service
● Written in NodeJS and uses
express to handle requests
● NGINX Configuration handles
requests and has a configuration
for the photo resizer service
● Uses an S3 datastore
● Repository:
○ https://github.com/nginxinc/mra-photouploader
Content Service
- FROM: node:9
- NGINX Plus installed in the
container
- Docker CMD is a script
which starts NGINX Plus as
well as the node application
27. MRA version 1.2
● Bug fixes
● Stability
● mTLS configuration
● Follow best practices for multi-
stage Dockerfile builds
28. MRA version 2.0
● Focus on NGINX features
○ JWT Authorization
○ Integrations with Monitoring and
Observability tools
○ Dynamic APIs
● Bring Your Own Services model
○ Ingenious will still be available
○ We want users to be able to easily
implement their own services using
NGINX Microservices Network
Architectures
A B ... N
A B ... N