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.
SQL Server in DevOps
Travis Wright
Principal Program Manager
SQL Server Engineering Team
Microsoft
@radtravis
Agenda
• Background on SQL Server, DevOps, Containers, and Container
Management Platforms
• Demos
• Lessons Learned
• What...
DevOps Principles in Focus
• Embrace emerging technology and patterns
• Challenge the status quo
• Agility, efficiency, an...
Containers
• Fad or fundamental transformation?
Container Benefits
All the benefits of VMs plus…
• Reduced size on disk – better hardware utilization
• Reduced CPU/memory...
…but wait…
• “Containers are emphemeral”
• “Containers aren’t for databases”
Docker Databases
• Many of the most popular images are databases
• Postgres: 10M+ pulls
• Mysql: 10M+ pulls
• Redis: 10M+ ...
Persisting Storage
• Mount a volume to the host
• Local storage
• Remote storage
• Mount a container volume
docker run … -...
Build & Test Locally in Dev Environment
• Build locally on Windows, Linux, or macOS
• Windows
• Linux Docker containers us...
Testing & Release
• Use Docker Engine natively
• Use a container management platform (aka “orchestrator”)
• Kubernetes
• R...
Real World Example
SQL Server Engineering Team uses Kubernetes in Azure VMs for
automated testing of SQL Server on Linux
•...
Key Docker Terminology and Commands
• Image – A definition. Defines what software is included and how it
runs.
• Container...
Application Deployment Patterns Using
Containers
SQL Server
App 1 App 2
SQL Server
App 1
SQL Server
+
App 1
Centralized SQ...
Methods for Deployment
• Deploy standard SQL Server container image.
• App deploys the DB at start up.
• Use standard SQL ...
Demo #1
Simple Example + Voting App
Demo #2
ASP.Net Docker-Compose App
Demo #3
Node Monolithic App
Lessons Learned
• Tools aren’t in image. See examples for how to install them.
• Can't connect directly to the SQL Server ...
What’s Next
• High availability in container management platforms
• Performance testing and tuning
• Reduce minimum RAM re...
Get Involved
• Get the SQL Server container images
• hub.docker.com/r/microsoft/mssql-server-linux (v.Next)
• hub.docker.c...
Thank you!!
twright@microsoft.com
twitter.com/radtravis
linkedin.com/in/radtravis
Nordic infrastructure Conference 2017 - SQL Server in DevOps
Upcoming SlideShare
Loading in …5
×

Nordic infrastructure Conference 2017 - SQL Server in DevOps

36,108 views

Published on

SQL Server is coming to Linux in the next major version of SQL Server. Having SQL Server in Linux containers makes it much easier for dev/test, CI/CD, and build automation pipelines to be automated. This session describes some of the common challenges currently faced in trying to use SQL Server in Linux containers and how to overcome them. Integration with Red Hat Open Shift is also discussed.

Published in: Technology
  • Be the first to comment

Nordic infrastructure Conference 2017 - SQL Server in DevOps

  1. 1. SQL Server in DevOps Travis Wright Principal Program Manager SQL Server Engineering Team Microsoft @radtravis
  2. 2. Agenda • Background on SQL Server, DevOps, Containers, and Container Management Platforms • Demos • Lessons Learned • What’s Next • Get Involved
  3. 3. DevOps Principles in Focus • Embrace emerging technology and patterns • Challenge the status quo • Agility, efficiency, and speed • DevOps is a partnership between Dev and Ops • Ops enables and controls • Devs build and maintain apps and services • Both provide support
  4. 4. Containers • Fad or fundamental transformation?
  5. 5. Container Benefits All the benefits of VMs plus… • Reduced size on disk – better hardware utilization • Reduced CPU/memory consumption – better hardware utilization • Reduced deployment size – faster deployments and scale up/down • Reduced patching – less effort, less vulnerability, less down time This is not a fad!
  6. 6. …but wait… • “Containers are emphemeral” • “Containers aren’t for databases”
  7. 7. Docker Databases • Many of the most popular images are databases • Postgres: 10M+ pulls • Mysql: 10M+ pulls • Redis: 10M+ pulls • Mongo: 10M+ pulls • SQL Server on Linux has had 250K+ pulls in the first two months
  8. 8. Persisting Storage • Mount a volume to the host • Local storage • Remote storage • Mount a container volume docker run … -v /my/host/dir:/my/container/dir … docker create -v /mydata --name mydatacontainer … docker run --volumes-from mydatacontainer … Read this! https://docs.docker.com/engine/tutorials/dockervolumes/
  9. 9. Build & Test Locally in Dev Environment • Build locally on Windows, Linux, or macOS • Windows • Linux Docker containers using Docker for Windows • Windows containers on Windows 10 Anniversary Edition+ • macOS • Linux Docker containers using Docker for Mac • Linux • Use Docker Engine natively • There are other container engines like LXC Use for demo today
  10. 10. Testing & Release • Use Docker Engine natively • Use a container management platform (aka “orchestrator”) • Kubernetes • Red Hat OpenShift (based on Kubernetes) • Docker Swarm • Mesosphere DC/OS • Use a cloud service • Azure Container Service (ACS) • AWS EC2 Container Service (ECS) Use for demo today Use for demo today
  11. 11. Real World Example SQL Server Engineering Team uses Kubernetes in Azure VMs for automated testing of SQL Server on Linux • Automated build process creates the container image • Extended existing test system to handle provisioning and test execution/targeting • ~700 containers per test run, usually once per day • 150 VM hosts in Azure; 128 GB/8 cores • 20+ containers/VM in some cases • High density, each SQL Server container listens on a different port
  12. 12. Key Docker Terminology and Commands • Image – A definition. Defines what software is included and how it runs. • Container – A running instance based on the image. • docker pull – download an image from a Docker respository • docker run – create a container from an image • docker ps – list all locally running containers • docker images – list all locally cached images You do not “install” a Docker container! 
  13. 13. Application Deployment Patterns Using Containers SQL Server App 1 App 2 SQL Server App 1 SQL Server + App 1 Centralized SQL Server Docker Compose Monolithic App
  14. 14. Methods for Deployment • Deploy standard SQL Server container image. • App deploys the DB at start up. • Use standard SQL Server image as a base layer. Include DB inside of image. • At run time the CMD in the Dockerfile attaches/restores the DB. • Use standard SQL Server image as base layer. • At run time the DB is created by the CMD in the Dockerfile. Demos #1,2 today Demo #3 today
  15. 15. Demo #1 Simple Example + Voting App
  16. 16. Demo #2 ASP.Net Docker-Compose App
  17. 17. Demo #3 Node Monolithic App
  18. 18. Lessons Learned • Tools aren’t in image. See examples for how to install them. • Can't connect directly to the SQL Server from outside OpenShift network - no access to port 1433 • No way to create a DB simply at docker run time • Need to code around delays to start, SQL Server takes too long to start • SQL Server currently requires 3.25 GB of RAM – more than should be required • Make sure you are running on latest Docker-Engine version (demo built using Docker 1.12.5) - ASP.Net container will have issues if not. Current OpenShift- All-In-One Vagrant box has older version of Docker Engine. • Issue with the fact that the container runs as root. Open Shift doesn’t allow that by default. You can change the perms, but it requires cluster administrator privs. • Docker, OpenShift/Kubernetes, and SQL Server on Linux is still relatively new, especially to ops teams. • No established best practices • Minimal documentation • Few experts
  19. 19. What’s Next • High availability in container management platforms • Performance testing and tuning • Reduce minimum RAM requirement and start up time • Docker image improvements • https://github.com/Microsoft/mssql-docker/issues • More testing of SQL Server on Windows containers  officially support • General Availability later this year of SQL Server v.Next including support for SQL Server on Linux containers • Make SQL Server container images available everywhere
  20. 20. Get Involved • Get the SQL Server container images • hub.docker.com/r/microsoft/mssql-server-linux (v.Next) • hub.docker.com/r/microsoft/mssql-server-windows (v.Next) • https://hub.docker.com/r/microsoft/mssql-server-windows-express/ (2016 SP1) • Mesosphere DC/OS Universe image • Provide feedback • https://github.com/Microsoft/mssql-docker/issues • Get samples from today • https://github.com/twright-msft/mssql-node-docker-demo-app • https://github.com/twright-msft/mssql-aspnet-docker-demo-app • Contact me if you want to work on cool stuff together!
  21. 21. Thank you!! twright@microsoft.com twitter.com/radtravis linkedin.com/in/radtravis

×