All topics
Programming
About Programming
Programming is essential to your role as an engineer Python and Shell scripting is a must whereas Golang can be learned later
Python is very useful in several cases for automating daily tasks. Some examples are such as:
- Making API calls to get secret tokens for deploying
- Reading files on local machine and using that information on the file to fill out forms on a website
- In Ansible, you can create custom modules using Python when no module is available for what you are looking for
Shell scripting is also a key to your role as an engineer The following are some useful examples:
- If you need to create something in a time sensitive manner, sometimes shell scripting can have less lines than python
- You can use it to move around terminal quickly
Golang is a great language to learn if you want to create custom resources for Kuberentes such as controllers and Operators
Python
Go (Golang)
- A tour of Go
- Go by Example
- Learn Go with Tests
- Getting up and running with Go
- Effective Go
- Go Design Patterns
- Go Memory Management
- Style Guide
- Style Decisions
- Best Practices
Shell scripting
Linux
About Linux
Learning Linux is essential as it is used within most organizations Below are some examples of different flavours of Linux:
- CentOS
- Red Hat
- Amazon Linux
- Ubuntu
- Debian
Each are similar but unique in some way. For example.. CentOS package manager is yum
whereas Ubuntu is apt
Boot Process
- An introduction to the Linux boot and startup processes
- What happens when we turn on computer?
- What happens when we turn on computer?
- From Power up to login prompt
Filesystem
- Understanding Inodes
- Understand UNIX / Linux Inodes Basics with Examples
- Understanding proc filesystem
- Common Mount Options
- Understanding Linux filesystems: ext4 and beyond
Kernel
- Explain the basics of Linux kernel
- Kernel Space and User Space
- Linux Kernel Process Management
- Linux Addressing
- Linux Kernel Memory Management
- STACK AND HEAP
- Paging and Segmentation
- Linux Kernel System Calls
- The Virtual Filesystem
- Concurrency and Race Conditions
- Memory Leak
- What is a kernel Panic?
Troubleshooting
- Linux troubleshooting tools
- Linux Performance Analysis in 60,000 Milliseconds
- strace
- lsof
- Linux system debugging
- SaaS where users can test their Linux troubleshooting skills
Monitoring
- SLOs & You: A Guide To Service Level Objectives
- Setting up Service Monitoring — The Why’s and What’s
- How NOT to Measure Latency
Processes
- The practical guide to incident management
- Incident Response
- Postmortems
- Runbooks
- Identifying and tracking toil using SRE principles
- Building SRE from Scratch
- SRE at Google: Our complete list of CRE life lessons
- Incident Management vs. Incident Response - What’s the Difference?
- Practical Guide to SRE: Using SLOs to Increase Reliability
- Practical Guide to SRE: Automating On-Call
- Going from Zero to SRE
- An Incident Command Training Handbook
Networking
- Network protocols for anyone who knows a programming language
- Introduction to Linux interfaces for virtual networking
- Multi-tier load-balancing with Linux
- Introduction to modern network load balancing and proxying
- Load Balancing Algorithms
Infrastructure as code / Configuration management
CI/CD
- 7 Pipeline Design Patterns for Continuous Delivery
- CI/CD patterns
- Six Strategies for Application Deployment
Clouds
Databases
- Things You Should Know About Databases
- 7 Database Paradigms
- CAP theorem
- Evolutionary Database Design
- ACID vs BASE in Databases
- Understanding Database Sharding
- Database Replication
- SQL vs. NoSQL Database: When to Use, How to Choose
- How do database indexes work?
Containers
- Docker
Container orchestration
- Docker Swarm
- Kubernetes
Interview Prep
Tech interview handbook
Big O Notation, Algorithms and Data Structures
- Hacking a Google Interview – Handout 1
- Hacking a Google Interview – Handout 2
- Hacking a Google Interview – Handout 3
System design
- SystemsExpert course from AlgoExpert
- Grokking the System Design Interview
- The System Design Primer
- Crack the System Design Interview
- System design interview for IT companies
- Web Architecture 101
- What’s in a Production Web Application?
- Distributed systems
- Designing WhatsApp
- Designing Uber
- Designing Tinder
- Designing Instagram
- Designing Netflix
SRE interview process
Interview Questions
- A collection of questions to practice with for SRE interviews
- SRE Interview Questions
- Sysadmin Test Questions
- Kubernetes job interview questions
- DevOps Guide
- Questions I ask in SRE interviews
- DevOps Roadmap: Learn to become a DevOps Engineer or SRE
Blogposts
- SRE Interviews in Silicon Valley
- Preparing the SRE interview
- How to Get Into SRE
- My Job Interview at Google
- Path to Site Reliability Management
- Becoming a Site Reliability Engineer
- How I get a job at Google as SRE
-
Resume
- SRE Complete Resume Writing Guide
Books
SRE books
- Site Reliability Engineering
- The Site Reliability Workbook
- Seeking SRE
- Building Secure and Reliable Systems
- Implementing Service Level Objectives
Linux
- Linux Kernel Development (3rd Edition)
- UNIX and Linux System Administration Handbook (5th Edition)
- Linux Pocket Guide, 3rd Edition