ShvetsGroup archive

ShvetsGroup Infrastructure: development environment and servers

· All articles

Читать по-русски

iStock_000011296304XSmall.jpg
Every major development team eventually faces the need for standardized development environments. We classify them in the following way:

Office Infrastructure

Each developer’s workplace is presented by a medium-performance computer (Acer Aspire X3200) used for running office software, such as heavy Eclipse type IDE, Net Beans, etc. The developers can use either Windows (in most cases), or Linux OS.

At the very beginning of our work, every developer ran a local web server on their own computer. But over time this situation stopped being suitable for the following reasons:

We solved all these problems by purchasing a powerful server for the office with a Web server installed and running on it together with local developers’ sandboxes they use working online.

How it all works:

In my experience, this system can be effectively configured even if you don’t consider yourself a super admin and only know how to browse files in Linux. Of course, with Google’s help.

External Development Servers

Office system perfectly handles the team’s in-house daily development tasks. However, some problems still remain unsolved:

Amazon Cloud

This issue had been in the air right until we first learned about Amazon EC2 cloud services. In a nutshell, these services allow you to create servers of various configurations paying only for how much you’ve spent (for example, 3 hours + 3 gigabytes of server network traffic) in different regions of the world (USA, Europe, Singapore) . Therefore, the main thing to understand about the Amazon is that it allows to rent 20 servers with 60 gigabytes of memory for a couple of hours every day and the whole process takes no more than 5 minutes. Classic hosting won’t let you do things like that.

In addition, there are hundreds of "snapshots" of ready-configured systems that you can use with the hardware you’ve just rented. Moreover, you are able to create such snapshots by yourself and use them in the future (for example, if you have a large application that requires a lot of servers).

Testing development servers

In general, our testing servers are built like the office ones - there is a server domain, and mod_vhost_alias allows accessing random projects, and the path to these instances will look like the third or fourth level domain (eg, http://superproject.test.shvetsgroup.com/). At the configuration level, the difference is that the projects, not the developers have the "primary" role.

A lot of times I have seen companies giving every developer route access to the development server and the repositories. Many of you know the consequences this may lead to, especially when unverified new remote workers and teams are involved. For us this has always been and still is a special aspect, that’s why when it comes to testing/development servers, we strictly separate access rights to server projects, both from outside and by the developers. None of the developers has access to "neighboring" projects on the server, and the Web-based access is closed by http authorization (this also protects against unwanted indexing of the project’s test version by search engines).

In rare cases, when the project requires a special testing environment, we create a separate server with the necessary configuration on the Amazon. Moreover, after the active testing and development are completed, we create a "snapshot" of the server and shut it down until the next round of testing.

Organizational Software Server

Another Amazon server hosting SVN-repositories, bugtracker and documentation system (for details, see the second part).

Local servers of remote developers

Obviously, there’s no way we can influence the hardware/software used on "that side", however, for the time we’ve been working we compiled a list of developer’s must haves necessary for the effective work: