A Simple Summary of Tools Used in Our R&D Team
On 27th May, this year, 2017, I welcomed another member of our research and development department. Since then, we became a 2 developers group (up to now, 20170817, we are still 2 although with someone came and went away). I, therefor became the one who need to think more about cooperation both in the scope of inner-department and between-department.
As one popular saying goes, "outstanding programmers spend more than 1/3 of their time to build tools they use". Although we are not as outstanding as those outstanding programmers, we are in the good times where there are a lot great tools.
The following are the rough list that we use:
- Git, which is for code version control
- Nginx, which is the web and proxy server with supports for protocol (HTTPS vs HTTP), domain name and url routing configuration
- Docker, which is for the portable development environment, before it we just use different separate configurations for different machines.
- 3 Linux 16.04 servers - test, backup + supplement, main
- 3 steps deploy strategy for main website - test, pre-deploy and deploy (and there is also one usable backup working site on backup server for quick roll back)
rsyncto upload and download files including website code files and also configuration files
notify watchis used to sync files between servers
slavedb strategy for data storage, read from slave and write to master [planed not implemented]
- strict authorization rule for production server, disabled SSH password auth and enable public key auth
- safe operation account on production server, using non-
sudo-er accounts to avoid mistakenly risky operations
For writing documents, we adopted lightweight MarkDown syntax with GitBook to organize and compile to shareable html files.
Git Repositories on VPS for code version control
- Git is used with SSH to create repositories on internal server.
- Nice git repository address is created.
Docker to Freeze website environment
Embarrassing situation is that our code base project employs quite a lot symbolic links which only works on *nix platforms while I use a MacBook and my colleague uses a Windows PC.
For nearly about 3 month, my colleague uses a Virtual Machine inside VMware for development. And it seems that finding a way to bind host folder to Virtual Machine is not that easy so my colleague still use the conventional ftp to upload updated website files from host machine to virtual machine. However, this results sometimes problems, such as legacy version files in virtual machine which works wrong. Each time when I updated our development environment configuration, my colleague must do the same change again.
Then, I realized it is the time when we employ Docker. For the sake of our current need and also be better prepared to welcome new members of our team.
Git Repositories with Push-to-Deploy Mechanism
These days, a lot of wonderful tool has already been here for web development co-operation. Our project manager adopts Axure for prototypes construction and our UI designer gradually adopts Sketch for ui design. Both of these two wonderful tools can export design files as html.
Personally, I love html files since they doesn't rely on specific platform or software. Any modern browser can render them and output nice looking documents.
So the only problem is how our project manager and ui designer could always provide the newest work to us developers! Yeah, for days before today, they usually export a whole bunch of files even though they just changed a little in one small area, and then they email the zipped file or send in an instant messaging group.
But we are R&D team, a better choice is take advantage of git push-to-deploy mechanism, which means we use git to track version changes and also when pushed to server side repository, files are also automatically deploy to web folder, just like Heroku. As developers, we can always check the newest state through one identical url link. And our manager and ui designer can always go back to their older work.
Re-composed on 20181121.
* cached version, generated at 2018-12-03 00:53:16 UTC.
Subscribe by RSS