Visual Studio 2005 Team System: Tools for Architecture: Designing for Deployment Ajay Sudan Microsoft Corporation http://msdn.microsoft.com/teamsystem Visual Studio 2005 “Personalized productivity” Project Managers Hobbyists Students Enthusiasts Novices Web Professionals VB6 Devs Part-Timers Solo Professionals Testers Consultants Architects Enterprise Devs Visual Studio Visual Studio Visual Studio Team Architect Team Developer Team Test Application Designer Dynamic Code Analyzer Load/Web Testing Logical Datacenter Designer Static Code Analyzer Manual Testing Deployment Designer Code Profiler Test Case Management Unit Testing Code Coverage Class Designer Visio and UML Modeling Team Foundation Client (includes CAL) Visual Studio Professional Edition Visual Studio Team Foundation Version Control Team Reporting Integration Services Team Build Work Item Tracking Project Portal Project Management Visual Studio Industry Partners Process and Architecture Guidance Visual Studio Team System Agenda Distributed system challenges & DSI Distributed System Designers Team Architect as a platform Monitoring Server Order Processing Server (with message queue, payment component, and SMTP) Active Directory Domain Controller (with DNS) Admin Server (with Domain Controller & DNS) Router/ Firewall Web Server 1 Web Server 2 100 Mbps Switch Web Server 3 Web Server 4 Database Server 1 Disk Array Database Server 2 Monitoring Server Order Processing Server (with message queue, payment component, and SMTP) Active Directory Domain Controller (with DNS) Admin Server (with Domain Controller & DNS) Router/ Firewall Web Server 1 Web Server 2 100 Mbps Switch Web Server 3 Web Server 4 Database Server 1 Disk Array Database Server 2 Distributed System Challenges How do I build applications that will successfully deploy? Development How do I communicate application requirements to Operations? How do I set and enforce operational policies? IT Operations How do I keep design documentation up to date with code? Dynamic Systems Initiative Microsoft-led, industry effort to dramatically simplify and automate how businesses design, deploy, and operate distributed IT systems. Applications “Designed For Operations” Model based development tools to capture & edit system knowledge and facilitate collaboration across IT. Architect, Dev and Testing Tools Application Management Packs “Operationally Aware Platform” “Model Based Management Tools” Fully instrumented platform and technologies with rich support for automation and hardware virtualization Leverage knowledge in models to fully automate deployment, updating, configuration and monitoring Instrumentation Automation Hardware Virtualization Deploy/Update/Configure Monitoring and Reporting System Definition Model (SDM) Schematization of “services” Dynamic Systems Initiative System Definition Model (SDM) Applications System Definition Model Application Hosting Logical Machines & Network Topology Hardware Visual Studio Team Architect Distributed System Designers Application Designer System Definition System Designer Model Applications Deployment Designer Logical Datacenter Designer Application Hosting Problem Space Customers have communication problems between Architects and Developers Development and Operations Deployment problems caught too late Customers recognize value of modeling tools Developers do not work within architectural guidelines Visualization of designs Higher level abstractions simply design and development Generation `of code and other artifacts can improve productivity Modeling tools have poor history of success Positive: good for documentation Negative: CASE baggage, round-tripping complexities, not used for software development Visual Studio Team Architect Goals Reduce the complexity of distributed system design and development Enable communication between architects and developers Keep system design documents synchronized with code Increase predictability of deployment Enable communication of requirements between development and operations Enable validation of system design against model of target environment VSTA, DSI, and SDM Distributed System Designers System Development Definition Model Application and Server configuration and specification Operation “system” models Deployment Models Web Services Constraint ASP.Net applications validation IIS errors ExistingSDM SQL Server or OLE Compiler DB Windows Application, … Dynamic Load of SDM models SDM An XML schema for SDM Definitions, Systems, Resources, EndPoints Deployment Communication, Hosting, Reports Containment, Delegation “Deployable Constraint language SDM” Flow Language SDM Compiler Designing connected systems Code first or contract first Application Designer Service-Oriented Architecture model Port Details editor Why do we need a logical datacenter? Because “we know” it works on your machine… Because you can’t afford a data center for every developer Because it’s expensive to troubleshoot production problems and re-architect applications Because developers don’t understand why it will break in the deployment environment The “right” information… The “right” information… What is a logical datacenter? Describes the types of servers and what application types they can host Describes what services are on the machine not wire level encryption Describes the configuration settings of the server not firewalls, vlans, switches & routers Describes application authentication requirements not what IP routing table is used Describes communication boundaries not physical characteristics Describes what protocols are available not how many not the raid configuration Describes constraints on application configuration w/o having to page the developer Communicates the “right” information Settings Settings are “configuration” elements on an application or a run-time hosting environment System.web IIS Meta-base AccessFlags=Execute System.Data Authentication Mode=Forms Authentication=mixed Settings can also be user defined MySetting=Foo Constraints Developers express their “requirements” of the datacenter Operators express their “requirements” of the applications Constraints are authored against configuration settings and relationships Hosting constraints Pre-defined constraint dialogs Constrain logically-grouped settings, with custom dialogs for desired value entry. User-defined constraints Can I bind or connect these “systems”? Let a user constrain against any values on any setting Implicit constraints Defined by system, not the user—“laws of physics.” Describing the Logical Datacenter Specifying & Importing Settings Specifying constraints Validation Deployment Report Logical Infrastructure Designer Services assigned to logical infrastructure Architecture validated against operational settings and constraints Extensibility SDK – Beta 2 Support the ability to add new SDM resources as additional properties on any logical server or application Associate with any existing types Fully Constrainable Generic Logical Servers and Applications Prototypes Support the ability to define new SDM types New System Definitions New Endpoints New relationships New Constraints Extensibility SDK – Beta 2 Goal What you do… Model and visualize “other aspects” of a distributed system Add new Application Definitions to the Application Designer Add new Host Definitions to the Logical Data Center Designer Model new endpoint types Create new communication, and hosting relationships Add custom constraints to new or existing Definitions Extend existing definitions with new meta-data What you get… Integration with existing drag-drop-connect metaphor Integration with exiting user experience for Settings and Constraints Integration with existing validation experience Integration with existing user experience for Deployment Validation Extensibility – How Does it Work? SDM SDM SDK Docs 1) Customer wants to: • Create or extend SDM models • Define new settings • Define new constraints • Use new types in Visual Studio 3) Customer uses VS Extensibility to: • Install new types • Create rich application models using new types • Associate resources with existing definitions Visual Studio 2) Customer uses SDK: • Architect models product in SDM definition • Dev codes constraints and managers • Install package is created 4) Service is visible and available for modeling: • Integrated modeling experience • Integrated setting editing experience • Integrated Validation experience • New types persisted as SDM files Future releases… Extensibility to allow partners to … Deployment & management Integrate new SDM types with the design type environment to control code and config Provide the benefit of design-time validation for 3rd party systems Test & automated deployments Integration with System Center Support for Indigo service framework Contract designer Team Architect as a Platform Customers want their own custom graphical designers To work with useful abstractions (models) integrated with their architecture and software development processes Reduces overall IT costs and increases business agility It’s too expensive to build these now They give up the graphical aspect and use XML They put up with limited customization in UML tools They kludge together a combination of the above Team Architect as a Platform The V1 mission is Rapidly create custom graphical designers for new problem domains Enable integration of custom graphical designers with enterprise architecture and development processes Foster an ecosystem of partners, customers and community How To: Create a New Designer Wizard Creates and configures VS “MDF Designer” solution from (a) template(s) Define DSL Object model editor Structure Serialization Constraints Add code Body of constraints Diagram layout Other enrichments Notation editor Notation Explorer Properties grid Validation behaviour Build installer for deployment F5 Generate Build Launch VS Exp on debugging solution Debug Result of Running Wizard Example: Using the new DSL A More Complex Example Class Designer and two-way code synch Summary Distributed system challenges & DSI Distributed System Designers Team Architect as a platform Questions Ajay Sudan