At WANdisco, we firmly believe that Subversion is a commercial quality version control system that’s capable of supporting even the largest enterprise organizations. Subversion has plenty of features for large scale implementations, including:
1) Enhanced software management capabilities.
2) Atomic commits – these allow enterprise users to track and audit changes.
3) Web technologies – Subversion is much easier to use in an enterprise environment than some competing solutions, as it uses web technologies.
4) Established professional support options.
5) Licensing – Subversion is licensed under the commercial-friendly Apache license.
Common Challenges in Enterprise-Enabling Subversion
…But it isn’t all plain sailing! There are some challenges enterprises commonly face when adopting Subversion, particularly as globally distributed working environments have become standard practice. Many of these problems can be traced back to Subversion’s central server model, which creates a single point of failure. This can cause a number of problems:
- when the remote sites and the central server are in different time zones, it can take the administrator at the central server site until the next business day (from the remote site’s perspective) to restore access.
- if there is a transient WAN connection failure between a remote client and the server, the entire commit has to be resubmitted, with a central server implementation.
- loss of productivity when the central server fails, and users at the remote sites do not have immediate access to the latest code.
- slow networks can encourage developers at remote sites to checkout and/or commit infrequently. This increases the chances that when a developer performs a commit, they will have to go back and deal with other peoples’ changes; a potentially time-consuming process.
- lots of unnecessary read operations taking place over the WAN, as users at remote sites repeatedly perform read operations to access the same files. This degrades the performance of the central Subversion server and the network.
- every remote request entails a WAN penalty. Although Subversion clients only send changes to the central server when modifications to existing source code files are committed, when a new file is committed or an existing file is checked out, the entire file is sent over the WAN.
- when Subversion is implemented with an Apache Web Server as a front-end, and the WebDAV HTTP protocol is used, the WAN penalty can be significant. This is particularly true of commits that consist of a large number of files.
So, how can you overcome these common headaches, and get Subversion ready for the enterprise?
Clustering technology allows multiple computers to be bundled into one network. This is useful to ensure that mission-critical applications, services and resources are as highly-available and fault-tolerant as possible, by removing that single point of failure. There are three major benefits to implementing clustering technology in Subversion:
1) Ensures business continuity by preventing any downtime or data loss, and achieving 24-by-7 availability.
2) Improve performance by off-loading continuous integration builds to a peer server. From a scalability standpoint, clustering means that organizations have the appropriate infrastructure in place to support new users, without sacrificing performance.
3) In the event of a server failure, clustering allows applications and services to automatically failover to another node without affecting the end users.
With SVN Clustering, WANdisco provides Active/Active Replication technology, with intelligent load balancing to guarantee that servers stay continuously in sync over both LAN and WAN networks. SVN Clustering achieves this synchronization by automatically triggering replication whenever a user connected to any server, at any location in the cluster, issues a write command. This replication process is so efficient that even over a WAN, the time required to complete transactions and coordination with all the servers in the cluster, is brief enough that the user experiences this happening at a local area speed. SVN Clustering’s load balancing also optimizes performance by routing users’ requests to the servers with the most available capacity.
Peer-to-peer architecture is used to partition tasks and workloads among ‘peers,’ which are equal participants in an application. With a peer-to-peer architecture, all nodes act as both server and client; there is no need for a dedicated server and no single point of failure. The distributed nature of peer-to-peer networks increases resilience in the event of failures, by replicating data over multiple peers.
WANdisco offer peer-to-peer architecture for Subversion, through our Subversion MultiSite product. With Subversion MultiSite, all of Subversion’s central servers are kept fully synchronized, thanks to an instance of WANdisco’s secret sauce – essentially a replicator that is installed on every Subversion server. These replicators work cooperatively to ensure transactional consistency, effectively becoming mirrors of one another. Replication is triggered automatically whenever a user connected to any server issues a write command, and the commit is then propagated out to any other sites, ensuring that distributed repositories are kept in sync. The WANdisco replicator is implemented as a transparent network proxy for each site’s local Subversion server. It’s normally installed on the same server as Subversion, or Apache at each site, so no additional hardware is required.