Practical solutions on how to bring DevOps to your database including:
- The importance of getting your database code into source control
- How to test your database changes
- Tools you can use to automate build and test processes
- How to build an automated deployment process for your database with Redgate tools
- How to embrace using Azure Kubernetes Services (AKS) in your deployment pipeline
- Deploying your entire pipeline as and when it is needed from Dev to Prod saving your organisation money
5. Agenda
• How was life before DevOps?
• What is this DevOps thing you talk of?
• Why use Redgate tools?
• Why use Azure?
• Why use containers
• Why use Azure Kubernetes Services
6. Database Development Cycle:
• Manual
• Inconsistently tested
• Plagued with poor or NO source control
• Slowed down by lengthy processes and daunting deployments
• Application code breaks our database!!
7. “….never say the word DevOps”
The first rule of DevOps…….
Hamish Watson, circa 2013
8. “Let’s use our tools and create a process
that allows us to automate the reliable
deployment of business value to our
clients.”
Hamish Watson, circa 2016
#MakeStuffGo
12. DevOps tools – yours might differ
Issue, bug and task tracking
Source control
Integrated Development Environment
Automated build server
Automated testing
Automated release
13. Ways you can start your DevOps journey
1. Source Control
2. Unit Testing
3. Infrastructure as Code
4. Continuous Integration
5. Continuous Delivery
6. Continuous Monitoring & Testing
15. Ways to get our database into Source Control
(SQL Source Control)
16. Ways to get our database into Source Control
(SQL Source Control)
17. Ways to get our database into Source Control
(SQL Source Control)
18. Unit Testing for Databases
Yeah, nah…
…..that’s kinda non-existent.
19. Why we need to do unit testing
The client actually wanted a ‘g’
20. Consider this application developer
Skills: C#, .NET, java, PowerShell
Experience: 8 years
Platforms: Windows Server, Azure, AWS, docker
Databases: Microsoft SQL Server, MySQL, Oracle
Unit Testing: Nah, don’t really believe in it mate….
X
21. Consider this database developer
Skills: T-SQL, Entity Framework, PowerShell
Experience: 8 years
Platforms: Windows Server, Azure, RDS
Databases: Microsoft SQL Server 2000 - 2017
Unit Testing: I write beautiful stored procs mate….
P
23. Introducing tSQLt
Open Source Database Unit Testing Framework (free!!)
http://tsqlt.org/
Write unit tests in TSQL and can be written/run in SSMS
Very similar to NUnit & JUnit
There are a lot of methods for asserts
23
24. Introducing tSQLt
Use of fake tables/views isolates code while testing
Self Contained tests – isolated transactions
We can choose to run all, some or one test
Tests grouped in their own schema
Does require CLR – this is OK for DEV and some TEST
24
31. Continuous Integration
“Continuous Integration (CI) is a development practice that requires developers to
integrate code into a shared repository several times a day.
Each check-in is then verified by an automated build, allowing teams to detect problems
early.
By integrating regularly, you can detect errors quickly, and fix them more easily.”
https://www.thoughtworks.com/continuous-integration
http://workingwithdevs.com/t-sql-tuesday-90-you-are-doing-continuous-integration-wrong
32. Continuous Integration
TDD DEVELOPER – Steve Jones
WRITES CODE
COMMIT SOURCE CONTROL
SYSTEM
O.S DEVELOPER – Rob WatsonWRITES CODE
POLLING
NOTIFICATIONS
CONTINUOUS
INTEGRATION &
TESTING
TEST
FAILURE
TEST AGAIN PACKAGE &
DEPLOY
1
2
3 4
56
7
8
910
11
12
NOTIFY
13
14
15 16
Unit
testing
Unit
testing
33. CI isn’t the whole story for reliable deployments
Dev
Dev BUILD
SERVER
Build
testing
UAT
User
testing
PRODUCTION EXPLOSION
Continuous
integration
1
2
3
4
5
6
3 Months of
changes
Feedback on 3 Months of changes7
Wasteful rework & manual intervention8
Unit
testing
34. Continuous Delivery – shifting everything left
Feedback
Dev
Dev Build
server
Build
tests
Continuous integration
Build
Continuous testing
Integration tests Functional tests
User acceptance
tests
Feedback
Integration
Feedback
Functional
Feedback
UAT
Final
test
Feedback
Pre prod
Small iterative changes
CONTINUOUS DELIVERY
Feedback
‘SHIFT LEFT’ OPERATIONAL FEEDBACK
PROD
Continuous
monitoring
Unit
testing
CONTINUOUS MONITORING
39. My datacentre in the cloudMy datacentre in the cloud – all via this:
40. SQL Server 2017
• SQL Server 2017 and above can run on Linux
• Which means it can now run in a container
• This is quite a game changer for our industry..
41. SQL Server in containers
Container Container Container
Portable
Run anywhere Docker is supported
Lightweight
Reduced disk, CPU, and memory footprint
Consistent
Consistent image of SQL Server, scripts, and
tools
Efficient
Faster deployment, reduced patching, and
less downtime
Container configuration
Database
Persisted storage
Switch for
simple
upgrades
42. Bare Metal Server
Infrastructure Layer
Operating System (OS)
Physical
Hypervisor (VMs)
Containers
Hypervisor
Applications Guest 1 OS
Guest 1
Applications
Guest 2 OS
Guest 2
Applications
Orchestration Platform
Container 1 Container 2
SAN Storage
Operating System (OS)
Worker Node 1 Worker Node 2
Container 1 Container 2
Orchestrated
Containers
Networking
45. Persistent Volume Storage
Kubernetes
Built-in HADR orchestration with no clustering required
User
Shared storage HA in Kubernetes
Node
Pod
SQL Server
Node
Load Balancer Service
Node
Pod
SQL Server
Pod
SQL Server
53. Summary
• You need to look at DevOps for your database
• Redgate make some fantastically ingenious and simple
solutions to help you #MakeStuffGo
• We love Azure and we love containers
• Azure Kubernetes Services lets you scale out and protect your
applications and database
• You can use the same methods and TOOLS to play with AKS