Infrastructure Support Tools for Agile Java Project

    It’s no secret that for teamwork, especially in projects managed by the Agile methodology, an effective exchange of information between participants is important. In order to ensure that information flows are not destroyed by the human factor, standard information management procedures are automated. This article discusses an example of the technical infrastructure used by employees of Creative Media LLC when developing Web projects on the Java platform, for example, in the Campus.ru social network project .

    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 plug-in for debugging a Web application in a 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 code 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 2system for monitoring dependencies of modules, assembly and deployment of a project.
    Nexus local server Maven repository. Used to store local Maven artifacts, and as a proxy server for locally storing remote Maven artifacts. Significantly reduces the loading time of remote artifacts by all team members, and protects against the inaccessibility of external repositories.
    Subversion version control system of the 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 CityContinuous Integration system for automatic project builds and run automatic tests, after each code change in Subversion.
    Redmine system for managing tasks and defects in the project. It also has a built-in Wiki, which we actively use to document important architectural decisions, requirements, and other useful information. Since we use the Scrum methodology, the plugin for Redmine , which draws a Burndown diagram, turned out to be 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 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 for this infrastructure solution.
    Integration of products with each other allows you to achieve the desired result in fewer steps and do not forget anything, namely:
    • Using the M2 plugin, you can perform library upgrade, build and deploy applications without leaving the development environment.
    • Subclipse plug-in allows you to manage source code in Subversion without leaving the development environment.
    • When making changes to the code stored in Subversion, the Mylyn plugin can automatically translate tasks in Redmine into the desired status based on the comment entered in the Subclipse plugin. For the integration of Subversive and Mylyn, see the documentation
    • In turn, the Burndown plugin for Redmine automatically builds a burndown diagram based on information about tasks closed in Redmine.
    • After making changes to Subversion, Team City automatically runs Maven build scripts that build, deploy the product on a test server, and test it automatically using the TestNG and Selenium utilities. As a result of these actions, all team members receive an email notification.

    image

    To ensure the adequacy of testing, the configuration of industrial servers is reproduced on the test server by configuring several VmWare virtual machines.

    It is important to mention data security. On the server where Subversion, Redmine, Nexus and Team City are deployed, all data is stored on mirrored disks (Raid 1), and information is also archived and copied to the NAS twice a day.
    To enable 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 it. For example, now we look towards the version control system GITin the hope that merging brunches in it will be more friendly.

    And I want to end the review with a philosophical thought: no matter how advanced tools you use, they will not save the project, because, as you know, personnel decide everything. Firstly, the project needs a professional team, secondly, an effective methodology and set processes, and thirdly, convenient tools that automate these processes and make a professional team an Effective Professional Team.

    Thanks for attention! It will be great if someone also shares their experience in this area.

    Also popular now: