310 likes | 436 Views
Integration of Version Control and Code Migration Processes. JA-SIG - December 7, 2004 - New Orleans, LA Jim Thompson Division of Information Technology University of Wisconsin – Madison https://mywebspace.wisc.edu/jfthomps/vc. University of Wisconsin - Madison.
E N D
Integration of Version Control and Code Migration Processes JA-SIG - December 7, 2004 - New Orleans, LA Jim Thompson Division of Information Technology University of Wisconsin – Madison https://mywebspace.wisc.edu/jfthomps/vc
University of Wisconsin - Madison • public land-grant university (est. 1848) • home of the Badgers • Big Ten conference (11 with Penn State) • over 40,000 students • research expenditures • second in nation among public universities • third in nation among all universities • Madison is the capital of Wisconsin JA-SIG 12/7/2004
My work group • part of Division of Information Technology • we design, build, acquire, install and support Internet infrastructure applications (a.k.a. upper middleware) • E-mail • Calendar • My WebSpace • Portal JA-SIG 12/7/2004
Today’s presentation • Some background info about our portal • How we use CVS, tags and scripts • How tags and scripts work with our portal • Methods can work for other applications • Samples from a document that tells how • Additional tags for our new portal • Some plans for tracking conversion • Maybe some of this can work for you JA-SIG 12/7/2004
My UW-Madison (our portal) • http://my.wisc.edu provides access to • E-mail • Calendar • My WebSpace • Enrollment • Financial Aid • Classes on the web (Learn@UW & WebCT) • Course Resources • Grades (entry and review) • Guest Accounts (demo Annie Student & Andi Advisor) JA-SIG 12/7/2004
Some My UW-Madison statistics • September 2003 – over 1.3 million logins • Over a million logins/month thru May 2004 • September 2004 (new usage records) • Over 1.85 million logins • By 49,900+ users • September 2, 2004 (first day of instruction) • 85,739 logins by 29,676 users • About 6,000 users over lunch hour • Upped max Apache threads from 300 to 450 JA-SIG 12/7/2004
My UW–Madison - some lingo • MUM = My UW–Madison • MUMMI = module inventory • MUMMR = migration request • MUMsters = developers • mumdev = development/test box (Solaris) • mumweb1,2 = web servers (Linux) • mumapp3,4 = app servers (Solaris) JA-SIG 12/7/2004
MUM Service Goals • 24x7 availability (but not all connected systems are always up) • Handle peak traffic without slowing down • Good response time from called servers • Minimize outages (frequency & duration) • Weekly updates of production JA-SIG 12/7/2004
Production Updates • All portal code is on our servers • Prefer weekly releases • Prepare a staged directory (Monday PM) • Deploy early Tuesday (between 5 & 7 AM) • Prefer “rolling restarts” to avoid outages JA-SIG 12/7/2004
The road to production • Files migrate thru 5 environments • Development • Test • QA • Production • Demo • 3,000+ files in each environment JA-SIG 12/7/2004
Overview of environments • Development • the Wild West • CVS available, but not required • Test • Files must flow thru CVS to get to test • Developers apply “test” tag in CVS • Updates Mon-Fri 4:15 AM and “right now” • All test migrations stop/restart test JA-SIG 12/7/2004
Overview of environments • QA • Files flow thru CVS • Developers request migration via MUMMR • Run load tests here • Production • Files flow thru CVS • Demo • Files flow thru CVS • Nearly as important as production JA-SIG 12/7/2004
Files flow thru CVS • Question: How do we control the flow? • How to mark a file for promotion? • How to know what files got promoted… • Which version? • Where? • When? • Answer: CVS tags • Drive the process • Indicate what’s where, since when JA-SIG 12/7/2004
Some CVS tags JA-SIG 12/7/2004
CVS tag maintenance • Who maintains which tags? • Developers apply and move test tags • MUM admins apply qa, prod, demo tags • Scripts apply and move in and outa tags • Scripts create history tags • What’s the purpose of the outa tags? • Track deletes as well as adds and changes • Encourage developers to clean up • Avoid permanent loss of old code (in Attic) JA-SIG 12/7/2004
Why a MUMMR? • Reproducible instructions • QA is where we test the MUMMR • Complete list of files? • Clear instructions? • If we find problems, fix and resubmit MUMMR • Increase odds of successful production move • Documentation • Tell Help Desk and others what’s coming JA-SIG 12/7/2004
Files flow JA-SIG 12/7/2004
CVS tags - Who cares? • Developers • Where’s my code? • Project Managers • Which version was installed where and when? • Migration Controllers • What’s scheduled to move? • Everyone • What’s the difference between X and Y? JA-SIG 12/7/2004
How comparing tags can help • Preparing to update 100+ production files • Apply prod tags according to MUMMR • Refresh export of files tagged prod • Compare inqa and prod • If all files are moving, there should be no diffs • All differences should be examined • Partial migrations are opportunities for problems • Developers can use same technique • Compare intest and inqa to get MUMMR right JA-SIG 12/7/2004
That’s the main story, but… • Environmental files • permanently branched in CVS (never merged) • 16 branches for properties.txt • convert: Tomcat to WebSphere to WebLogic • sometimes had 8+ active environments • Sometimes had multi-flavored regular tags • wastest, testwls, wasprod, prodwls, etc. • always kept test tag for current • normalized tags after conversion to WebLogic JA-SIG 12/7/2004
Some environmental branches • Current • my-dev35-wl-mumdev • my-test35-wl-mumdev • my-qa35-wl-qa • my-prod35-wl-prod • my-demo35-wl-prod • Former • bob-marley (ran on a PC) • my-spheredev-mumdev JA-SIG 12/7/2004
Controls in CVS • Regular application files • tag changes limited via CVS filter (taginfo) • Environmental files • anyone can grab a branch • commits trigger e-mail notice to MUM admins • commits on dev or test branches are OK • commits on other branches, if not by MUM admins, may cause questions JA-SIG 12/7/2004
Using this stuff elsewhere • We built a similar system for a COBOL app • CVS repository and app on AIX • 5 files in production app directory • Clean A-B-C design yields easy scripts • A-B-C = separation of App, Bin, Config files • Contents of document aimed at 3 audiences • Managers (General Overview ~ 17 pages) • Designers (Design Decisions ~ 5 pages) • Implementers (Details & Example Scripts ~ 30 pages) JA-SIG 12/7/2004
Samples from our document • Our CVS taginfo filter calls tagcheck.pl • tagcheck.pl lets admins change any tag • How do we know tagcheck.pl is working? • see S.220 for test plan • brief primer on basics of CVS - G.040 • blank MUMMR – X.110 • http://hubcap.doit.wisc.edu/~jft/intvc JA-SIG 12/7/2004
Moving to uPortal • What will change and what won’t? • Good bye, Makefiles… Hello, ant • Basic CVS tags and processes will continue • Change from shell scripts to build.xml • Call cvs-logntag.pl from build.xml • Some new tags for uPortal framework • Some tags to help track conversion JA-SIG 12/7/2004
CVS tags for uPortal framework • Keep vendor files on vendor branch • Separate vendor branch for each vendor • Keep our local modifications on trunk • CVS tags to identify • Each vendor release • Our internal testing of each release • Our internal release for each environment • https://mywebspace.wisc.edu/jfthomps/vc/CVS_up.html JA-SIG 12/7/2004
Tracking uPortal conversion • Conversion will take months • Changes to current portal not likely to stop • How to determine conversion status • Modules (probably via MUMMI) • Files (via anecdotal CVS “up” tags in old repo) • https://mywebspace.wisc.edu/jfthomps/vc/Tracking_conversion_progress.html • Reports posted on web each Wednesday JA-SIG 12/7/2004
Can this work other places? • It depends… • Management commitment • Compatible design (A-B-C) - see D.030 • Flow control (adjust as you wish) • Cautions D.080S.250-260 and checks S.350 • We’ve seen optional Version Control • See M.030 • If side doors are open, they will be used JA-SIG 12/7/2004
Questions ??? “Prediction is difficult, especially about the future” – Yogi Berra JA-SIG 12/7/2004