Why IBM RTC will never scale like GIT


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.

Scaling strategies

ScaleUpIn 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.ScaleOut

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.RTCvsGIT

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.

Way out

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:

https://github.com/WtfJoke/rtc2git

Credits

The icons in this post are from thenounproject.com:

  • Server by aLf from The Noun Project
  • Laptop by Edward Boatman from The Noun Project
Advertisements

One comment

  1. ohumbel · August 31, 2015

    The way out URL is now: https://github.com/rtcTo/rtc2git

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

w

Connecting to %s