Microservices and Container Management with NGINX Plus and Mesosphere DC/OS

Post on 10-Apr-2017

580 views 0 download

Transcript of Microservices and Container Management with NGINX Plus and Mesosphere DC/OS

Microservices and Container Management with NGINX Plus and Mesosphere DC/OSApril 20, 2016

MORE INFORMATION AT NGINX.COM

Christopher StetsonChief Architect,Professional Services NGINX

Ben HorowitzTechnical Architect,Professional Services NGINX

MORE INFORMATION AT NGINX.COM

Agenda

• NGINX Microservices Reference Architecture• Mesosphere DC/OS

• Docker Image CI/CD• Developer UI• Robust Networking Options

• Warts & All• Conclusion

MORE INFORMATION AT NGINX.COM

NGINX Microservices

Reference Architecture

MORE INFORMATION AT NGINX.COM

NGINX = Microservices

MORE INFORMATION AT NGINX.COM

Microservices Architecture• Docker containers• Polyglot services• 12-Factor App(-esque)

design

IMAGE TK – ANDY CREATING

MORE INFORMATION AT NGINX.COM

MORE INFORMATION AT NGINX.COM

MORE INFORMATION AT NGINX.COM

Value of MSA

• Provide customers with a microservices blueprint

• Test out NGINX and NGINX Plus features for microservices

• Understand the microservices ecosystem

MORE INFORMATION AT NGINX.COM

MORE INFORMATION AT NGINX.COM

Mesosphere DC/OS

MORE INFORMATION AT NGINX.COM

Docker Image CI/CD

MORE INFORMATION AT NGINX.COM

Typical CI/CD• Developers submit code

to the Version Control System (VCS)

• Continuous integration (CI) server grabs code, builds, tests, and deploys

• Critical process for microservices

MORE INFORMATION AT NGINX.COM

Bake vs. Fry• Bake: create a durable

artifact that is deployed throughout system

• Fry: build artifact as needed for each environment

• Docker images could be ultimate baked good

MORE INFORMATION AT NGINX.COM

Docker Image CI/CD• Commit to VCS• CI/CD creates image and

deploys to repo• Tests are conducted

against image

MORE INFORMATION AT NGINX.COM

DC/OS Repo Support• Most systems only

support public repo (DockerHub)

• Include repo credentials in app definition JSON file

• forcePullImage to avoid local image caching

"container": { "type": "DOCKER", "docker": { "image": "docker.io/<docker-image>", "forcePullImage": true, "network": "BRIDGE", "portMappings": [ { "containerPort": 443, "hostPort": 0, "protocol": "tcp" } ]

} }, "uris": [ "https://s3.amazonaws.com/docker_credentials.gz" ]}

MORE INFORMATION AT NGINX.COM

Robust UI/UX

MORE INFORMATION AT NGINX.COM

Developer’s Swiss Army Knife

• Nice web UI• Solid CLI• Robust API

MORE INFORMATION AT NGINX.COM

Beauty Is More than Skin-Deep• Overview of system• Monitoring of apps• Configuration and

management

MORE INFORMATION AT NGINX.COM

Not Just A Pretty Face• The CLI is a critical piece

of software• How you manage and

deploy your apps• Monitoring features

MORE INFORMATION AT NGINX.COM

API to Do Even More• API provides all data and

capabilities of Marathon• Mesos also has an API

for more fundamental actions

• Fully scriptable system

MORE INFORMATION AT NGINX.COM

Robust Networking

Options

MORE INFORMATION AT NGINX.COM

DC/OS Unopinionated

MORE INFORMATION AT NGINX.COM

Proxy Model• Simple networking model• Good for flat APIs or

simple apps• Round-robin DNS

interservice connection

MORE INFORMATION AT NGINX.COM

Router Mesh Model• NGINX Plus as the proxy • NGINX Plus running on

hosts and providing intraservice connectivity

• Intelligent load balancing with active health checks

MORE INFORMATION AT NGINX.COM

Fabric Model• NGINX Plus running in

each container• DNS service discovery• Persistent SSL/TLS

connections• Health checks provide

circuit-breaker pattern

MORE INFORMATION AT NGINX.COM

Warts & All

MORE INFORMATION AT NGINX.COM

Not All Cookies and Cream• Cached Docker images• Confusing nomenclature• Useful features not

implemented in UI − for example, logging

MORE INFORMATION AT NGINX.COM

Conclusion