ideal deployment in .net world
DESCRIPTION
Presented on XP Days Kyiv 17.12.2011TRANSCRIPT
![Page 1: Ideal Deployment In .NET World](https://reader035.vdocuments.mx/reader035/viewer/2022062703/55526ceeb4c905d41d8b518d/html5/thumbnails/1.jpg)
Ideal
Dima Pasko
DeploymentIn .NET World
![Page 2: Ideal Deployment In .NET World](https://reader035.vdocuments.mx/reader035/viewer/2022062703/55526ceeb4c905d41d8b518d/html5/thumbnails/2.jpg)
Windows Phone
About Me
![Page 3: Ideal Deployment In .NET World](https://reader035.vdocuments.mx/reader035/viewer/2022062703/55526ceeb4c905d41d8b518d/html5/thumbnails/3.jpg)
Windows Phone
Introduction
![Page 4: Ideal Deployment In .NET World](https://reader035.vdocuments.mx/reader035/viewer/2022062703/55526ceeb4c905d41d8b518d/html5/thumbnails/4.jpg)
Windows Phone
Human beings make mistakes
![Page 5: Ideal Deployment In .NET World](https://reader035.vdocuments.mx/reader035/viewer/2022062703/55526ceeb4c905d41d8b518d/html5/thumbnails/5.jpg)
Windows Phone
We aren’t as accurate every time
![Page 6: Ideal Deployment In .NET World](https://reader035.vdocuments.mx/reader035/viewer/2022062703/55526ceeb4c905d41d8b518d/html5/thumbnails/6.jpg)
Windows Phone
Click to add picture
Machines don’t have this problem
![Page 7: Ideal Deployment In .NET World](https://reader035.vdocuments.mx/reader035/viewer/2022062703/55526ceeb4c905d41d8b518d/html5/thumbnails/7.jpg)
Windows Phone
They do the same thing every time
Click to add picture
They do the same thing every time
![Page 8: Ideal Deployment In .NET World](https://reader035.vdocuments.mx/reader035/viewer/2022062703/55526ceeb4c905d41d8b518d/html5/thumbnails/8.jpg)
What Do You Need?
New Code New Configuration New Database Schema New Static Files
![Page 9: Ideal Deployment In .NET World](https://reader035.vdocuments.mx/reader035/viewer/2022062703/55526ceeb4c905d41d8b518d/html5/thumbnails/9.jpg)
A Lot To Remember
Did you remember to upload ALL new files? Did you remember to update your DB? Did you remember to correct your config? Did you remember set permissions?
![Page 10: Ideal Deployment In .NET World](https://reader035.vdocuments.mx/reader035/viewer/2022062703/55526ceeb4c905d41d8b518d/html5/thumbnails/10.jpg)
Even Worse
Did you clear your caches? Did you delete that old file/plugin? In the upload process, was your configuration overwritten? Did you upload ALL the changed files? Do you have several environments?
![Page 11: Ideal Deployment In .NET World](https://reader035.vdocuments.mx/reader035/viewer/2022062703/55526ceeb4c905d41d8b518d/html5/thumbnails/11.jpg)
Windows Phone
Solution
![Page 12: Ideal Deployment In .NET World](https://reader035.vdocuments.mx/reader035/viewer/2022062703/55526ceeb4c905d41d8b518d/html5/thumbnails/12.jpg)
Automation!
Build scripts! We are programmers after all…
![Page 13: Ideal Deployment In .NET World](https://reader035.vdocuments.mx/reader035/viewer/2022062703/55526ceeb4c905d41d8b518d/html5/thumbnails/13.jpg)
What Is Automation? Automated deployment means a single command
Locks your live site Uploads changed files Clears caches and temporary files Updates the database schema Runs other cron tasks Unlocks your live site … Profit
![Page 14: Ideal Deployment In .NET World](https://reader035.vdocuments.mx/reader035/viewer/2022062703/55526ceeb4c905d41d8b518d/html5/thumbnails/14.jpg)
Why Do We Automate?
Deployment is tricky Repetition degrades quality
She sells sea shells by the sea shore
![Page 15: Ideal Deployment In .NET World](https://reader035.vdocuments.mx/reader035/viewer/2022062703/55526ceeb4c905d41d8b518d/html5/thumbnails/15.jpg)
When Is Automation Used?
All the time! Staging Live
Probably best to use it on your test/dev box too!
![Page 16: Ideal Deployment In .NET World](https://reader035.vdocuments.mx/reader035/viewer/2022062703/55526ceeb4c905d41d8b518d/html5/thumbnails/16.jpg)
Windows Phone
Basics
![Page 17: Ideal Deployment In .NET World](https://reader035.vdocuments.mx/reader035/viewer/2022062703/55526ceeb4c905d41d8b518d/html5/thumbnails/17.jpg)
Terms
Package(build) Solution != package
Environment(settings) Deployment
Rollout Go Live
![Page 18: Ideal Deployment In .NET World](https://reader035.vdocuments.mx/reader035/viewer/2022062703/55526ceeb4c905d41d8b518d/html5/thumbnails/18.jpg)
Principles
One-click deployment Process Everything fails Rollback
![Page 19: Ideal Deployment In .NET World](https://reader035.vdocuments.mx/reader035/viewer/2022062703/55526ceeb4c905d41d8b518d/html5/thumbnails/19.jpg)
Steps
Configuration Management Deployment Logic
Database Migration
![Page 20: Ideal Deployment In .NET World](https://reader035.vdocuments.mx/reader035/viewer/2022062703/55526ceeb4c905d41d8b518d/html5/thumbnails/20.jpg)
Windows Phone
Configuration Management
![Page 21: Ideal Deployment In .NET World](https://reader035.vdocuments.mx/reader035/viewer/2022062703/55526ceeb4c905d41d8b518d/html5/thumbnails/21.jpg)
Xml Configuration
XML, XPath, XSLT NConfig
https://github.com/Yegoroff/NConfig
![Page 22: Ideal Deployment In .NET World](https://reader035.vdocuments.mx/reader035/viewer/2022062703/55526ceeb4c905d41d8b518d/html5/thumbnails/22.jpg)
Web.Config Transformation
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
<appSettings><add key="article" value=“test"
xdt:Transform="Insert"/></appSettings>
</configuration>
![Page 23: Ideal Deployment In .NET World](https://reader035.vdocuments.mx/reader035/viewer/2022062703/55526ceeb4c905d41d8b518d/html5/thumbnails/23.jpg)
Windows Phone
Demo
![Page 24: Ideal Deployment In .NET World](https://reader035.vdocuments.mx/reader035/viewer/2022062703/55526ceeb4c905d41d8b518d/html5/thumbnails/24.jpg)
Windows Phone
Deployment Logic
![Page 25: Ideal Deployment In .NET World](https://reader035.vdocuments.mx/reader035/viewer/2022062703/55526ceeb4c905d41d8b518d/html5/thumbnails/25.jpg)
Power Shell
![Page 26: Ideal Deployment In .NET World](https://reader035.vdocuments.mx/reader035/viewer/2022062703/55526ceeb4c905d41d8b518d/html5/thumbnails/26.jpg)
PSakeTask default -Depends Build
Task Build -Depends Init,Clean,Compile{ "build"}
Task Compile -Depends Clean, Init { "compile"}
Task Clean -Depends Init { "clean"}
Task Init { "init"}%
https://github.com/psake/psake/
![Page 28: Ideal Deployment In .NET World](https://reader035.vdocuments.mx/reader035/viewer/2022062703/55526ceeb4c905d41d8b518d/html5/thumbnails/28.jpg)
![Page 29: Ideal Deployment In .NET World](https://reader035.vdocuments.mx/reader035/viewer/2022062703/55526ceeb4c905d41d8b518d/html5/thumbnails/29.jpg)
DropKick ~ deploy fluently
https://github.com/chucknorris/dropkick
![Page 30: Ideal Deployment In .NET World](https://reader035.vdocuments.mx/reader035/viewer/2022062703/55526ceeb4c905d41d8b518d/html5/thumbnails/30.jpg)
MSDeploy
![Page 31: Ideal Deployment In .NET World](https://reader035.vdocuments.mx/reader035/viewer/2022062703/55526ceeb4c905d41d8b518d/html5/thumbnails/31.jpg)
Windows Phone
Demo
![Page 32: Ideal Deployment In .NET World](https://reader035.vdocuments.mx/reader035/viewer/2022062703/55526ceeb4c905d41d8b518d/html5/thumbnails/32.jpg)
Windows Phone
DB Versioning
![Page 33: Ideal Deployment In .NET World](https://reader035.vdocuments.mx/reader035/viewer/2022062703/55526ceeb4c905d41d8b518d/html5/thumbnails/33.jpg)
Visual Studio Database Project
![Page 34: Ideal Deployment In .NET World](https://reader035.vdocuments.mx/reader035/viewer/2022062703/55526ceeb4c905d41d8b518d/html5/thumbnails/34.jpg)
Migrator.NETusing Migrator.Framework;using System.Data;
namespace DBMigration{ [Migration(20080401110402)] public class CreateUserTable_001 : Migration { public void Up() { Database.CreateTable("User", new Column("UserId", DbType.Int32, ColumnProperties.PrimaryKeyWithIdentity), new Column("Username", DbType.AnsiString, 25) ); }
public void Down() { Database.RemoveTable("User"); } }}
http://code.google.com/p/migratordotnet/
![Page 35: Ideal Deployment In .NET World](https://reader035.vdocuments.mx/reader035/viewer/2022062703/55526ceeb4c905d41d8b518d/html5/thumbnails/35.jpg)
Windows Phone
Demo
![Page 36: Ideal Deployment In .NET World](https://reader035.vdocuments.mx/reader035/viewer/2022062703/55526ceeb4c905d41d8b518d/html5/thumbnails/36.jpg)
Windows Phone
Release Management
![Page 37: Ideal Deployment In .NET World](https://reader035.vdocuments.mx/reader035/viewer/2022062703/55526ceeb4c905d41d8b518d/html5/thumbnails/37.jpg)
Release Management
Build Master http://inedo.com/
Octopus Deploy http://octopusdeploy.com/
Thought Works Studio – Go http://www.thoughtworks-studios.com/
![Page 38: Ideal Deployment In .NET World](https://reader035.vdocuments.mx/reader035/viewer/2022062703/55526ceeb4c905d41d8b518d/html5/thumbnails/38.jpg)
Windows Phone
One more thing
![Page 40: Ideal Deployment In .NET World](https://reader035.vdocuments.mx/reader035/viewer/2022062703/55526ceeb4c905d41d8b518d/html5/thumbnails/40.jpg)
App Harbor
Azure done right git push appharbor master
![Page 41: Ideal Deployment In .NET World](https://reader035.vdocuments.mx/reader035/viewer/2022062703/55526ceeb4c905d41d8b518d/html5/thumbnails/41.jpg)
thanks to• Maxim Tihobrazov• Mike Chaliy• Anatoliy Kolesnick• Anton Vnogradenko• Ivan Korneliuk• Aleksander Yegoroff• Andrey Kashcha• Andrey Kotenko• Andrey Kozhyn
31337