I work in the DevOps space and one of the important elements to understand early on is how software is delivered and managed in a consistent workflow that allows you to scale your deployments easily while continuously deploying new apps and features with no downtime.
Often times you're going to hear about CI/CD (Continuous Integration / Continuous Delivery / Deployment) this is a process in which you deploy your code into various different environments like dev, staging, production in an automated fashion.
I'll give you an example. Say that you want to deploy a cloud native application into a cloud, how would you do that?
Step 1: The Developers will write some code on their local machines, this code will encompass some new features.
Step 2: Now that that the code has been written locally, there will typically be some type of pull request that will request to have the code committed and then merged into the main branch of the versioning control system. Typically, when you write some code, you can also write some tests to run on your code to do some basic testing
Step 3: The code can then be deployed in a testing area where it is validated against basic tests to see if it passes those tests. If it does, than an integration service like Jenkins could create a container out of that code and place that container in a container registry
Step 4: Once the container exists in the container registry, you can then leverage something like a container orchestrator to deploy this container into a test/dev/staging cluster to perform more tests. Often times, people will use Kuberentes as an orchestrator platform, but you also have others, like Docker Swarm for example.
Step 5: If the testing in Dev/Staging are successful, you can then deploy the container into in a production cluster using the same orchestrator.
When there are issues with your code, lets say it does not pass the testing, then the feedback would get sent back to the developers so that they can fix the issue. Once the issue is fixed, the code goes through the same process again to ensure everything works.
The goal around CI/CD workflow is to ensure that you can consistently deploy new features while at the same time have a feedback loop on the state of the deployment. This is how you would improve your code overtime.