Management is more important than talent. Such a conclusion was made by a group of researchers who compared the results of two teams: the skill of developers in the first team was high but the management was poor. While the professional skills of the second team were on an average level, but their management was good. And what do you think? What team had the upper hand? The second!Our company occupied its niche in the e-commerce market in particular thanks to good management, efficient internal processes, the use of continuous integration, effective communication, timely detection and prediction of risks, and making the right decisions.I’ll tell you about the development cycle in our Magento team which is based on the use of Continuous integration schemes, as well as the approaches to work with GIT on our Magento projects.Scheme 1 shows a block diagram of the Magento project development cycle. There is the local Development server located in the office local network (LAN) and inaccessible outside (from the Internet) for security purposes. On this server, a standard operating environment (LAMP – Linux + Apache + MySQL + PHP) is deployed and set up with working copies of the project for each developer. Each working copy of the project is connected with its virtual host – so each developer works with his own copy of the project not interfering with the work of other developers. Another important objective to keep working copies on the shared DEV server is to relieve the local PCs. Each project copy is accompanied by a cloned GIT repository (or to be more precise, each working copy is taken from a GIT repository copy). The files of each working copy are available for the developer through the shared folders. For each working copy folder, the indexing is applied by the means of OS in order to improve the searching speed of the files.The developers save all the results of the work in the local GIT repository (commit), and send them to a remote central repository (push) – for example, stored in GitHub.Since in all our projects we use Continuous Integration approach, let’s explain it in more detail: in the upper right part of the scheme we see Jenkins server – it is responsible for the following essential components:
- automatic deployment of the latest project version on the DEV server from GIT branch DEV, turning on the Magento compilation, reindexing, JS / CSS files compiling, Unit and load tests modelling. This automatic runs on GitHub hooks and activates after each PUSH into GIT of the DEV branch.
- the numbering of project versions: 1.0.2, 1.0.3, 1.0.4 – release versions, 18.104.22.168 – hotfix version for this release (a 3-digit number for the release version, if the number is of 4-digits, then the last number is a number of a bug fix).
- deployment of the project latest version from the GIT branch master on the STAG (QA) server (ideally this server is a replica of the LIVE server), turning on the Magento compilation, reindexing, JS / CSS files compiling, Unit and load tests modelling. The deployment is applied by the system administrator in Jenkins Web panel.
- deployment of the project latest version from the GIT branch master on the PROD server.
Anatol Kravchenko,The lead of PHP team,NEKLO LLC