Many people believe that Agile software development is a fun, loosely defined approach allowing for continual requirements changes. A common misconception about Agile is that this approach stresses little or no upfront design. On large-scale projects, it is not feasible to design a system one iteration at a time, which may sound as if Agile is impossible in such scenarios. We have discovered that designing architecture in an Agile world is not only possible, but leads to a better product for the customer. This presentation explores some pros and cons as well as successes and failures of using the Agile approach when designing large-scale systems. This presentation also looks at approaches to doing the “right amount” of architectural design up front, while allowing room for inevitable changes as the system is being built.