About the Author
Artur Ejsmont is a passionate software engineer and agile leader, currently working for Yahoo! in Sydney. Artur has been working with web applications for over 10 years with a lot of focus on agile, startup-like environments; he loves the Lean Startup model. Artur has worked on websites serving 1M+ pages per hour, both in Europe and Australia. He has also served as a university lecturer and is passionate about sharing his knowledge with others. Artur actively contributes to the tech community as a technical writer, blogger, and public speaker.
About the Technical Editors
Bill Wilder is CTO at Finomial Corporation, an occasional conference speaker, an inconsistent blogger, and leader (since 2009) of Boston Azure. He is recognized by Microsoft as an Azure MVP and is the author of the book Cloud Architecture Patterns (OReilly Media, 2012). He can be found on Twitter @codingoutloud.
TJ Wilder is a college student in his junior year at the University of Massachusetts at Amherst, majoring in computer science with a minor in mathematics. He has been programming since he was 12 but has taken occasional breaks since then to eat, sleep, and sing. Having interned at DraftKings.com when it was a startup, he looks forward to putting the books advice to work in more startups in the future.
Dr. Danny Coward is a chief architect and web architect at Oracle. Coward is the sole spec lead for the Java API for Web Sockets for Java EE and Java SE/JavaFX and sole author of the WebSocket technical documentation at Oracle. Cowards work leading WebSocket at Oracle make him the leading expert on Java WebSocket programming. Coward has a decade of experience as a Java developer, where he now seeks to direct and simplify complex technologies to fulfill business objectives. Coward has specialized experience in all aspects of Java softwarefrom Java ME to Java EE to the founding of the JavaFX technology.
Copyright 2015 by McGraw-Hill Education. All rights reserved. Except as permitted under the United States Copyright Act of 1976, no part of this publication may be reproduced or distributed in any form or by any means, or stored in a database or retrieval system, without the prior written permission of the publisher, with the exception that the program listings may be entered, stored, and executed in a computer system, but they may not be reproduced for publication.
ISBN: 978-0-07-184366-9
MHID: 0-07-184366-3
The material in this eBook also appears in the print version of this title: ISBN: 978-0-07-184365-2, MHID: 0-07-184365-5.
eBook conversion by codeMantra
Version 1.0
All trademarks are trademarks of their respective owners. Rather than put a trademark symbol after every occurrence of a trademarked name, we use names in an editorial fashion only, and to the benefit of the trademark owner, with no intention of infringement of the trademark. Where such designations appear in this book, they have been printed with initial caps.
McGraw-Hill Education eBooks are available at special quantity discounts to use as premiums and sales promotions or for use in corporate training programs. To contact a representative, please visit the Contact Us page at www.mhprofessional.com.
Information has been obtained by McGraw-Hill Education from sources believed to be reliable. However, because of the possibility of human or mechanical error by our sources, McGraw-Hill Education, or others, McGraw-Hill Education does not guarantee the accuracy, adequacy, or completeness of any information and is not responsible for any errors or omissions or the results obtained from the use of such information.
TERMS OF USE
This is a copyrighted work and McGraw-Hill Education and its licensors reserve all rights in and to the work. Use of this work is subject to these terms. Except as permitted under the Copyright Act of 1976 and the right to store and retrieve one copy of the work, you may not decompile, disassemble, reverse engineer, reproduce, modify, create derivative works based upon, transmit, distribute, disseminate, sell, publish or sublicense the work or any part of it without McGraw-Hill Educations prior consent. You may use the work for your own noncommercial and personal use; any other use of the work is strictly prohibited. Your right to use the work may be terminated if you fail to comply with these terms.
THE WORK IS PROVIDED AS IS. McGRAW-HILL EDUCATION AND ITS LICENSORS MAKE NO GUARANTEES OR WARRANTIES AS TO THE ACCURACY, ADEQUACY OR COMPLETENESS OF OR RESULTS TO BE OBTAINED FROM USING THE WORK, INCLUDING ANY INFORMATION THAT CAN BE ACCESSED THROUGH THE WORK VIA HYPERLINK OR OTHERWISE, AND EXPRESSLY DISCLAIM ANY WARRANTY, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. McGraw-Hill Education and its licensors do not warrant or guarantee that the functions contained in the work will meet your requirements or that its operation will be uninterrupted or error free. Neither McGraw-Hill Education nor its licensors shall be liable to you or anyone else for any inaccuracy, error or omission, regardless of cause, in the work or for any damages resulting therefrom. McGraw-Hill Education has no responsibility for the content of any information accessed through the work. Under no circumstances shall McGraw-Hill Education and/or its licensors be liable for any indirect, incidental, special, punitive, consequential or similar damages that result from the use of or inability to use the work, even if any of them has been advised of the possibility of such damages. This limitation of liability shall apply to any claim or cause whatsoever whether such claim or cause arises in contract, tort or otherwise.
I dedicate this book to all of you passionate geeks.
The future of mankind is truly in your hands now.
Contents at a Glance
Contents
Acknowledgments
I would like to thank Bill Wilder, TJ Wilder, Danny Coward, and Brandi Shailer for all of their feedback and help when working on this book. I would also like to thank Dion Beetson, Craig Penfold, Jackie Reses, Venkatesh Kanchan, Marcelo Maidana, Kristian Kauper, Christof Mueller, cibr Sobieski, Mariusz Jarocki, Andrzej Nowakowski, my friends, and my family for supporting and inspiring me over the last 35 years. I would not be who I am today without them.
Introduction
In the coming years, businesses will need to store, transfer, and process increasingly large amounts of data. This will happen mainly due to the exponential growth of technology and our increasing dependency on it. As a result of this wave, the demand for engineers who are able to build scalable systems is going to increase as well.
The initial idea for the book came to me when I realized that most engineers either know a lot about scalability or nothing at all. I realized that there is not enough literature on the subject and that there is no easy way for engineers working in smaller companies to get to the next level in terms of understanding scalability. With this in mind, I set out a goal of writing a book that would help people understand the bigger picture and create awareness of how software architecture and the infrastructure work together to promote scalability.
I think of this book as a roadmap for readers to use in their journey to web application scalability. I present both a high-level perspective and a deep dive into important aspects to give real-world advice. There are too many technologies to go through everything in detail, but it is possible to explain concepts and basic rules and showcase selected platforms.