Release It!: Design and Deploy Production-Ready Software
I was first introduced to the concepts of this book when reading a number blog posts that Netflix had put together regarding building resilient systems. After listening to an episode of The Food Fight Show I decided that this was a book that I needed to pick up and dig into a little deeper. So many of the concepts are easy to grasp it leaves one wondering why don't we do this at our shop? This is a good starting point for developing cynical software which expects bad things to happen and is never surprised when they do. Our systems need to be more resilient so that the system keeps processing transactions no matter what.
Below are the takeaways I got out of this book.
The Phoenix Project
I managed to pick up a copy of The Phoenix Project when it was available for free on the kindle a few months back but I didn't get around to reading it until a recent vacation. To be honest I didn't know what to expect as I haven't read to many novels in the technology genre; however, I have to say it was an interesting read. Throughout the book there were countless scenarios where I could relate to Bill, Wes, Brent and the rest of the team as they struggle to reduce technical debt while tackling business initiatives with constrained resources. Just like the operations team at Parts Unlimited we too are making improvements in how we deliver product and infrastructure changes throughout the environment. The Phoenix Project was an enjoyable read and also shed some light in places where I think our team can make some improvements at the office.
If you are looking for additional information on some of the concepts depicted in The Phoenix Project there is a good blog post here: http://itrevolution.com/learn-more-about-concepts-in-phoenix-project/
Below are some of the notes I took while reading.
Scalable Internet Architectures - Theo Schlossnagle
I have had the benefit of seeing Theo speak a couple times at the Surge conferences in 2010 and 2011 and he definitely knows what he is talking about. He has written a really good book which goes over a number of techniques and strategies for scaling internet applications and contributes to many open source projects such as Apache Traffic Server. He has also developed a really cool open source monitoring platform called Reconnoiter which he then spun into company to run it in the cloud.
- The pathology of failure drives what we do in operations. If you haven't failed then you haven't learned because you have to experience a failure to really learn from it.
- When designing the architecture of a system you need to think about everything rather than just the software being designed. You need to know the entire system from power and cooling to client side javascript in order to make informed decisions.
- Lack of awareness of other disciplines is a bad thing. You can't know everything but you should be aware of everything. Without this decisions are made in isolation which leads to unreasonable requirements by others.
- Know and practice with your tools during the good times in order to make their use effortless when times get bad. The last tool you want to use when you are firefighting is man!
- To be excellent you need to treat operations as a craft. Become a craftsman through experience and learn discipline. Through practice achieve excellence.
- Build the tools that are needed to do your work for you so that you can focus on the more interesting part of your job.
- Think about the biggest technical mistake that you have made and what did you learn from it? This is one of my favorite interview questions.
- Version control and monitoring are crucial to running a successful business. Monitor everything because you need historical information or you are just looking at numbers that mean nothing.
- Strive for computational reuse and caching as you shouldn't do work you don't have to.
- You should never prevent caching but rather control it.
Scalability Rules: 50 Principles for Scaling Web Sites
This was a decent book with some real concrete rules for building scalable architectures. I really enjoyed reading it because it wasn't full of a lot of cruft but rather it got right to the point. Each rule was clearly identified and explained which makes it quick and easy to review when the time comes.
Below are a list of my favorite rules from the book.
Ghost in the Wires: My Adventures as the World's Most Wanted Hacker
I don't generally read too many books that aren't technical in nature but saw an ">interview with Kevin Mitnick on Triangulation and felt compelled to give this one a try. I have to say that it was one of the most entertaining books I have every read. There aren't too many books that I have had a hard time putting down but this was definitely one of them.
Scalable Internet Architectures
This one of my favorite books because so many of the topics discussed within it are issues that I have had to deal with first hand at my current position. It gives some good insight as to what it means to work in large complex systems as well as some instructing solutions to real world problems.
Here are a few of my notes from book which I like to check in on from time to time to get a refresher.
High Performance Web Sites: Essential Knowledge for Front-End Engineers
Steve Souders is the leader in web performance and this book was the first of its kind to identify all the bottlenecks that are common and easily avoided by those developing web based applications. There are a ton of good tips and tricks that are useful for front-end developers as well as those operations folks that are responsible for the back end systems. If you are in the field of web operations then this is a must read because it is critical that you understand the challenges in getting optimal performance out of your application.
HTTP: The Definitive Guide
This is a great resource for anyone looking to get a better understanding of what happens when loading a web page and is essential reading for anyone in web operations. If you don't have a copy of this book you are really missing out as it is packed full of the information you need to truly understand HTTP.
Internet Core Protocols
This is the book that I cut my teeth on when I decided to transition from application development to operations. It is a great intro into the core protocols used on the Internet and was very helpful in getting me up to speed on TCP/IP, multicasting, etc. which is what I deal with every day at the office. This book doesn't cover all the protocols as it is missing some pretty major ones such as DNS, HTTP, etc. but it is a good starting point. Here are some of the notes I took while reading.