Deployment
It’s like employment, but it’s just a ploy
Have you ever noticed the difference between a private school student and a public school student? One drives at the age of 14 and crashes on the highway and the other rides a motorcycle to school on the bus lane. If a private school student was to move to a public school, there would certainly be a mismatch in culture, right? It’s the same thing with software.
Your environment is not the same as your client’s environment is not the same as the client’s customer’s environment. So how would you ever know if your program even works in your customer’s environment? Well of course you would deploy them.
Deploy?
Deploy! Putting your software in an environment that is designed to simulate the customer’s and the client’s environment. But that isn’t the whole story.
See there are 3 server/environment in which deployment occurs, development, staging and production. So the first is the development environment, here you develop your code and do unit testing and the like according to development specifications, namely whatever suits you when developing code. Then you deploy to staging, which is a mirror dimension of production environment, here you see what your code actually behaves in the client’s network and adjust accordingly in the development server before redeploying. Finally, once all the kinks have been ironed out and the features added, you deploy it onto the production environment where it will be actively used by your clients and customers.
Continuous Integration/Continuous Delivery
CI: Automated building and testing of the project.
CD: Sometimes called Continuous Deployment for a reason, continuously deploys software automatically.
We are currently using gitlab’s CI/CD Pipeline to have this feature in our project.
Need example because apparently I lack examples
In our project, HappyFresh has lent us an Amazon Web Service EC2 that we are using to do DSP. Different ports will be for different environments and the staging and production environment will be set up later as currently only dev.hf-tracker.com is online. The Message Queue and MySQL will also be placed within the EC2 so that we don’t have to get it set up in some other environment and we can maximize assets available to us (we are lazy and also poor).
So what’s your point?
When making a software, please oh please deploy sensibly and correctly. Make sure that you don’t deploy garbage onto the client’s production environment and ruin more than just your own work. These deployment methods work well to prevent such an occasion.
Ok wise guy so how about this “Docker” thing that’s big right now? Also do you know about Circle CI? You’re trying to build something.. Something great. Something that matters.
Using docker that will be explained on its own in the next article. Suffice to say, Docker is a containerized deployment system that means it is the perfect way to deploy, as all the items needed for the software is already included.
That is all.