Good day, I'd like to know how I would start on the path of DevOps. I'm already doing some hybrid apps but have trouble with deploying backends that cause me to do additional steps. I'd like to learn to do CI/CD but not sure where to start or how I would approach my learning.
I would start with your CI pipelines.<p>So, get a new CI pipeline ready with steps like build, unit test, integration tests and some artifacts which come out of it (like a Jar or rpm or Docker image or AMI)
Next step would be making sure your build pipeline has a reproducible build environment, i.e. you PIN the Compiler Version, nodejs Version, whatever... typically docker or a VM or other tools can help you with that.<p>That would be roughly your build pipeline. Now you would create another pipeline to deploy your build artifacts using for example terraform to update your AMI or using kubectl to update your Docker Image (if you use Kubernetes) or using ssh/ansible to update your jar/rpm/Docker image...<p>Once you have that in place, start thinking of your deployment environments. You might have dev,staging, production. And now think how you could use the same build artifact for all environments. This is what often goes wrong and people build their artifacts for each environment. This would be an indicator in your applications code that you need to invert this dependency (12-factor-apps, inversion of control). Don’t confuse build pipeline with deployment pipeline.<p>So these are some rough tips. Learning Jenkinsfile/GitLab.ci or some other CI server syntax is important. Then some infrastructure as code tool like terraform. Keep in mind things like:<p>12-factor-Apps, immutable infrastructure, inversion of control<p>and you will find plenty more stuff to learn.
First, understand that DevOps is not a tool, process, or methodology. It's a philosophy. There are many elements of this, but the most important ones are IT infrastructure, the cloud, scripting, and knowledge of the various DevOps tools (AWS, Docker, Ansible, Kubernetes, Jenkins, Chef, Puppet, &c.) You don't have to know all of those tools, they are dependent on what you want to do and what your software stack is all about.<p>I think a good first step is upping your bash/zsh scripting game, and making sure your infrastructure chops are good (TCP/IP, HTTP, etc.)
How about the Azure docs guides, they're pretty good:<p><a href="https://docs.microsoft.com/en-us/azure/devops/pipelines/create-first-pipeline" rel="nofollow">https://docs.microsoft.com/en-us/azure/devops/pipelines/crea...</a>