Live data from Hacker News

Ask HN: DevOps learning resources

news.ycombinator.com

41–50 of 68 posts

Re: Ask HN: DevOps learning resources

#41
get a digital ocean account and a domain name. start a lamp server (or equivalent), use the excellent (imo) documentation to get things running. add services as you go along. I learned a lot from just that, now I have my own webserver, source control (git server with gitea) and other things running. tons of fun and learning

Re: Ask HN: DevOps learning resources

#42
Have you written a webapp as a side project before? If yes, then great:

1. Find a bare VM provider, e.g. Linode or Digital Ocean or EC2.

2. Figure out a way to get your code up there, even if it's ghetto. e.g. git pull from github. Get the app server running.

3. Figure out how to expose your app to the internet. Buy a domain name, get it to point to your IP addr. Soon enough you will realize that DNS load balancing is terrible...

4. Then you should install Nginx or HA proxy and put your app behind it. Run your app on localhost, only nginx should be exposed.

5. Once everything is up, iptables is your next concern, expose only ports you want and disable everything else.

6. Repeat 1-5 on a second instance.

7. Soon enough you will find that repeating the same thing sucks, so you will write Python script using Fabric library. But then you realized someone else have done this already, after a quick googling, you will find Ansible or Salt. Use those instead.

8. Rinse and repeat for other networked things. e.g. databases, mail relays, cache servers, etc.

9. Evolve your approaches, rewrite ghetto stuff, make your artifact as immutable as possible with very few network dependencies...

That's pretty much the entire devops evolution up until 3 years ago. Once you got good in these...

1. Start reading about Linux container and why they are useful.

2. Install docker and try to get your toy project in a dockerfile.

3. Repeat the learning exercise again on deploying Docker containers.

Hope that helps :)

Re: Ask HN: DevOps learning resources

#43
Work through all of these tutorials on containerization and orchestration found here: https://github.com/docker-training/orchestration-workshop

When running the Dockercoins example, how can you scale it up to mine as many coins as possible? How would you set up alerts for if one of the services went down? How would you diagnose the problem? What other tools might you use?

Play around and see what tools you like and don't like. Have fun!

Re: Ask HN: DevOps learning resources

#44
post #5

Well, the best way to learn is to actually do something. Create a small service in your favourite framework. Something really small, an echo service will probably suffice. Then stop "developing" and switch on "Ops mode". Automate: - builds (build & packaging scripts) - deployments - try all 3 major approaches: - push deployment: running a command on a central server that orchestrates everything (Ansible, Salt, chef-s…

These have packaged the process and tools but no one can tell you how to do it for yourself. Because at up to an expert level it is still a set of tools you use. A lot of the advice/terminology: 'fast smoke tests', 'google ops stack', 'host your status page elsewhere', choice of load balancers, etc.. is stupid-hoc.

Do yourself a favor if you are going to do devops practice.

1. Write it from scratch. 2. Make it work no matter what happens before and after calamity. 3. Write the docs. 4. Leave it to beaver.

Re: Ask HN: DevOps learning resources

#45

The first thing to realize is that DevOps is an ambiguous term (at least partly by design, it seems). My belief—shaped by many at the forefront of the DevOps movement—is that it is a cultural focus rather than a technical one. In many ways, it's an extension of agile philosophies, with a focus on fast feedback, transparency, heightened interactions between teams, etc. There is also a heavy focus on automation (CICD),…

The foundation of the movement is getting rid of ops.

Re: Ask HN: DevOps learning resources

#46
DevOps is a moving target right now, and a lot of great fundamentals are linked here already. I'd also recommend subscribing to, and reading old issues of:

https://sreweekly.com/ http://www.devopsweekly.com/ https://lastweekinaws.com/ https://weekly.monitoring.love/

The last two are fairly young, but have good content so far. I wouldn't call it a well-curated list, but there are tons and tons of great posts are linked (in loosely chronological order, as weekly mail blasts tend to be).

Re: Ask HN: DevOps learning resources

#47
post #5

Well, the best way to learn is to actually do something. Create a small service in your favourite framework. Something really small, an echo service will probably suffice. Then stop "developing" and switch on "Ops mode". Automate: - builds (build & packaging scripts) - deployments - try all 3 major approaches: - push deployment: running a command on a central server that orchestrates everything (Ansible, Salt, chef-s…

There's two major types of monitoring you should be concerned with, log aggregation and metrics collection.

For log aggregation the most mature open-source solution I know of is the ELK stack (Elasticsearch for storage, Logstash for aggregation, Kibana for visualization). Set that up (bonus points if you use Puppet/Chef/Ansible/Whatever to set it up for you), and make sure you can detect anomalies from your visualization interface.

For metrics collection, Prometheus has a special place in my heart, I love its architecture. That said there are quite a few options, InfluxDB is another (arguably simpler) option. You can then use something like Grafana to visualize the metrics.

For configuration management tools, Chef is complicated and you better know Ruby and have a few months to dig into it. Puppet is simpler, but has a lot of weird quirks. Ansible is simple, but not as powerful (or used); so pick your poison, they all are pretty similar conceptually.

Basically at the end of your journey you should be able to kill any server (or network connection, or application running on a server) and be alerted to it in near realtime. You should be able to diagnose what's wrong quickly using Kibana and Grafana, and finally you should be able to destroy and recreate the server using a few well understood commands and have it be completely reconfigured and ready to accept connections. Of course this is pie in the sky (like having perfect unit/integration testing for a very large application), but that should be the goal.

Re: Ask HN: DevOps learning resources

#49
post #5

Well, the best way to learn is to actually do something. Create a small service in your favourite framework. Something really small, an echo service will probably suffice. Then stop "developing" and switch on "Ops mode". Automate: - builds (build & packaging scripts) - deployments - try all 3 major approaches: - push deployment: running a command on a central server that orchestrates everything (Ansible, Salt, chef-s…

> - log collection and shipping (Splunk, Graylog) I'll also throw my hat in for setting up (and securing, without Shield) an ELK stack here. You'll learn a lot along the way.

Agreed, recently set up the Elastic "stack" with fluentd shipping logs from Kubernetes nodes. Fun and very rewarding.

Re: Ask HN: DevOps learning resources

#50

Devops: One word of caution. The future really will be having a docker file and finding a place to run code (docker swarm, ecs, etc). When you commit code it will be ran through a ci system (unit tested, staged) then updated. The salts, puppets, chefs, Vaults, running your own Kubernetes (wtf), VMs, Nagios, sendmails, vpcs and all this other drama will be latin in a few years. The future will be running the code on y…

Sorry but Kubernetes is production ready. Swarm is everything but. If you struggle with K8s, give Deis Workflow a try.

ECS is proprietary, learning how Kubernetes works gives you flexibility to move between cloud providers. GKE is a beast.

Post reply on HN