SlideShare a Scribd company logo
Interconnecting containers at
scale with NGINX
@sarahnovotny
#dockercon
Building a great application
is only half the battle,
delivering the application
is the other half.
MORE INFORMATION AT NGINX.COM
Microservices
1)
The good
things
MORE INFORMATION AT NGINX.COM
Microservices + containers
The Microservices Architecture:
Enables continuous delivery,
rapid deployment and elasticity
MORE INFORMATION AT NGINX.COM
The Microservices Architecture:
To scale, you can scale each
service independently
MORE INFORMATION AT NGINX.COM
The Microservices Architecture:
Services can be written in
different languages using
different frameworks
MORE INFORMATION AT NGINX.COM
Making Changes:
Each service can be changed,
tested and built independently
MORE INFORMATION AT NGINX.COM
Making Changes:
Release cycles can be
dramatically shortened
MORE INFORMATION AT NGINX.COM
Deploying Microservices:
To unlock the potential of
microservices you must
embrace containers, cloud and
DevOps
2)
The bad things
The Microservices Architecture:
Services can be written in
different languages using
different frameworks
Making Changes:
Release cycles can be
dramatically shortened
Complexity:
To unlock the potential of
microservices you must
embrace containers, cloud and
DevOps
MORE INFORMATION AT NGINX.COM
Here be dragons
3)
How can
NGINX help?
Performance
is user experience.
Our users are our
community of developers,
devops, sysadmins, cloud
engineers & network
admins
NGINX as your stevedores:
Acts as a HTTP router
inspecting requests and
deciding how each one should
be satisfied
ste·ve·dore
ˈstēvəˌdôr/
noun
noun: stevedore; plural noun: stevedores
a person employed, or a contractor engaged,
at a dock to load and unload cargo from ships.
The Microservices Architecture
The Microservices Architecture
Docker orchestration
many options vying
(and then there’s service
discovery)
2013 --bloody edge
2014 --roll your own
2015 --lots of options
2016 --convergence?
MORE INFORMATION AT NGINX.COM
docker-compose
MORE INFORMATION AT NGINX.COM
This .yml file builds –
Consul for service
discovery
Registrator
tutum/hello-world
Google/golang-hello
& NGINX Plus
MORE INFORMATION AT NGINX.COM
$ sarah@ubuntu:~/service-discovery$ more docker-compose.yml
nginx:
build: ./nginxplus
links:
- consul
ports:
- "9050:80"
- "8080:8080"
consul:
command: -server -bootstrap -advertise 10.0.2.15
image: progrium/consul:latest
ports:
- "8300:8300"
- "8400:8400"
- "8500:8500"
- "8600:53/udp”
MORE INFORMATION AT NGINX.COM
registrator:
command: consul://consul:8500
image: progrium/registrator:latest
links:
- consul
volumes:
- "/var/run/docker.sock:/tmp/docker.sock"
service1:
image: tutum/hello-world:latest
environment:
SERVICE_80_NAME: http
SERVICE_NAME: service1
SERVICE_TAGS: production
ports:
- "80"
MORE INFORMATION AT NGINX.COM
service2:
image: google/golang-hello:latest
environment:
SERVICE_80_NAME: http
SERVICE_NAME: service2
SERVICE_TAGS: production
ports:
- "8080"
sarah@ubuntu:~/service-discovery$
MORE INFORMATION AT NGINX.COM
sarah@ubuntu:~/service-discovery$ docker-compose build
consul uses an image, skipping
Building nginx...
Step 0 : FROM ubuntu:14.04
---> 6d4946999d4f
Step 1 : MAINTAINER NGINX Docker Maintainers "docker-maint@nginx.com"
---> Using cache
---> 339d0f20dc6e
…
sarah@ubuntu:~/service-discovery$ docker-compose up -d
Recreating servicediscovery_consul_1...
Recreating servicediscovery_nginx_1...
Recreating servicediscovery_registrator_1...
Recreating servicediscovery_service1_6...
Recreating servicediscovery_service2_1...
sarah@ubuntu:~/service-discovery$
MORE INFORMATION AT NGINX.COM
MORE INFORMATION AT NGINX.COM
MORE INFORMATION AT NGINX.COM
sarah@ubuntu:~/service-discovery/nginxplus$ more nginx.conf
{{range services}} {{$name := .Name}} {{range $tag, $service := service .Name |
byTag}} {{if eq $tag "production"}}
upstream {{$name}} {
zone upstream-{{$name}} 64k;
least_conn;
{{range $service}}server {{.Address}}:{{.Port}} max_fails=3 fail_timeout=60
weight=1 slow_start=60;
{{else}}server 127.0.0.1:65535; # force a 502{{end}}
} {{end}} {{end}} {{end}}
<snip>
MORE INFORMATION AT NGINX.COM
sarah@ubuntu:~/service-discovery$ docker-compose scale service1=5
Creating servicediscovery_service1_2...
Creating servicediscovery_service1_3...
Creating servicediscovery_service1_4...
Creating servicediscovery_service1_5...
Starting servicediscovery_service1_2...
Starting servicediscovery_service1_3...
Starting servicediscovery_service1_4...
Starting servicediscovery_service1_5...
MORE INFORMATION AT NGINX.COM
MORE INFORMATION AT NGINX.COM
The Microservices Architecture
MORE INFORMATION AT NGINX.COM
Visit our kiosk
tomorrow to go
through this
demo
It was based on a blog post for
bellycard by @shanesveller
And built by @fymemon
Thank you
@sarahnovotny
#dockercon

More Related Content

PPTX
NGINX 101 - now with more Docker
PDF
Deploying NGINX Plus with Ansible
PPTX
5 things you didn't know nginx could do
PDF
under the covers -- chef in 20 minutes or less
PPTX
Delivering High-Availability Web Services with NGINX Plus on AWS
PPTX
5 things you didn't know nginx could do velocity
PDF
Lcu14 Lightning Talk- NGINX
PPTX
Nginx Deep Dive Kubernetes Ingress
NGINX 101 - now with more Docker
Deploying NGINX Plus with Ansible
5 things you didn't know nginx could do
under the covers -- chef in 20 minutes or less
Delivering High-Availability Web Services with NGINX Plus on AWS
5 things you didn't know nginx could do velocity
Lcu14 Lightning Talk- NGINX
Nginx Deep Dive Kubernetes Ingress

What's hot (20)

PPTX
NGINX: Basics and Best Practices
ODP
Introduction to Nginx
PDF
From pets to cattle - powered by CoreOS, docker, Mesos & nginx
PDF
Nginx Essential
PDF
Dockers zero to hero
PDF
NGINX Ingress Controller for Kubernetes
PDF
What's New in NGINX Plus R12?
PPTX
NGINX: High Performance Load Balancing
PDF
NGINX: Basics and Best Practices EMEA
PPTX
High Availability Content Caching with NGINX
PPTX
NGINX: Basics & Best Practices - EMEA Broadcast
PDF
NGINX ADC: Basics and Best Practices
PPTX
Kubernetes security
PPTX
What’s New in NGINX Ingress Controller for Kubernetes Release 1.5.0
PDF
NGINX ADC: Basics and Best Practices – EMEA
PPTX
The 3 Models in the NGINX Microservices Reference Architecture
PPTX
Nginx A High Performance Load Balancer, Web Server & Reverse Proxy
PPTX
Maximizing PHP Performance with NGINX
PPTX
MRA AMA Part 10: Kubernetes and the Microservices Reference Architecture
PPTX
Delivering High Performance Websites with NGINX
NGINX: Basics and Best Practices
Introduction to Nginx
From pets to cattle - powered by CoreOS, docker, Mesos & nginx
Nginx Essential
Dockers zero to hero
NGINX Ingress Controller for Kubernetes
What's New in NGINX Plus R12?
NGINX: High Performance Load Balancing
NGINX: Basics and Best Practices EMEA
High Availability Content Caching with NGINX
NGINX: Basics & Best Practices - EMEA Broadcast
NGINX ADC: Basics and Best Practices
Kubernetes security
What’s New in NGINX Ingress Controller for Kubernetes Release 1.5.0
NGINX ADC: Basics and Best Practices – EMEA
The 3 Models in the NGINX Microservices Reference Architecture
Nginx A High Performance Load Balancer, Web Server & Reverse Proxy
Maximizing PHP Performance with NGINX
MRA AMA Part 10: Kubernetes and the Microservices Reference Architecture
Delivering High Performance Websites with NGINX
Ad

Similar to Interconnecting containers at scale #Dockercon (20)

PDF
DockerCon SF 2015: Interconnecting Containers at Scale w/ NGINX
PDF
'DOCKER' & CLOUD: ENABLERS For DEVOPS
PDF
Docker and Cloud - Enables for DevOps - by ACA-IT
PPTX
Docker Container As A Service - March 2016
PPTX
Containers as a Service with Docker
PDF
A hitchhiker‘s guide to the cloud native stack
PDF
A Hitchhiker’s Guide to the Cloud Native Stack. #CDS17
PPTX
Docker Container As A Service - JAX 2016
PDF
Zero-downtime deployment of Micro-services with Kubernetes
PPTX
Kubernetes workshop -_the_basics
PDF
DCEU 18: Docker Container Networking
PDF
The App Developer's Kubernetes Toolbox
PPTX
What's New in Docker - February 2017
PPTX
Connect Everything with NATS - Cloud Expo Europe
PPTX
Docker Timisoara: Dockercon19 recap slides, 23 may 2019
PPTX
The Future of Web Application Architectures
PPTX
Docker Platform and Ecosystem
PDF
Microservices at scale with docker and kubernetes - AMS JUG 2017
PDF
OSDC 2018 | Three years running containers with Kubernetes in Production by T...
DockerCon SF 2015: Interconnecting Containers at Scale w/ NGINX
'DOCKER' & CLOUD: ENABLERS For DEVOPS
Docker and Cloud - Enables for DevOps - by ACA-IT
Docker Container As A Service - March 2016
Containers as a Service with Docker
A hitchhiker‘s guide to the cloud native stack
A Hitchhiker’s Guide to the Cloud Native Stack. #CDS17
Docker Container As A Service - JAX 2016
Zero-downtime deployment of Micro-services with Kubernetes
Kubernetes workshop -_the_basics
DCEU 18: Docker Container Networking
The App Developer's Kubernetes Toolbox
What's New in Docker - February 2017
Connect Everything with NATS - Cloud Expo Europe
Docker Timisoara: Dockercon19 recap slides, 23 may 2019
The Future of Web Application Architectures
Docker Platform and Ecosystem
Microservices at scale with docker and kubernetes - AMS JUG 2017
OSDC 2018 | Three years running containers with Kubernetes in Production by T...
Ad

More from sarahnovotny (13)

PPTX
NGINX 101 - now with more Docker
PDF
Building a Learning Culture
PPTX
0 to enterprise
PPTX
Lessons Learned and Best Practices for Game Development in the Cloud
PPTX
people hacking: opensource biz etiquette
PDF
IRL: How Geeks Undermine Their Presentations & Conversations With Body Language
PPTX
geek_lifestyle
PPT
all data everywhere
PPT
you know databases, how hard can MySQL be?
PPT
nursing for future transhumanist
PPT
Scaling my sql_in_3d
PDF
IGNITE MySQL - Backups Don't Make Me Money
PPT
5 things MySql
NGINX 101 - now with more Docker
Building a Learning Culture
0 to enterprise
Lessons Learned and Best Practices for Game Development in the Cloud
people hacking: opensource biz etiquette
IRL: How Geeks Undermine Their Presentations & Conversations With Body Language
geek_lifestyle
all data everywhere
you know databases, how hard can MySQL be?
nursing for future transhumanist
Scaling my sql_in_3d
IGNITE MySQL - Backups Don't Make Me Money
5 things MySql

Recently uploaded (20)

PDF
NewMind AI Weekly Chronicles - August'25 Week I
PDF
Per capita expenditure prediction using model stacking based on satellite ima...
PDF
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
PDF
Optimiser vos workloads AI/ML sur Amazon EC2 et AWS Graviton
PDF
NewMind AI Monthly Chronicles - July 2025
PDF
Review of recent advances in non-invasive hemoglobin estimation
PDF
Advanced methodologies resolving dimensionality complications for autism neur...
PDF
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
PDF
CIFDAQ's Market Insight: SEC Turns Pro Crypto
PPTX
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
PPTX
Understanding_Digital_Forensics_Presentation.pptx
PDF
Shreyas Phanse Resume: Experienced Backend Engineer | Java • Spring Boot • Ka...
PDF
Spectral efficient network and resource selection model in 5G networks
PDF
Approach and Philosophy of On baking technology
PDF
Reach Out and Touch Someone: Haptics and Empathic Computing
PDF
Electronic commerce courselecture one. Pdf
PDF
Mobile App Security Testing_ A Comprehensive Guide.pdf
PDF
GDG Cloud Iasi [PUBLIC] Florian Blaga - Unveiling the Evolution of Cybersecur...
PDF
Advanced Soft Computing BINUS July 2025.pdf
PDF
cuic standard and advanced reporting.pdf
NewMind AI Weekly Chronicles - August'25 Week I
Per capita expenditure prediction using model stacking based on satellite ima...
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
Optimiser vos workloads AI/ML sur Amazon EC2 et AWS Graviton
NewMind AI Monthly Chronicles - July 2025
Review of recent advances in non-invasive hemoglobin estimation
Advanced methodologies resolving dimensionality complications for autism neur...
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
CIFDAQ's Market Insight: SEC Turns Pro Crypto
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
Understanding_Digital_Forensics_Presentation.pptx
Shreyas Phanse Resume: Experienced Backend Engineer | Java • Spring Boot • Ka...
Spectral efficient network and resource selection model in 5G networks
Approach and Philosophy of On baking technology
Reach Out and Touch Someone: Haptics and Empathic Computing
Electronic commerce courselecture one. Pdf
Mobile App Security Testing_ A Comprehensive Guide.pdf
GDG Cloud Iasi [PUBLIC] Florian Blaga - Unveiling the Evolution of Cybersecur...
Advanced Soft Computing BINUS July 2025.pdf
cuic standard and advanced reporting.pdf

Interconnecting containers at scale #Dockercon

Editor's Notes

  • #5: We’ve all heard the hype about microservices and how they make the world a better place for developers
  • #10: And now, since the services are independent, they can be written in different languages using different frameworks. So you gain the flexibility to choose the right tools for each service.
  • #11: And another big advantage is that changes can also be made independently. As long as the interfaces don’t change you are free to roll out new versions of a service without having to worry about impacting other services.
  • #12: The ease of making changes and deploying microservices allows you to dramatically reduce your release cycles and achieve rapid deployment or continuous delivery.
  • #13: Once you have decided to take advantage of the benefits of a microservices architecture you need to decide how you will deploy the services. It should come as no surprise that with microservices being a very new way of doing things, you will want to look to new tools to deploy them. To take full advantage you will want to embrace containers, cloud and DevOps. The rise of containerization has provided an ideal platform for hosting microservices. Containers are much lighter weight then full virtualization allowing you to achieve a far higher density with the same amount of resources and they are much more DevOps friendly, allowing services to be more easily created and scaled.
  • #14: But, with these positives come some of the very same facts reframed as negatives.
  • #15: And now, since the services are independent, they can be written in different languages using different frameworks. So you gain the flexibility to choose the right tools for each service.
  • #16: The ease of making changes and deploying microservices allows you to dramatically reduce your release cycles and achieve rapid deployment or continuous delivery.
  • #17: Once you have decided to take advantage of the benefits of a microservices architecture you need to decide how you will deploy the services. It should come as no surprise that with microservices being a very new way of doing things, you will want to look to new tools to deploy them. To take full advantage you will want to embrace containers, cloud and DevOps. The rise of containerization has provided an ideal platform for hosting microservices. Containers are much lighter weight then full virtualization allowing you to achieve a far higher density with the same amount of resources and they are much more DevOps friendly, allowing services to be more easily created and scaled.
  • #19: But, with these positives come some of the very same facts reframed as negatives.
  • #22: NGINX Plus can act as an HTTP router. It can handle a large number of incoming requests, inspecting each one and making sure they get to the correct service. And it supports scaling service instances up and down and making sure to only send requests to healthy instances by actively checking the health of each service instance.
  • #24: In reality, microservices architectures look more like this. Here we show an aggregation layer at the front. This layer takes single service requests and makes multiple service requests, aggregating the responses before returning to the client. This is especially useful for mobile apps. Because of the lower bandwidth and higher latency of mobile device,s bundling multiple requests can have a large impact on performance, but aggregation can also be used for non-mobile applications. Then once the aggregation layer makes its service requests, each service can make requests to other services.
  • #25: Since the aggregation layer and the services layer can scale independently, you need something to distribute the traffic. And this is where NGINX comes in. It can handle the client requests to the aggregation layer, load balancing them across the available aggregation servers, and then handling the request from the aggregation layer to the services and also the requests from one service to another. In all cases making sure to route traffic to healthy services, using the NGINX Plus health checks. Allowing services to be easily scaled using tools like docker-compose, kubernetes, swarm, NGINX Plus dynamic configuration API,and other automation infrastructures allowing for intelligent routing based on factors such as URL’s, headers, and letting you do A/B testing, etc.
  • #26: There are many tools vying for a place in the container orchestration ecosystem. Kubernetes, mesos, docker compose, swarm …
  • #27: There are many tools vying for a place in the container orchestration ecosystem. Kubernetes, mesos, docker compose, swarm …
  • #35: The big trick in all of the managing complexity is going from one to many