I'm sorry in advance if this isn't a good fit here, as it is a pretty open-ended question.  In a nutshell: where / how / when does one learn about application architecture(s)?Normally for web applications there are several layers to the stack, generally starting with a reverse proxy or load balancer and ending with a DB of some sort.  Depending on requirements, there may be various caching layers involved.There seems to be a wide variety of techniques/ tools you can set up web applications, many of the design decisions coming down to the technical requirements.  A lot of times when I read about a specific company's decisions on architecture, there isn't a lot of explanation of how they arrived at that decision, leaving that at the expense of the reader.How do people normally go about setting up a sane architecture set-up for their specific use-case (beyond working with the technical requirements)?  Are these sort of decisions just easier to make the more experienced you are in the field?
Learning About Different Architecture Set Ups
web development;architecture;design decisions
There are a variety of places one can learn about such things. There are some book-style references you can read, but a lot of information takes the form of engineers and architects speaking and writing about their systems, and bits of wisdom they have learned along the way. Some systems are very straightforward, and follow established patterns. Others solve unique problems and adopt unique architectures. It depends on what you are trying to accomplish.Read about the libraries and platforms that architectures are built on, and read about the competitors to those subsystems (e.g. riak vs. mongo, nginx vs. apache, etc.). After a while you'll get a good picture of how things work.I find the talks on InfoQ can be informative. 97 Things Every Software Architect Should Know has lots of small, easily digestible nuggets of information (great for reading on breaks). Lastly, High Scalability has many great articles about systems that have proven themselves to be scalable and robust.