Code in the Cloud - December 8th 2014

65

Transcript of Code in the Cloud - December 8th 2014

Page 1: Code in the Cloud - December 8th 2014
Page 2: Code in the Cloud - December 8th 2014

• Introduction

• Managing your project

• Working with code

• Tracking your progress

• Continuous

• Lunch break

• Getting your hands dirty

Page 3: Code in the Cloud - December 8th 2014

Modern app development Continuous value delivery and rapid response to change

Page 4: Code in the Cloud - December 8th 2014

Industry trends

Page 5: Code in the Cloud - December 8th 2014
Page 6: Code in the Cloud - December 8th 2014

DevOps: the three stage conversation

3 Products2 Process1 People

Page 7: Code in the Cloud - December 8th 2014

Visual StudioUpdate 1

Visual StudioUpdate 2

Visual StudioUpdate N

Visual Studio Online

Visual Studio continuous value delivery

Page 8: Code in the Cloud - December 8th 2014
Page 9: Code in the Cloud - December 8th 2014

Plan, build, deploy and manage applications using a comprehensive suite of services that is accessible to the entire team

Page 10: Code in the Cloud - December 8th 2014

ALM your way

Page 11: Code in the Cloud - December 8th 2014

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

Page 12: Code in the Cloud - December 8th 2014

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

Page 13: Code in the Cloud - December 8th 2014

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

Page 14: Code in the Cloud - December 8th 2014
Page 15: Code in the Cloud - December 8th 2014
Page 16: Code in the Cloud - December 8th 2014
Page 17: Code in the Cloud - December 8th 2014

Benefits of an Agile

Team

Page 18: Code in the Cloud - December 8th 2014
Page 19: Code in the Cloud - December 8th 2014
Page 20: Code in the Cloud - December 8th 2014

Visibility

Time

Value

Time

Value

Adaptability

Time

Value

Business Value

Time

Risk

Agile Development Traditional Development

Value

Page 21: Code in the Cloud - December 8th 2014

scope

design

plan

stage

deploy

testmonitor

triage

plan

deploy

testlog defect

build

automated testcheck

in

run

code

unit test

run

Business Hypothesis

Validated Learnings

Page 22: Code in the Cloud - December 8th 2014

Modern App Teams

Page 23: Code in the Cloud - December 8th 2014

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

Page 24: Code in the Cloud - December 8th 2014

Sprint 2 – Mobile Workforce

Page 25: Code in the Cloud - December 8th 2014

Kanban cards

Kanban (かんばん(看板)?) (literally

signboard or

billboard) is a

scheduling system

for lean and just-in-

time (JIT) production

Page 26: Code in the Cloud - December 8th 2014
Page 27: Code in the Cloud - December 8th 2014
Page 28: Code in the Cloud - December 8th 2014

Modern Version

Control

Page 29: Code in the Cloud - December 8th 2014

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

Page 30: Code in the Cloud - December 8th 2014
Page 31: Code in the Cloud - December 8th 2014

Source History

Page 32: Code in the Cloud - December 8th 2014

Source History

History History

Page 33: Code in the Cloud - December 8th 2014

Team Foundation Server / VS Online

Project 2Project 1

3rd Party 3rd Party

Local

Repo

Other Remote Git

Repo

Page 34: Code in the Cloud - December 8th 2014

Git fully integrated into TFS

Page 35: Code in the Cloud - December 8th 2014
Page 36: Code in the Cloud - December 8th 2014
Page 37: Code in the Cloud - December 8th 2014
Page 38: Code in the Cloud - December 8th 2014
Page 39: Code in the Cloud - December 8th 2014

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");}

Page 40: Code in the Cloud - December 8th 2014

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.

Page 41: Code in the Cloud - December 8th 2014

Controller

Page 42: Code in the Cloud - December 8th 2014
Page 43: Code in the Cloud - December 8th 2014
Page 44: Code in the Cloud - December 8th 2014
Page 45: Code in the Cloud - December 8th 2014
Page 46: Code in the Cloud - December 8th 2014

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

Page 47: Code in the Cloud - December 8th 2014

Continuous integration

automatically creates a

build after check-in

Create multiple build definitions

to support various build scenarios

Page 48: Code in the Cloud - December 8th 2014

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

Page 49: Code in the Cloud - December 8th 2014
Page 50: Code in the Cloud - December 8th 2014

Continuous Deployment

Modern Release

Management

Page 51: Code in the Cloud - December 8th 2014

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

Page 52: Code in the Cloud - December 8th 2014

origin\

master VisualStudio.com

http://northwind-test.comAzure Websites

Continuous Deploy

Push Pull

master Local Workstation

Page 53: Code in the Cloud - December 8th 2014
Page 54: Code in the Cloud - December 8th 2014

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

Page 55: Code in the Cloud - December 8th 2014
Page 56: Code in the Cloud - December 8th 2014

Monitoring Applications

Page 57: Code in the Cloud - December 8th 2014
Page 58: Code in the Cloud - December 8th 2014

Movement to the cloud exacerbates the problem – IT is out of the picture, and the picture is a black

box.

Page 59: Code in the Cloud - December 8th 2014
Page 60: Code in the Cloud - December 8th 2014

User experience is what ultimately matters

Page 61: Code in the Cloud - December 8th 2014

Plenty of opportunities for things to go wrong

Mobile app crashed

Server request too slow

Database overloadedDownstream service down

Feature too hard to use

Page 62: Code in the Cloud - December 8th 2014

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

Page 63: Code in the Cloud - December 8th 2014

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?

Page 64: Code in the Cloud - December 8th 2014

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

Page 65: Code in the Cloud - December 8th 2014