Tackling the Challenges of Global Enterprise Development
The Global Enterprise
Software development has become a global enterprise with development teams spread around the world. I recently read an interesting article on the challenges posed to software architects and team leads to ensure the success of such an undertaking. The article asserted that the benefit of spreading development around the world is a less costly, but more responsive and nimble workforce that takes advantage of local resources and skills. The greatest challenge, it continued, is communication between different teams, especially the visibility of the contributions of each group.
The authors advised to build coherent and collocated teams that focus on one particular feature or set of functionalities and whose members are close to each other—in the same office or even the same room. By splitting projects across distributed teams, the single ownership of a product is lost. Instead, developers in many different places concurrently enhance and improve the same product.
Achieving this, the article concluded, requires effective tooling that enhances the visibility and the near simultaneous availability of changes across the global teams. Perforce, in my experience, is such a tool. It brings with it a rich and growing set of solutions to tackle the challenges of global multisite development.
Perforce is a software version management system for storing both source code and binary assets. It is used by hundreds and sometimes thousands of concurrent users to store and version an astonishingly large amount of files.
Making these files available to a global workforce as quickly as possible brings its own challenges, not least L. Peter Deutsch’s observations on bandwidth and latency.
Perforce's multisite architecture enables scalability, while leveraging a single storage environment to avoid the pitfalls of conflicting concurrent updates. To speed up the delivery of content to remote sites, Perforce uses a combination of proxy and replication techniques to bring files and metadata close to the consumers.
Perforce offers various solutions to improve the performance and scalability of your version management platform in distributed environments via server configurations such as Proxy, Replicas, and Edge services.
Perforce proxies cache accessed files in local storage. This greatly speeds up access times for remote teams, even without pre-populating the cache, since only the first person to sync a file experiences a delay.
Moreover, proxies consume considerably fewer resources than a Perforce Server—only requested files are cached. Proxies hold no metadata and can be quickly (re-)created if required.
Proxies have been successfully used by the majority of our customers to speed up access for remote sites. They are also very useful in a LAN to reduce network traffic when accessing large binaries stored in the Perforce Server.
Perforce replicas store part or all of a Perforce Server, depending on the use cases. The replica polls the main server and is updated asynchronously, since it’s costly to update large files across a WAN, and a synchronous update to multiple remotes site would delay the submission of these files.
Perforce replicas can be configured both as read-only repositories for high availability/disaster recovery and reporting purposes, as well as read-write repositories to support remote sites.
In addition, replicas support filtering of the depot so that only the required depot files are fetched to the remote sites, thereby minimizing the bandwidth usage on the network. If a clear separation of depot paths is not possible, replicas can also be configured to only transfer new depot files only when they’re requested, thereby creating much faster proxies that further reduce the bandwidth usage on the network and utilization on the main server.
Edge and Commit Services
New in the Perforce 2013.2 release, Edge and Commit services will move the majority of the burden of processing changes out to servers local to remote sites, thereby drastically reducing traffic between remote services and the central commit service. Please read Bryan Pendleton’s excellent blog post, 'The Distributed Perforce Service', for more information.
For many years now, Perforce has been used in global multisite development environments by an impressive array of customers both large and small. Given the size and content of the repositories, physics can place constraints on making this data available to all teams worldwide. Perforce has offered a wide variety of solutions to meet the unique challenges our customers face, and is continuing to do so.
Please check out the 2013.2 release of the Perforce Versioning Engine and speak to our technical support and professional services to help you meet your requirements for global multisite development.