On my personal and open source projects I work for years with GIT. Some months ago my employer switched from CVS to IBM RTC (Rational Team Concert). We immediately got performance issues. I explain here why I think that RTC will never be as fast as GIT and why you should not use IBM RTC.
In order to scale a service you can do two things: Scale up and scale out. Scaling up means putting more memory and CPU to your single machine and hope that it gets faster. Scaling out means using more machines and distribute work and load. Scaling up is easier to achieve, as it has less impact to the architecture of a piece of software than scaling out. Especially for a software like RTC which is designed as a single process service.
While RTC stores all the data in one single database, it can only scale up. GIT is designed to work entirely without an online server. Every client has enough data to do most of the tasks locally. Putting it this way GIT is able to massively scale out.
Why RTC is lame
Lets have a look at the most common tasks people do with an SCM. This will illustrate how much the RTC Server is stressed with superfluous requests.
Most executed tasks
- Viewing file history (1)
- Comparing versions (2)
- Committing local changes (3)
Less executed tasks
- Pulling the changes from others (4)
- Merging (5)
- Publishing my changes to others (6)
Comparing RTC and GIT
With RTC all those tasks need a running and connected Server. So you can not even see the commit history of a file without RTC online. In GIT you only need a remote repository if you want to get the changes from others or publish your owns. And this is reasonable. There is no need for communication for all other tasks. Because everything else is static and can be distributed.
I am really confused why IBM chose such a design. It implies lots of requests to the server. They have to deal with massive parallelisation problems. At the end they will never catch up to a performance of git or mercurial. Also think about the impact of server maintenance or outages. With RTC it hurts to reboot the server. Developers don’t like it if you take away their SCM.
If you choose RTC as your SCM you should be aware of this facts. If you only have about 50 developers you will not run into performance issues. For 200 or more developers you probably won’t like it.
Many developers are looking for a way to migrate from RTC to GIT. Now there is a project on GitHub which can do this for you. It is still under construction but help is appreciated:
The icons in this post are from thenounproject.com:
- Server by aLf from The Noun Project
- Laptop by Edward Boatman from The Noun Project