
Ask HN: Where do I start in DevOps? - gdiocarez
Good day, I&#x27;d like to know how I would start on the path of DevOps. I&#x27;m already doing some hybrid apps but have trouble with deploying backends that cause me to do additional steps. I&#x27;d like to learn to do CI&#x2F;CD but not sure where to start or how I would approach my learning.
======
weitzj
I would start with your CI pipelines.

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.

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...

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.

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:

12-factor-Apps, immutable infrastructure, inversion of control

and you will find plenty more stuff to learn.

------
wyclif
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.

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.)

~~~
gdiocarez
I have an overview but just overwhelmed by how many tools you could use.

------
aliswe
How about the Azure docs guides, they're pretty good:

[https://docs.microsoft.com/en-
us/azure/devops/pipelines/crea...](https://docs.microsoft.com/en-
us/azure/devops/pipelines/create-first-pipeline)

------
insomniacity
[https://roadmap.sh/devops](https://roadmap.sh/devops)

~~~
gdiocarez
I have this but probably need a deeper understanding of each

