DevOps on the Microsoft Stack
Randy PagelsSr. Developer Technology SpecialistUS DX Team – [email protected]
Application lifecycle management
Modern app development Continuous value delivery and rapid response to change
How we used to workWe did ask for feedback after each milestone – but we could not really react to it.
For the most part, we would tell everybody “sorry” - and push things to the next release.
We did find and fix bugs – without really knowing if we built the right thing in the first place.
We had closed silos of information across different organizations, hurting collaboration.
Our own journey
Planning Code Test & Stabilize Code Test & Stabilize
Beta? RTM?2.5 years!
Planning Chat
Every 3 sprints
Sprint
3 week sprints
Season
6 monthseason
Vision
18 monthvision
How we work nowWe ship frequently with minimum friction
Build>Deploy>Test reliably, hundreds of times a day
We continue to meet a rigorous on-premises quality bar
We build confidence through staging, exposure control & rich telemetry
Where we are today
Visit http://stories.visualstudio.com to get the full story!
Pla
n +
Develo
p IDE
Team Collaboration
Bu
ild +
Test Build/CI
Test
Dep
loy Release
Mo
nito
r +
Learn Monitor
MicrosoftEcosystem
DEV TEST QA
ON-PREMISES | HYBRID | PUBL IC CLOUD
Pla
n +
Develo
p IDE
Team Collaboration
Bu
ild +
Test Build/CI
Test
Dep
loy Configuration
Mo
nito
r +
Learn Monitor
OSSEcosystem
Release
This graphic shows OSS and partner products
integrated with the Microsoft DevOps solution
It starts with an idea – and a plan
how to turn this idea into reality …
Manage work
Develop + Test 1
Plan
Project starts
PlanTrack progress
Write Code
Unit Testing
2
Build
Version Control
Build Verification
Release
Once the iteration starts, developers
turn great ideas into features …
Develop + Test
Microsoft Fakes
Stubs
A stub replaces a class with a small substitute that implements the same interface
Shimes
A shim modifies the compiled code of your application at run time so that instead of making a specified method call, it runs the shim code that your test provides
Deployed component depends on external parts that are
incomplete or exhibit variable behavior.
Component isolated testing. The stubs and shims work
under the control of the tests.
Isolate the code you are testing by replacing other parts
of the application with stubs or shims.
Small pieces of code that are under the control of your
tests.
Code Maps
• Filter link types on Code maps and dependency graphs
• Drag and drop from object browser or class view
• Create new diagrams from selected nodes
• Create new blank Code Map from the simplified Architecture menu
• Faster display and better responsiveness
• Less clutter with implicit .NET type dependencies hidden
• Filters for code elements as well as dependency links
Next generation build
Continuous integration to find build issues earlier
Create your own build definition templates or use community templates from your Git provider
Technical Debt Bottleneck
… but technical debt slows it down
… but technical debt slows it down
… but technical debt slows it down
Makes forward progress on customer value inefficient
Technical debt zaps productivity
Technical makes code hard to understand, fragile, difficult to
validate
Technical creates unplanned work that blocks progress
50% of capacity is zapped by technical debt
SonarQube Integration
code analysis issues duplicate code code complexity
not enough tests redundant & flaky tests architectural spaghetti
Examples
Cloud
Load Testing
Integration testing
environment
Automated functional
testing environment
3
Pre-production
environment
Staging
environment
Monitor + Learn
When all tests pass, the build is deployed to testing
environments for each stage in the release process
Release
UI Automation
Coded UI tests provide a way to create fully automated tests to validate the functionality and behavior of your application’s user interface
Selenium automates browsers. Primarily, it is for automating web applications for testing purposes, but is not limited to just that
Fast, easy, and lean dev-test environments in Azure.
Specifically for your team. On demand.
Azure Dev/Test Labs Worry free self-service
Fast Provisioning, “ready to test”
Create once, use everywhere
Integrate with your toolchain
Learn and understand how users use your app, how it reacts
and quickly fix issues and bugs
Monitor + Learn
4
Monitor
Feedback
Plan the next iteration
Visual Studio Application InsightsDetect issues, diagnose crashes and track usage in your web and mobile apps
Announcing Public Preview on Azure Preview Portal
Monitor ASP.NET, Java and other web apps and services
Support for Android, iOS and Windows mobile apps
Pricing details available now including free tier
Check it out!
http://azure.microsoft.com/en-us/services/application-insights
Power BI Integration
“How many pull requests per day? Per week?”
Gain understanding and insights into projects in VSTS
API APPS
Easily build and consume APIs in the cloud
WEB APPSWeb apps that scale with your
business
LOGIC APPS
Automate business process across SaaS and on-premises
MOBILE APPS
Build Mobile apps for any device
Azure App Service
.NET, Java, Node.js, PHP, Python
Auto OS patching
Auto scale/built in load balancing
Integration with existing apps
Continuous deployment
Azure Web Apps: Web Jobs
run.cmd, run.bat run.exe run.ps1 run.sh run.php run.py run.js
BlobTrigger, TableTrigger, QueueTrigger, ServicebusTrigger
Scale: Singleton, Multi-instance
Job Type: On-Demand, Scheduled, Continuous
WebJobs SDK Feature:
Deployment: Portal, Visual Studio, CLI, Git
Next Steps Create a Visual Studio Online account
Try the Release Management Service & Application Insights
visualstudio.com
Download Visual Studio 2015
Use your Visual Studio Online & Azure benefits
msdn.microsoft.com
Microsoft’s DevOps Journey
stories.visualstudio.com/devops
Try App Service: Web Apps today
tryappservice.azure.com
DevOps and Application Lifecycle Management
msdn.microsoft.com/en-us/library/fda2bad5.aspx
Access to Azure
All MSDN subscribers have access to $50 to $150 monthly Azure credit
Use all your MSDN software benefits in Azure for Dev/Test
Spin up Virtual Machines, Websites, Databases, etc.
What can you do with $100 in Azure?
3 VMs for 16 hours a day
80 VMs for 20 hour load test
Up to 500 web sites plus SQL DB
Azure Automation
Automation as a ServiceThink Orchestrator or Azure Pack Service Automation, but in Azure
Automate repetitive or long-running processes
Script Authoring EnvironmentUses PowerShell Workflows
Combination of PowerShell 4.0 and WF
Uses Integration Modules, very similar to PowerShell Modules
Scheduling and MonitoringExecute scripts on a schedule
Review execution status on a dashboard