130 likes | 261 Views
Agile Software Distribution. Session held by:. René Steg Steg IT-Engineering, Zurich (Switzerland). Why do I need „Agile Software Distribution“?. Because you may have hundreds of servers with a high number of applications running on these servers have distributed applications in place
E N D
Agile Software Distribution Session held by: René Steg Steg IT-Engineering, Zurich (Switzerland)
Why do I need „Agile Software Distribution“? Because you may • have hundreds of servers with a high number of applications running on these servers • have distributed applications in place • allow manual changes on the runtime configuration of the application after „installation“ • not have a link between Software Configuration Management (SCM) and Software Distribution (SWD) • document the installation-steps in plain-text ... which makes the question: „What Release of my application is running on which server ?“ very difficult to answer (if it can be answered at all)
1st Step: Reorganize the way you do SWD • Require referential builds for all of your applications • Setup a team, which supports the software developers / engineers in creating the installation packages • Store your server metadata in a repository, which can be easily accessed and queried • Define and implement standards, how the applications have to be installed on your servers (e. g. applications must be delivered in Solaris Packaging Format)
Development Software Distribution Test / Runtime Referential Build Build Installations-Package Capacity Management Distribution / Installation Source, Executables. / Golden Copy Executables, Install-Param. / Golden Copy/2 Installations-Package Silver Copy Server-MetadataSilver Copy Silver Copy Installations-PackageServer-MetadataInstallation-Logs Repository Software Distribution Process
Referential Build Build Installation-Package Capacity Management Distribution / Installation Developer Repository GoldenCopy contains Sourcesfrom Baseline Source /Executable Source-Code Executables Compile / Build Check-in / Golden Copy Referential Build
Referential Build Build Installations-Package Capacity Management Distribution / Installation Installation-Parameters Developer Packaging-Specialist is derived Repository GoldenCopy GoldenCopy/2 Golden Copy/2 contains contains Source /Executable Executable /Install.-Parm. Build Installation-Packages (Part 1)
Referential Build Build Installations-Package Capacity Management Distribution / Installation Developer Packaging-Specialist is derived is derived Repository GoldenCopy GoldenCopy/2 SilverCopy contains contains contains Source /Executable Executable /Install.-Parm. Package Runtime-Code Installation-Parameters, Executables Build Packages Check-in / Silver Copy Install-Packages Build Installation-Packages (Part 2)
Referential Build Build Installations-Package Capacity Management Distribution / Installation Server-Metadata Server is assigned Environment Manager Developer Environment Manager is derived is derived Repository GoldenCopy GoldenCopy/2 SilverCopy Server – ProductAssignment contains contains contains Source /Executable Executable /Install.-Parm. Package Capacity Management
Referential Build Build Installations-Package Capacity Management Distribution / Installation Distribution-Order Server is assigned Environment Manager Distribution Manager is derived is derived Repository GoldenCopy GoldenCopy/2 SilverCopy contains contains contains Source /Executable Executable /Install.-Parm. Package Package Server is installed Installation-Status Server Server Distribution / Installation
Automating the Processes • Automate the Build-Process • Using a SCM-Tool, this task will be a lot easier • Always use a Baseline for the automatic Builds (else it won‘t be referential!) • Automate the Package-Creation • Check, which software-products in your company may be installed in the same way and create the packages for these application automatically • Version the installation-parameters (these are part of the software configuration anyway) • Scan Hardware-Data automatically • Try to minimize manual data-entry for hardware, to keep the hardware-inventory up-to-date and store these data in a repository as well • Automate the Distribution- and Installation-Processes • Try to eliminate any manual interaction for a distribution / installation • De-Installation must also be automated • Keep the installation fast, using a delta-distribution mechanism
And what‘s the benefit? • Software Distribution gets agile, even with hundreds of servers in a large enterprise • The question: „What Release of my application is running on which server ?“, may be answered with some clicks using a web-report • The same application-release is always installed the same way • Back-out scenarios are easier to implement • The distribution-process is a one-button-only-click, if the metadata has been pre-defined once in the repository and therefore the Distribution Manager does not need to know the installation sequence of the application • CMMI-Level 3 may be reachable, because to implement and automate Software Distribution successfully, it is essential, that the processes are: • Documented • Standardized • Repeatable
Recommendations • Define standards, policies and naming conventions (Programs love conventions!) • Reduce special-engineering and minimize the number of different middleware and operating-systems on your servers (programs hate exceptions! And so do your programmers) • Use a repository which keeps your metadata of your distribution activities together • Use the automated distribution mechanism already in the testing phases, this way the installation packages are also tested in early stages • Use the SWD system for the entire software-stack of your server (operating system, middleware and business-application) • Link the source (Golden Copy) and the installation-unit (Silver Copy), so you know immediately, which source to change in an error-case (Best Practice: there is a link between source-code, derived object and installation package) • Define an emergency-scenario, in case the automatic SWD is not available • Do not allow ANY manual changes on the servers (exception: emergency-scenario) • Performance: If you want your developers to use the SWD in early stages, be aware, that the process must be fast (data model, delta-deploy etc.) • Reports are important, not only for your management, but also for other roles involved in the entire application life-cycle.
Thanks for your attention and have a nice day!