Microservices and Container Management with NGINX Plus and Mesosphere DC/OS
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