It is not a secret to anyone that for the well-coordinated work of the team, especially in projects managed according to the Agile methodology, the effective exchange of information between the participants is important. To ensure that information flows are not destroyed by the human factor, standard information management procedures are automated. This article describes an example of the technical infrastructure used by the employees of Creative Media LLC when developing Web projects on the Java platform, for example, in the project of the social network
Campus.ru .
In the first part of this review I will list the tools we use, and in the second I will briefly describe the meaning of their integration with each other.
So we use:
•
Eclipse Ganymede for Java Developers - IDE for development.
• Plugins for Eclipse:
o
Run-Jetty-Run plugin for debugging the launch of a web application in the local Jetty container inside Eclipse.
o
TestNG plugin for running automated unit tests.
o
Aptana Studio for convenient work with HTML, CSS, JavaScript
o
MDT for drawing UML diagrams
o
Subclipse plugin for integration with the Subversion version control system.
o
Mylyn plugin for integration with the Redmine bug tracking system.
o
M2 plugin for integration with the Maven build system.
•
Maven 2 module dependency monitoring system, project assembly and deployment.
•
Nexus local Maven repository server. Used to store local Maven artifacts, and as a proxy server for local storage of remote Maven artifacts. Significantly reduces the load time of remote artifacts by all team members, and protects against the inaccessibility of external repositories.
•
Subversion version control system for project source code. Work with the source code is organized in accordance with the Agile-methodology (for more details, see here
www.infoq.com/articles/agile-version-control ).
•
Team City Continuous Integration system for automatic builds of the project and running automatic tests, after each change of code in Subversion.
•
Redmine task and defect management system in the project. It also has a built-in Wiki, which we actively use to document important architectural solutions, requirements and other useful information. Since we use the Scrum methodology, a
Redmine plugin that draws a burndown diagram has proved very useful.
•
JMeter tool for automated load testing applications.
•
Selenium IDE tool for automated functional testing of applications.
• Email, ICQ, Skype, phones
This set of products allows the project to be less dependent on the human factor, and allows you to ensure the quality of the project code at the proper level. As shown in the figure below, most products are integrated with each other, providing even greater efficiency to this infrastructure solution.
Integration of products with each other allows you to achieve the desired result in fewer actions and at the same time do not forget anything, namely:
• With the help of the M2 plug-in, operations for updating libraries, building and deploying an application can be performed without leaving the development environment.
• Subclipse plugin allows you to manage source code in Subversion without leaving the development environment.
• When changes are made to the code stored in Subversion, the Mylyn plugin can automatically transfer tasks to Redmine to the desired status based on the comment entered in the Subclipse plugin. About the integration of Subversive and Mylyn, see the
documentation .
• In turn, the Burndown plugin for Redmine automatically builds a burndown chart, based on the information about the tasks that were closed in Redmine.
• After making changes to Subversion, the Team City application automatically runs Maven build scripts that build, deploy the product on a test server, and automate its testing using the TestNG and Selenium utilities. As a result of these actions, all team members receive an email notification.

')
To ensure the adequacy of testing, the configuration of the industrial servers was reproduced on the test server by configuring several VmWare virtual machines.
It is important to mention data integrity. On the server where Subversion, Redmine, Nexus and Team City are deployed, all data is stored on mirrored disks (Raid 1), as well as twice a day, the information is archived and copied to the NAS.
To provide the possibility of remote work, remote access to the entire infrastructure is possible through OpenVPN.
This infrastructure has already proven its effectiveness, however, we are not resting on our laurels, and are looking for new ways to improve. For example, now we are looking towards the
GIT version control system in the hope that the merging of the brunch in it will be more friendly.
And I want to finish the review with a philosophical thought: no matter how sophisticated the tools you use, they will not save the project, because, as you know, cadres decide everything. Firstly, the project needs a professional team, secondly, an effective methodology and established processes, and thirdly, convenient tools that automate these processes and make a professional team an Effective Professional Team.
Thanks for attention! It would be great if someone also shared their experiences in this area.