I work as a software engineer. (I think) I know a lot about programming, software design, "solid" principles, etc. I know my way through the shell and how to setup servers and databases. I know a bit of everything as well (OS, networking, compilers, web).<p>At work I talk a lot with devops guys. When we need infra for our products (machines where to run our services, MySQL databases with master/slave replication, nginx, Kafka, production IPs, etc.), devops helps. They know GCP/AWS, and they use Terraform/Ansible, and they write yaml... I don't understand a thing of what they do. I wanted to learn.<p>So, I read TCP/IP Illustrated, Vol. 1 (because I wanted to cover the basics first) then I read DDIA. Both took me some time to finish and I learnt A LOT... still I have no clue what my devops colleagues do. Also tried the other way around; I learnt the specifics. I learnt nginx and MySQL (admin level) and Ansible/Terraform/yaml/Docker... Now I know the pieces of the puzzle, but still have no clue how they all work together. Example: the other day a devops guy told me "Yeah, that's not gonna work. DB 1 is in GCP and service X is in another cloud provider... the latency will be terrible X wants to talk to DB 1; just replicate DB 1 in a DB in GCP that is local to service X". I know what he meant... but I only realized that when he told me so. It's like the "return early pattern for functions": any respectable developer knows it.<p>I really wouldn't like to work as devops, but I want to gain their knowledge. Is there any good resources regarding how to become better at "being devops dealing with distributed systems" without actually working as "devops"? I'm afraid documentation out there is a bit terrible. One example: I read the whole nginx.org website and I feel like I learnt nothing (80% of the documentation is about "directive syntax + default values"). They don't explain in deep how nginx works. Docker documentation, on the other hand, is quite complete.