Tools for local development
Chema Oct. 30, 2018
Normally in the development of full stack solutions there are usually several execution environments. In most of the projects we apply a scheme of 3 environments: local, testing and production. Initially it is in local mode where the developers begin to give life in the project. Today we present the main tools that help us develop when we are in the local environment
Working in local
A development environment based on two environments for client / server solutions has already been implemented: development and production.
For the development environment was mounted on a VPS server (there was no "cloud" as such) and developers agreed to work in a "synchronized". The first version controls like CVS and then Subversion were then used.
This caused numerous conflicts when two or more programmers worked simultaneously on the same code area. This seems unlikely today, but it was common practice.
Today we have tools that allow us to work locally simulating to a large extent the functionalities and restrictions that we will find when our software is in the cloud.
Here is the list of the main utilities and software that we use for local work.
- Docker / Docker Compose
It happens that in the same machine a developer can be working on several projects at the same time. Each project has its own software configuration (Python 2 or Python 3, Django 1.11 or Django 2.1, ...). To treat this in projects based on Python, VirtualEnv was created. Another alternative was to create virtual machines with VMWare or Virtualbox.
But these solutions were not very flexible. Then Docker arrived with his containers to solve this. Each container behaves like a light virtual machine where you have an environment completely isolated from the host operating system.
With docker compose we can define a configuration for each environment so that containers are created and configured quickly and easily. It is undoubtedly the star tool for local work.
Version control with GIT is spread all over the planet. His concept of distributed repository has been key. Now we can have locally a copy of the repository totally foreign to a central server. When it is considered appropriate, you can upload the commits to a remote parent repository and do the integration from there.
There are situations where Docker does not arrive. If our host is a GNU / Linux system and we have to develop and test a solution for Windows, it is highly recommended to use VirtualBox and install a copy of Windows to work with it.
- Chrome Developer Tools
It is the Swiss army knife of the front-end development. It comes standard with Chrome and with each update many features are included. Includes tools to test even Progressive Web Apps. You can also add extensions for example to do accessibility audits or debug app made with Vue.
One of its main functionalities is to be able to debug websites that run on Android devices. In this way you can test in native that an app works correctly even if it is local (If you access the local network IP of the computer).
- SSL for localhost
Normally, for local development, https is not usually necessary, but if for some reason it is needed, you can self-generate and self-sign SSL certificates. Here is explained by Let's Encrypt.
Related to the above, Serveo.net or other utilities such as ngrok, allows us to map our local server under a web address even under https. This is very useful when we depend on third party services that must connect with our backend (payment gateways, social networks, etc). What we like about serveo.net is that you do not need to be logged in, nor is there any data limit a priori.
When you develop systems with sending email it is important to be able to test, see and test how emails are, what headers are sent, etc. MailHog behave with a fake email server that collects all emails that are sent and displayed under a local web address. This way you can check if your email code behaves as it should. It can be included as Docker-compose service easily.
Surely there are more tools that help local development. Which are yours? We encourage you to share them with us.