Code in the Cloud - Ghent - 20 February 2015

87
Nick Trogh @nicktrog Jan Tielens @jantielens Code in the Cloud Microsoft Developer Camps

Transcript of Code in the Cloud - Ghent - 20 February 2015

Page 1: Code in the Cloud - Ghent - 20 February 2015

Nick Trogh @nicktrog

Jan Tielens @jantielens

Code in the CloudMicrosoft Developer Camps

Page 2: Code in the Cloud - Ghent - 20 February 2015

Jan Tielens

Technical Evangelist, Windows

@jantielens

Nick Trogh

Technical Evangelist, Azure

@nicktrog

Page 3: Code in the Cloud - Ghent - 20 February 2015

Introduction

Managing your project

Working with code

Hands-on lab

Lunch break

Tracking your progress

Continuous deployment & monitoring

Hands-on lab

Closing

9:00

12:00

16:00

Page 4: Code in the Cloud - Ghent - 20 February 2015
Page 5: Code in the Cloud - Ghent - 20 February 2015

Modern app development Continuous value delivery and rapid response to change

Page 6: Code in the Cloud - Ghent - 20 February 2015
Page 7: Code in the Cloud - Ghent - 20 February 2015

Plan, build, deploy and manage applications using a comprehensive

suite of services that is accessible to the entire team

Page 8: Code in the Cloud - Ghent - 20 February 2015
Page 9: Code in the Cloud - Ghent - 20 February 2015

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 10: Code in the Cloud - Ghent - 20 February 2015

Java in Hosted Builds

European Datacenter

Azure Active Directory

REST APIs

Service

Hooks

Page 11: Code in the Cloud - Ghent - 20 February 2015

Set up a Visual Studio Online Account and create a team project quickly

Page 12: Code in the Cloud - Ghent - 20 February 2015

Use a customizable backlog and

work in sprints to achieve

consistent cadences

Page 13: Code in the Cloud - Ghent - 20 February 2015
Page 14: Code in the Cloud - Ghent - 20 February 2015

Connect to projects in Visual Studio Online quickly from Team Explorer

Page 15: Code in the Cloud - Ghent - 20 February 2015

Communicate with team members

through Team Rooms, regardless of time

zone

Page 16: Code in the Cloud - Ghent - 20 February 2015
Page 17: Code in the Cloud - Ghent - 20 February 2015
Page 18: Code in the Cloud - Ghent - 20 February 2015

Demo

Page 19: Code in the Cloud - Ghent - 20 February 2015
Page 20: Code in the Cloud - Ghent - 20 February 2015

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: 20K 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 21: Code in the Cloud - Ghent - 20 February 2015

Unlimited projects/repositories

Agile planning

Work item tracking

Code discussions

= Basic capabilities +

Request & manage feedback

Web test case management

View dashboards

Create and edit work items

Task and Kanban boards (read-only)

Work item chart viewing

Team Rooms

Agile Portfolio Management

Web test execution

Build automation

Page 22: Code in the Cloud - Ghent - 20 February 2015
Page 23: Code in the Cloud - Ghent - 20 February 2015
Page 24: Code in the Cloud - Ghent - 20 February 2015
Page 25: Code in the Cloud - Ghent - 20 February 2015
Page 26: Code in the Cloud - Ghent - 20 February 2015
Page 27: Code in the Cloud - Ghent - 20 February 2015

Benefits of an Agile

Team

Page 28: Code in the Cloud - Ghent - 20 February 2015
Page 29: Code in the Cloud - Ghent - 20 February 2015
Page 30: Code in the Cloud - Ghent - 20 February 2015

Visibility

Time

Value

Time

Value

Adaptability

Time

Value

Business Value

Time

Risk

Agile Development Traditional Development

Value

Page 31: Code in the Cloud - Ghent - 20 February 2015

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 32: Code in the Cloud - Ghent - 20 February 2015

Modern App Teams

Page 33: Code in the Cloud - Ghent - 20 February 2015

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 34: Code in the Cloud - Ghent - 20 February 2015

Sprint 2 – Mobile Workforce

Page 35: Code in the Cloud - Ghent - 20 February 2015

Kanban cards

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

signboard or

billboard) is a

scheduling system

for lean and just-in-

time (JIT) production

Page 36: Code in the Cloud - Ghent - 20 February 2015
Page 37: Code in the Cloud - Ghent - 20 February 2015
Page 38: Code in the Cloud - Ghent - 20 February 2015

Nick Trogh @nicktrog

Working with codeCode in the Cloud

Page 39: Code in the Cloud - Ghent - 20 February 2015
Page 40: Code in the Cloud - Ghent - 20 February 2015
Page 41: Code in the Cloud - Ghent - 20 February 2015

Source History

Page 42: Code in the Cloud - Ghent - 20 February 2015

Source History

History History

Page 43: Code in the Cloud - Ghent - 20 February 2015

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 44: Code in the Cloud - Ghent - 20 February 2015

Team Foundation Server / VS Online

Project 2Project 1

3rd Party 3rd Party

Local

Repo

Other Remote Git

Repo

Page 45: Code in the Cloud - Ghent - 20 February 2015
Page 46: Code in the Cloud - Ghent - 20 February 2015

DemoUsing Git

Page 47: Code in the Cloud - Ghent - 20 February 2015

Eclipse IDE

Team Explorer

Dockable Views

Work Items

Java Builds

Page 48: Code in the Cloud - Ghent - 20 February 2015
Page 49: Code in the Cloud - Ghent - 20 February 2015

Integrated Code Review

Request Review

Accept Review

Collaborate

Associate w/ Changeset

Page 50: Code in the Cloud - Ghent - 20 February 2015

Suspend &

Resume

Suspend Work

Switch Context

Multiple Sets

Resume Everything

Page 51: Code in the Cloud - Ghent - 20 February 2015
Page 52: Code in the Cloud - Ghent - 20 February 2015
Page 53: Code in the Cloud - Ghent - 20 February 2015
Page 54: Code in the Cloud - Ghent - 20 February 2015
Page 55: Code in the Cloud - Ghent - 20 February 2015
Page 56: Code in the Cloud - Ghent - 20 February 2015

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 57: Code in the Cloud - Ghent - 20 February 2015

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 58: Code in the Cloud - Ghent - 20 February 2015

Controller

Page 59: Code in the Cloud - Ghent - 20 February 2015
Page 60: Code in the Cloud - Ghent - 20 February 2015

Nick Trogh @nicktrog

Continuous ImprovementCode in the Cloud

Page 61: Code in the Cloud - Ghent - 20 February 2015
Page 62: Code in the Cloud - Ghent - 20 February 2015
Page 63: Code in the Cloud - Ghent - 20 February 2015
Page 64: Code in the Cloud - Ghent - 20 February 2015
Page 65: Code in the Cloud - Ghent - 20 February 2015
Page 66: Code in the Cloud - Ghent - 20 February 2015
Page 67: Code in the Cloud - Ghent - 20 February 2015
Page 68: Code in the Cloud - Ghent - 20 February 2015

origin\

master VisualStudio.com

http://northwind-test.comAzure Websites

Continuous Deploy

Push Pull

master Local Workstation

Page 69: Code in the Cloud - Ghent - 20 February 2015
Page 70: Code in the Cloud - Ghent - 20 February 2015
Page 71: Code in the Cloud - Ghent - 20 February 2015
Page 72: Code in the Cloud - Ghent - 20 February 2015

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 73: Code in the Cloud - Ghent - 20 February 2015

DEV QAINT PROD

Page 74: Code in the Cloud - Ghent - 20 February 2015

DEV QAINT PROD

Page 75: Code in the Cloud - Ghent - 20 February 2015

Release Management

Automation

Approval Workflow

TFS Integration

Environments

Analytics & Reporting

Page 76: Code in the Cloud - Ghent - 20 February 2015

Monitor and Learn

Page 77: Code in the Cloud - Ghent - 20 February 2015
Page 78: Code in the Cloud - Ghent - 20 February 2015

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

box.

Page 79: Code in the Cloud - Ghent - 20 February 2015
Page 80: Code in the Cloud - Ghent - 20 February 2015

User experience is what ultimately matters

Page 81: Code in the Cloud - Ghent - 20 February 2015

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 82: Code in the Cloud - Ghent - 20 February 2015

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 83: Code in the Cloud - Ghent - 20 February 2015

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 84: Code in the Cloud - Ghent - 20 February 2015
Page 85: Code in the Cloud - Ghent - 20 February 2015
Page 86: Code in the Cloud - Ghent - 20 February 2015

• http://aka.ms/devbesmart

• Visual Studio Community Edition

• Azure Free Trial

• MVA Courses: Fundamentals of Visual Studio Online

Using Git with Visual Studio 2013

• Follow us

Page 87: Code in the Cloud - Ghent - 20 February 2015