Title: Bridging The Gap between Development and Production
1Bridging The Gap between Development and
Production
- Kevin Sangwell
- Infrastructure Architect
- Microsoft Regional Head Quarters
2Develop
Integrate
Test
Deploy
- Development Environment Characteristics
- Component development takes place on individual
developer workstations - Developers have local admin rights
- Minimal (if any) security policies applied
- Runtime environment is the developer workstation
(i.e. not distributed)
3Develop
Integrate
Test
Deploy
- Integration Environment Characteristics
- The first time a component gets deployed
- Minimal formal testing
- Code often runs with admin rights
- Some security policies applied
- Runtime environment is semi-distributed
4Develop
Integrate
Test
Deploy
- Test Environment Characteristics
- Objective is to prove functional requirements
- Code runs with production (limited) rights
- Full security policies applied
- Runtime environment reflects production
- Host separation
- Security Zones
5Develop
Integrate
Test
Deploy
- Deployment Pains
- No automated deployment
- Minimal (if any) install instructions
- No documented requirements for the service
accounts - No list of infrastructure requirements
- Firewall ports
- Load balancing config
- MDAC version
6A Better Way
Development Team
Infrastructure Team
7- Share Infrastructure requirements/constraints
8(No Transcript)
9(No Transcript)
10- Health Model Instrumentation
- Automated Installation (MSI)
- Operations guides (deployment, backup, recovery,
weekly tasks) - Performance characteristics
- Disaster Recovery constraints
- Network constraints (high latency page
validation rather than field)
11(No Transcript)
12(No Transcript)
13Development Team
14(No Transcript)
15(No Transcript)
16(No Transcript)
17(No Transcript)
18(No Transcript)
19The point of Integration and Test
- Risk Reduction
- Apply production security policies to the test
environment - Ensure component is installed consistently across
environments - Attempt to reflect the distributed nature of
production - Use virtualisation to reduce hardware
requirements and achieve above
20Holistic Testing
- Make the Test team responsible for ALL testing
- Functional requirements
- Non-functional requirements
- Operations requirements
- Security requirements
- Tests become end-to-end
- Deployment
- Test most Functional Non-Functional
Requirements concurrently - Operations tests validate other tests
21I know all this its just plain hard!
- Test Should Reflect Production
- Virtualise Test Environment
- Manage Test Environment similar to production
- Automated Deployment
- Software Distribution
- Monitoring
22Step 1 - Eliminate Physical Errors
23Step 2 Understand Production
Network Architecture Storage Architecture Security
Architecture Management Architecture Network
Devices Computing Devices Storage Devices Network
Services DNS, DHCP, WINS Firewall
Services Firewall, Proxy Directory
Service Deployment Services File Print
Services Data Services Web App. Services Infra.
Mgmt. Services Backup Recovery
Services Certificate Services Remote Access
Services Middleware Services
24Step 3 Remove The Non-Core Services
Network Architecture Storage Architecture Security
Architecture Management Architecture Network
Devices Computing Devices Storage Devices Network
Services DNS, DHCP, WINS Firewall
Services Firewall, Proxy Directory
Service Deployment Services File Print
Services Data Services Web App. Services Infra.
Mgmt. Services Backup Recovery
Services Certificate Services Remote Access
Services Middleware Services
25Step 4 Commoditize
- Replace high performance switches
- Use a single unmanaged L2 switch
- Windows RRAS for routing
- Replace hardware firewalls with software
firewalls (ISA 2004)
26Step 5 Virtualize Automate
- Virtualize common IT services - AD, DNS, WINS,
DHCP, etc. - Automate deployment, configuration provisioning
for development, testing and production - Reserve actual production hardware for focused
testing
27Maintain
- Integration knowledge stays in-house
- Integration Team
- Manages the virtual environments
- Syncs them with production
- Runs or coordinates testing
- Hosts LOB and new service dev and test teams
- Speeds the integration process
28Virtualisation Cannot
- Be used for driver level testing
- Run high scale load tests
- Substitute for a full scale staging environment
- Eliminate the need for staff to understand the
production environment - Substitute for good testing, change management or
project management
29Automate The Steps
- Eliminate human error
- Assurance that base environment works as
documented - Focus testing on the new IT Service rather than
existing environment - Also automate the new IT Service deployment,
configuration provisioning
30Agile Development
- Move code through Integration and Test frequently
- Automate, automate, automate
- Leverage virtualisation and the operations
infrastructure - Benefits
- Identify issues sooner
- Increases confidence for deployment
- This is the internal Microsoft Approach
31Bringing it all together
Functional Requirements
Security, Operations Data Centre
Constraints Developer Environment
Functional Requirements Code
Non-functional Requirements
Operations Guides Solution Deployment Constraints
Non-functional Requirements Operations
Requirements Environments
32Tools Today
Functional Spec. in Word/Excel Serena/Borland
VSTS Logical DataCentre Tasks in
Project/VSTS ADS, VirtualPC, RIS, SMS
Contract in Word/Excel Serane/Borland
Word Document, VSTS MSI/Scripts
Word Document, Health Model, SDM (VS)
Health Model (Word Document) ADS, VirtualServer,
RIS, SMS, MOM
33Tools in the future
Functional Spec. in Word/Excel Serena/Borland
SDM (VS LDD), Tasks in VSTS Windows Deployment
Services Vista, SMS
Contract in Word/Excel Serane/Borland
Word Document, VSTS SDM (MSI/Scripts)
Word Document SDM (VS)
Word Document SDM (WDS, SMS, MOM)
34