Development versus Production Environments
My first time deploying one of my web app-projects came while I was polishing-up my projects that I created during my time at Flatiron School. I wanted these demonstrations of my knowledge and skill to be impressive to prospective employers as well as work that I would be proud of presenting. This included making them easily accessible and demonstrating that I could work in a production environment- enter deployment.
I hadn’t had experience with deployment or in the production environment up until this point. I knew I wanted to deploy with Heroku, as this was a suggestion I had heard from a number of my instructors. Having only worked in the development environment, I not only was unfamiliar with production but didn’t really understand what it was. This spurred me to do some digging and acquaint myself with the different environments.
First off, although I had been working in the development environment for my entire software engineering journey, I wanted to know more- what exactly defines it.
The development environment is your local environment- the environment that lives on your computer. It is where you will write all of your code and updates. This is where all of your branches live and from where you will commit your changes, along with those of your co-workers.
The development environment is typically configured differently than the environment that users work in. This environment has a different database for storage than the production database- usually the data in development is stored locally or in a dummy database so that you are able to write code without messing up the real data (which is held in production).
This was one of the first differences that really caught my eye. Although now it seems obvious, at the time I did not understand there was a difference between where data is saved in development versus production. Now it makes complete sense, in development you want to be able to work with your application and maybe seed some example data to see how your application interacts with it. You do not want this data manipulation to persist to the ‘live’ version that users are interacting with- this would cause some serious user-interface (UI) issues. Post-deployment, the development environment is for testing new features/improvements- which once working as desired can be pushed to the production environment.
The production environment is the live version of your web application. This is where the users access the ‘final’ code via the UI after the development environment has been deployed. Updates from the development environment can be released as ready and will update the features of the production UI.
Some companies/individuals handle production updates with roll-outs, releasing updates/changes to some users but not all to test their functionality in production. Once these changes have proven to be bug-free and user-friendly they can be released to everyone.
Although I didn’t gain experience in the production environment during my time at Flatiron School, with some research and the deployment of my applications I was able to gain a solid understanding of concepts.