Building Applications in the Cloud Concepts, Patterns, and Projects Christopher M. Moyer Upper Saddle River, NJ • Boston • Indianapolis • San Francisco New York • Toronto • Montreal • London • Munich • Paris • Madrid Cape Town • Sydney • Tokyo • Singapore • Mexico City Many of the designations used by manufacturers and sellers to distinguish their products are claimed as trademarks. Where those designations appear in this book, and the publisher was aware of a trademark claim, the designations have been printed with initial capital letters or in all capitals. The author and publisher have taken care in the preparation of this book, but make no expressed or implied warranty of any kind and assume no responsibility for errors or omissions. No liability is assumed for incidental or consequential damages in connection with or arising out of the use of the information or programs contained herein. The publisher offers excellent discounts on this book when ordered in quantity for bulk purchases or special sales, which may include electronic versions and/or custom covers and content particular to your business, training goals, marketing focus, and branding interests. For more information, please contact: U.S. Corporate and Government Sales (800) 382-3419 [email protected] For sales outside the United States please contact: International Sales [email protected] Visit us on the Web: informit.com/aw Library of Congress Cataloging-in-Publication Data: Howard, Ken, 1962- Individuals and interactions : an agile guide / Ken Howard, Barry Rogers. p. cm. Includes bibliographical references and index. ISBN 978-0-321-71409-1 (pbk. : alk. paper) 1. Teams in the workplace. 2. Communication. I. Rogers, Barry, 1963-II. Title. HD66.H695 2011 658.4'022 -- dc22 2011001898 Copyright © 2011 Pearson Education, Inc. All rights reserved. Printed in the United States of America. This publication is protected by copyright, and permission must be obtained from the publisher prior to any prohibited reproduction, storage in a retrieval system, or transmission in any form or by any means, electronic, mechanical, photocopying, recording, or likewise. For information regarding permissions, write to: Pearson Education, Inc Rights and Contracts Department 501 Boylston Street, Suite 900 Boston, MA 02116 Fax (617) 671 3447 ISBN-13: 978-0-321-72020-7 ISBN-10: 0-321-72020-2 Text printed in the United States on recycled paper at R.R. Donnelley & Sons, Crawfordsville, Indiana. First printing April 2011 Editor-in-Chief Mark Taub Acquisitions Editor Trina MacDonald Development Editor Michael Thurston Managing Editor Kristy Hart Senior Project Editor Lori Lyons Copy Editor Apostrophe Editing Services Indexer Ken Johnson Proofreader Sheri Cain Technical Reviewers Kevin Davis Mocky Habeeb Colin Percival Publishing Coordinator Olivia Basegio Cover Designer Chuti Prasertsith Cover Illustrator Lynn A. Moyer www.designbylynn.com Compositor Nonie Ratcliff Dedication To my wonderful wife Lynn, without whom this book would never have been finished. Table of Contents Preface About the Author Introduction What Is Cloud Computing? The Evolution of Cloud Computing The Main Frame The PC Revolution The Fast Internet The Cloud HTML5 and Local Storage The Dawn of Mobile Devices Threading, Parallel Processing, and Parallel Computing How Does Cloud-Based Development Differ from Other Application Development? What to Avoid Getting Started in the Cloud Selecting a Cloud Pattern Implementing a Cloud Pattern Concepts 1. Fundamentals of Cloud Services Origins of Cloud Computing What Is a Cloud Service? Compute Storage Connectivity The Legacy Pattern Just Because It’s in the Cloud Doesn’t Mean It Scales Failure as a Feature Consistency, Availability, and Partition Tolerance Consistency Availability Partition Tolerance Eventual Consistency Summary 2. Making Software a Service Tools Used in This Book Signing Up for Amazon Web Services Installing boto Setting Up the Environment Testing It All What Does Your Application Need? Data Layer Introducing the AWS Databases Application Layer Using Elastic Load Balancing Adding Servers to the Load Balancer Automatically Registering an Instance with a Load Balancer HTTP and REST The Header The Body Methods Authorization Layer Client Layer Browser-Based Clients Native Applications Summary 3. Cloud Service Providers Amazon Web Services Simple Storage Service (S3) CloudFront Simple Queue Service (SQS) Elastic Compute Cloud (EC2) Elastic Block Storage (EBS) Elastic Load Balancing (ELB) SimpleDB Relational Database Service (RDS) Simple Notification Service (SNS) Virtual Private Cloud (VPC) Google Cloud AppEngine Google Storage Rackspace Cloud CloudFiles CloudServers CloudSites Summary Patterns 4. Designing an Image Prepackaged Images Overview Reasons for Usage Description Implementation Example Summary Singleton Instances Overview Reasons for Usage Description Implementation
Description: