As a developer, you are aware of the increasing concern amongst developers and site architects that websites be able to handle the vast number of visitors that flood the Internet on a daily basis. Scalable Internet Architectures addresses these concerns by teaching you both good and bad design methodologies for building new sites and how to scale existing websites to robust, high-availability websites. Primarily example-based, the book discusses major topics in web architectural design, presenting existing solutions and how they work. Technology budget tight? This book will work for you, too, as it introduces new and innovative concepts to solving traditionally expensive problems without a large technology budget. Using open source and proprietary examples, you will be engaged in best practice design methodologies for building new sites, as well as appropriately scaling both growing and shrinking sites. Website development help has arrived in the form of Scalable Internet Architectures.
https://en.wikipedia.org/wiki/Computer_Lib/Dream_Machines
https://archive.org/details/computer-lib-dream-machines
- - - -
Also "Scalable Internet Architectures" by Theo Schlossnagle
https://www.goodreads.com/book/show/853963.Scalable_Internet...
I see he did a talk on it: https://www.youtube.com/watch?v=2WuT2rdLK5A
Hackers by Steven Levy is a great history of the 50s to 80s. Very focused on the personalities of the non-establishment people who made things happen.
Go To by Steve Lohr is also a history and super boring. Give it a pass.
The Mythical Man-Month by Frederick Brooks--if you haven't read this yet, it's pretty light, and it's amazing how contemporary it feels.
Programmers at Work by Susan Lammers: interviews of lots of famous computer pioneers. Very interesting to think about the remarks that appear again and again.
Smart and Gets Things Done by Joel Spolsky will make you feel good about yourself. :-)
The Mac is Not a Typewriter by Robin Williams is a nice bite-sized lesson on type.
The original Human Interface Guidelines by Apple is a pretty interesting look back into what motivated them in those days, especially if you do any iOS development.
The Visual Display of Quantitative Information by Tufte is not something you can carry on a bus but a pretty fun read.
Ghost in the Wires by Kevin Mitnick is like a novel. I'm not sure I believe it all, but it's interesting.
The Elements of Style by Strunk & White is tiny and will improve your writing a lot.
Clear and Simple as the Truth by Thomas & Turner is good after you've digested Strunk & White a bit.
Time Management for System Administrators by Limoncelli might give you some things to think about.
Expert C Programming: Deep C Secrets by Peter van der Linden is technical but super amusing and helpful if you've done any C before.
Programming Collective Intelligence by Toby Segaran is a light overview of various machine learning techniques. Enough to make you sound like you know what you're talking about. :-)
Release It! by Michael Nygard and Scalable Internet Architectures by Theo Schlossnagle have good lessons on building reliable systems. The latter is more technical, even offering code for some things; the former, more high-level.
Effective Java by Bloch has good tips if you do any Java. After 10+ years I still remember his idea that inheritance is a "scarce resource" and should be used sparingly. The discussion of `equals()` might convince you to switch to Ruby. :-)
How about math? Get any collection of essays by Martin Gardner. The Colossal Book of Mathematics is more a bedside/restroom book than one for a bus, but they also publish many thin collections like Hexaflexagons, Probability Paradoxes, and the Tower of Hanoi.
Javascript: The Good Parts by Crockford is tiny and a classic.
The Art of Scalability http://www.amazon.com/Art-Scalability-Architecture-Organizat...
Scalable Internet Architectures http://www.amazon.com/Scalable-Internet-Architectures-Theo-S...
Enterprise Cloud Computing http://www.amazon.com/Enterprise-Cloud-Computing-Architectur...
I think this is a hard one without working on a big project with senior people. I struggled with this for years and still do but have gotten a little better thanks to senior developers guiding me. I think besides reading books and attending lectures or listening in on talks online, I think you need to find a problem sizable enough and build it from scratch. My work with senior guys has shown me that designing on paper and the white board is essential to tackling the problem for understanding and eventually building it. The patterns will reveal themselves as you go through this exercise if any patterns are needed at all, and I think this is something you definitely will not learn overnight but overtime by getting your hands dirty. If you have not visited this site infoq.com, please do so. It has tons of experts speaking on it. I have been able to incorporate some of what I have learned from here to the job. A quick link to how YouTube was built: http://www.youtube.com/watch?v=ZW5_eEKEC28&feature=youtu...
Really good talk with lots of jewels. Another good book for you: http://www.amazon.com/Scalable-Internet-Architectures-Theo-S...
Hope this helps.
A good place to start, if you're not already familiar with it, is High Scalability: http://highscalability.com/
Edit: book recommendations:
Scalable Internet Architectures -
http://www.amazon.com/Scalable-Internet-Architectures-Theo-S...
Linux Clustering - Building and Maintaining Linux Clusters - http://www.amazon.com/Linux-Clustering-Building-Maintaining-...
High Performance Linux Clusters - http://www.amazon.com/Performance-Clusters-OpenMosix-Nutshel...
Linux Enterprise Cluster - http://www.amazon.com/Linux-Enterprise-Cluster-Available-Com...
Java Message Service - http://www.amazon.com/Java-Message-Service-Mark-Richards/dp/...
Java Message Service API Tutorial and Reference - http://www.amazon.com/Java-Message-Service-Tutorial-Referenc...
Enterprise JMS Programming - http://www.amazon.com/Enterprise-JMS-Programming-Professiona...
Hadoop: The Definitive Guide - http://www.amazon.com/Hadoop-Definitive-Guide-Tom-White/dp/0...
Pro Hadoop - http://www.amazon.com/Pro-Hadoop-Jason-Venner/dp/1430219424/...
Wikipedia:
http://en.wikipedia.org/wiki/Shared_nothing_architecture
http://en.wikipedia.org/wiki/Shard_%28database_architecture%...
http://en.wikipedia.org/wiki/Publish/subscribe
It's important to understand the difference between vertical scaling and horizontal scaling. Horizontal is very en vogue these days, especially with commodity hardware. Why? Because you can add power incrementally without spending tons of money upfront, and without requiring a "forklift upgrade" (that is a reference to needing a forklift to bring in a new mainframe or minicomputer). This is a pretty good article on the topic:
http://www.scalingout.com/2007/10/vertical-scaling-vs-horizo...
As popular as horizontal scaling is, don't ignore the possibilities of going to bigger hardware though. It has it's own advantages, especially when you start talking about physical floor space to store servers.
Of course "cloud computing" changes some of this, both by making it cheap and easy to add VPS's to scale horizontally, or by making it possible (sometimes) to easily add more processing power, RAM, etc. to your "server." Read up on Xen, KVM, EC2, etc. for more on that whole deal.