views:

176

answers:

3

Hi, how do you go about migrating your (large, important, well-tested) application to a new Linux distribution?

Did you do so recently, if so, how did you overcome the problems of large numbers of upgraded components with changed behaviour? How did your build system cope with the overlap when you had to support old and new version? Did you find performance regressions (or improvements) and how thoroughly did you test performance?

Or was it totally easy and none of these things caused any headaches at all?

+1  A: 

If by "well-tested", you mean "has a decent test suite", it's not that bad. Get a test install of the new distro. Configure (or have your admins configure) to suit.

Build your app. Run the test suite. Fix problems -- depending on your overall dev model, you may need to fix in a way that's cross-compatible with both old and new platforms, or you may decide to make a new branch for the new platform and focus all activity there.

Once you have a build that runs and passes your functional tests, you can start looking at performance.

Generally speaking, IME, as long as you're sticking to published interfaces, things are cross-distribution compatible. You may find some strange performance corner-cases; you may not. Until you try, you won't know.

genehack
Test suites are all very well for applications which have been built up from the ground with TDD, and lend themselves to automated testing, but some don't (and some are so large that they have a mixture of components which are easy to test and difficult).
MarkR
Agreed, that's why I said "if". If you don't have a strong test suite to exercise the application, things are a bit little bit harder, primarily because it's harder to be completely confident that something isn't going to pop up 75% of the way through the migration...
genehack
... but as I said, generally, in my experience (lead sysadmin for a 200+ seat dev group that took many large c++ projects from Slackware -> SLES -> CentOS), things generally go pretty smoothly, as long as you've been coloring within the lines of the APIs you're using.
genehack
+1  A: 

Treat it like upgrading any component, third-party or otherwise. Change as little as possible, and test it at each step.

You can come at this from two angles.

1) Kernel first, then libraries: Bring as much possible with you to start out with. Compile your libraries from source if needed. You don't need to replace them on the new system, just ensure that your application continues to use the old ones (e.g. /usr/local/lib vs. /usr/lib). Then upgrade your application / libraries to the version supported by the distro. Can be problematic and hard to troubleshoot if your libraries break.

2) Libraries first, then kernel: Backport the new toolchain and libraries to the old distro, one at a time. May have problems if the new libraries rely on bleeding-edge features.

Also, don't underestimate changes to your build toolchain / interpreter as well. Treat these tools as program dependencies, just like the libraries you use.

HUAGHAGUAH
My distribution ships with a kernel and many libraries; we can't upgrade them selectively because that's not supported (or sane) configuration. Toolchain dependencies do cause an issue but we try to ensure that our build boxes have a very consistent environment.
MarkR
A: 

Our software is mainly built around a central Java core, and scripts that are either bash or perl.

The production and test servers run on Ubuntu, but some developper's machines run Fedora (mine, for instance). So any distro/release specific problem is generally addressed well before pre-release testing (well, as if we had any release system anyway ;) ).

We recently upgraded from 6.10 to 8.10 (which should have been a pretty big gap, I have been told), without any problem or any noticeable difference. Same thing when I upgraded my Fedora from 8 to 10 (except for some multicast-related quirks, that manifested themselves pretty early).

I guess maintaining a working version of your software on two major distros helps a lot in this case, but I would think the problems you should run into when upgrading should be minor.

Varkhan