Code in the Cloud - December 8th 2014
-
Upload
microsoft-developer-network-msdn-belgium-and-luxembourg -
Category
Technology
-
view
159 -
download
1
Transcript of Code in the Cloud - December 8th 2014
• Introduction
• Managing your project
• Working with code
• Tracking your progress
• Continuous
• Lunch break
• Getting your hands dirty
Modern app development Continuous value delivery and rapid response to change
Industry trends
DevOps: the three stage conversation
3 Products2 Process1 People
Visual StudioUpdate 1
Visual StudioUpdate 2
Visual StudioUpdate N
Visual Studio Online
Visual Studio continuous value delivery
Plan, build, deploy and manage applications using a comprehensive suite of services that is accessible to the entire team
ALM your way
BACKLOG
REQUIREMENTS
No infrastructure overhead | Pay as you use services | Available anywhere | Connected IDE
Agile Portfolio Management
Kanban customization
Work item tagging
Work item charts
Team Rooms
Code discussionsFlexible version control
Cloud load testing
Web-based test management
Continuous Deployment
Automated builds and CI
Application Insights
Stakeholder feedback
requests
Browser-based lightweight IDE
3) New cloud-only monthly user plans
2) Included for MSDN subscribers
Increased value to existing and new MSDN subscribers User plans purchased via Microsoft Azure.
1) Completely free for small teams
FREE: 5 users
FREE: 60 minutes Cloud Build per month
FREE: 15K virtual user mins per month
FREE: 5 users
Additional users $20/month
All users $45/month
Max 10 per account with this plan
Includes use of the VS Pro IDE
All users $60/month
Unlimited projects/repositories
Agile planning
Work item tracking
Code discussions
Work item chart viewing
= Basic capabilities +
Agile Portfolio Management
Team Rooms
Work item chart authoring
Request & manage feedback
= Advanced capabilities +
Web test case management
Benefits of an Agile
Team
Visibility
Time
Value
Time
Value
Adaptability
Time
Value
Business Value
Time
Risk
Agile Development Traditional Development
Value
scope
design
plan
stage
deploy
testmonitor
triage
plan
deploy
testlog defect
build
automated testcheck
in
run
code
unit test
run
Business Hypothesis
Validated Learnings
Modern App Teams
Product BacklogCustomer prioritized
customer featuresTime-boxed
Test/Develop
Working codeReady for deployment
Time-boxed iteration cycles (i.e. 2 weeks)
Product Backlog Back log tasks
Sprint Backlog
Feature assigned
to sprint
Sprint planning meeting• Review Product Backlog• Estimate Sprint Backlog• Commit
Daily Standups• Done since last standup• Plan for today• Any impediments
Sprint Review Meeting• Demo features to
stakeholders• Retrospective
Elaborated and
Estimated by team
Team Commitment
Sprint 2 – Mobile Workforce
Kanban cards
Kanban (かんばん(看板)?) (literally
signboard or
billboard) is a
scheduling system
for lean and just-in-
time (JIT) production
Modern Version
Control
Strengths Best for
Check-inCheck-out
• Fine level permission control
• Allows usage monitoring
• Large integrated codebases
• Control and auditability over source code down to the file level
• Offline editing support
• Easy to edit files outside Visual Studio or Eclipse
• Medium-sized integrated codebases
• A balance of fine-grained control with reduced friction
• Fast offline experience
• Complete repository with portable history
• Flexible advanced branching model
• Modular codebases
• Integrating with open source
• Highly distributed teams
Source History
Source History
History History
Team Foundation Server / VS Online
Project 2Project 1
3rd Party 3rd Party
Local
Repo
Other Remote Git
Repo
Git fully integrated into TFS
TDD is a robust way of designing software
components (“units”) interactively so that
their behavior is specified through unit
tests.
Whenever you are tempted to type
something into a print statement or a
debugger expression, write it as a test
instead.
Manual or automated testing is much
better for finding bugs.
Automated integration tests are much
better for detecting regression (things that
used to work but have unexpectedly stopped
working).
[TestMethod]public void Debit_WithValidAmount_UpdatesBalance(){
// arrangedouble beginningBalance = 11.99;double debitAmount = 4.55;double expected = 7.44;BankAccount account =
new BankAccount("Mr. X", beginningBalance);
// actaccount.Debit(debitAmount);
// assertdouble actual = account.Balance;Assert.AreEqual(expected, actual, 0.001,
"Account not debited correctly");}
Visual Studio Test Explorer is designed to
support developers and teams who
incorporate unit testing in their software
development practices.
Unit testing helps you ensure the correctness
of your program by verifying that the
application code does what you expect it to
do.
In unit testing, you analyze the functionality
of your program to discover discrete testable
behaviors that you can test as
individual units.
You use a unit testing framework to create
tests of those behaviors and to report the
results of those tests.
Controller
Business challengesCustomers desire frequent updates
Comprehensive manual testing can impede delivery speed
Long cycle times result in increased defects and decreased quality
SolutionsReduce scope of feature set
Integrate new features frequently
Use gated check-in to ensure unit tests are run
Automate build processes
Minimize code churn after breakage
Business valueShorter cycle times lead to quicker delivery of value
Enforced unit testing increases quality threshold
Release of quality code ensures continual value delivery
Continuous integration
automatically creates a
build after check-in
Create multiple build definitions
to support various build scenarios
Configure the gated check-in
build to fail if a test fails, ensuring
the code won’t be checked in
Identify specific test to be run
during the gated check-in build
Continuous Deployment
Modern Release
Management
Deploying early and often delivers business value fast, generates early customer feedback and ensures ‘Go Live’ day ends with Champagne
and not a sleepless night
origin\
master VisualStudio.com
http://northwind-test.comAzure Websites
Continuous Deploy
Push Pull
master Local Workstation
origin\
master VisualStudio.com
http://northwind-test.comAzure Websites
Continuous Deploy
Push Pull
master Local Workstation release
Merge
origin\
release
Push Pull
http://northwind-
staging.com
Continuous Deploy
http://northwind.com
Deploy
Monitoring Applications
Movement to the cloud exacerbates the problem – IT is out of the picture, and the picture is a black
box.
User experience is what ultimately matters
Plenty of opportunities for things to go wrong
Mobile app crashed
Server request too slow
Database overloadedDownstream service down
Feature too hard to use
1. Telemetry is collected at each
tier: Mobile applications, server
applications and browser
2. Telemetry arrives to
Application Insights service
where it is processed & stored
3. Get 360° view of the
application covering availability,
performance & usage
Application
Insights
platform
infrastructure
app
1
3
4
5
Outside-in monitoring
Developer-emitted traces and events
Observed application behavior
Infrastructure performance
URL pings and web tests from global pointsof presence
Whatever the developer would like to sendto Application Insights
No coding required – service dependencies,queries, response time, exceptions, logs, etc.
System performance counters
2 Observed user behaviorHow is the application being used?
Performing
What’s wrong?
Show me performance problems, memory usage, and
exceptions
The solution – Application Insights
Available
Is my application available and
performing for users?
One Dashboard
Succeeding
Where do we invest next?
Show me top features and customer
Usage patterns
Health Dashboards Notifications & Deep Insights Usage Dashboards