|
![]() |
|||
|
||||
OverviewThe Complete Guide to Building Highly Scalable, Services-Based Rails Applications Ruby on Rails deployments are growing, and Rails is increasingly being adopted in larger environments. Today, Rails developers and architects need better ways to interface with legacy systems, move into the cloud, and scale to handle higher volumes and greater complexity. In Service-Oriented Design with Ruby and Rails Paul Dix introduces a powerful, services-based design approach geared toward overcoming all these challenges. Using Dix’s techniques, readers can leverage the full benefits of both Ruby and Rails, while overcoming the difficulties of working with larger codebases and teams. Dix demonstrates how to integrate multiple components within an enterprise application stack; create services that can easily grow and connect; and design systems that are easier to maintain and upgrade. Key concepts are explained with detailed Ruby code built using open source libraries such as ActiveRecord, Sinatra, Nokogiri, and Typhoeus. The book concludes with coverage of security, scaling, messaging, and interfacing with third-party services. Service-Oriented Design with Ruby and Rails will help you Build highly scalable, Ruby-based service architectures that operate smoothly in the cloud or with legacy systems Scale Rails systems to handle more requests, larger development teams, and more complex code bases Master new best practices for designing and creating services in Ruby Use Ruby to glue together services written in any language Use Ruby libraries to build and consume RESTful Web services Use Ruby JSON parsers to quickly represent resources from HTTP services Write lightweight, well-designed API wrappers around internal or external services Discover powerful non-Rails frameworks that simplify Ruby service implementation Implement standards-based enterprise messaging with Advanced Message Queuing Protocol (AMQP) Optimize performance with load balancing and caching Provide for security and authentication Full Product DetailsAuthor: Paul DixPublisher: Pearson Education (US) Imprint: Addison-Wesley Educational Publishers Inc Dimensions: Width: 18.10cm , Height: 1.70cm , Length: 23.10cm Weight: 0.508kg ISBN: 9780321659361ISBN 10: 0321659368 Pages: 320 Publication Date: 26 August 2010 Audience: Professional and scholarly , Professional & Vocational Format: Paperback Publisher's Status: Out of Print Availability: In Print ![]() Limited stock is available. It will be ordered for you and shipped pending supplier's limited stock. Table of ContentsForeword xiii Preface xv Acknowledgments xix About the Author xxi Chapter 1: Implementing and Consuming Your First Service 1 What’s a Service? 1 Service Requirements 2 The Ruby Tool Set 2 The User Service Implementation 5 Implementing the Client Library 18 Putting It All Together 26 Conclusion 26 Chapter 2: An Introduction to Service-Oriented Design 27 Use of Service-Oriented Design in the Wild 27 Service-Oriented Design Versus Service-Oriented Architecture Versus RESTful-Oriented Architecture 28 Making the Case for Service-Oriented Design 29 Conclusion 38 Chapter 3: Case Study: Social Feed Reader 41 A Typical Rails Application 41 The Rails Social Feed Reader Application 45 Converting to Services 54 Conclusion 58 Chapter 4: Service and API Design 59 Partitioning Functionality into Separate Services 59 Versioning Services 64 URIs and Interface Design 66 Successful Responses 68 Error Responses 72 Handling Joins 73 API Complexity 75 Conclusion 78 Chapter 5: Implementing Services 79 The Vote Service 79 Models 86 Rails 88 Sinatra 95 Rack 100 Conclusion 106 Chapter 6: Connecting to Services 107 Blocking I/O, Threading, and Parallelism 107 Typhoeus 109 Multi-threaded Requests 113 JRuby 115 Logging for Performance 117 Handling Error Conditions 118 Testing and Mocking Service Calls 119 Requests in Development Environments 121 Conclusion 121 Chapter 7: Developing Service Client Libraries 123 Packaging 123 Parsing Logic 127 ActiveModel 132 Connection and Request Logic 136 Mocks, Stubs, and Tests 143 Conclusion 146 Chapter 8: Load Balancing and Caching 147 Latency and Throughput 147 Load Balancing 148 Caching with Memcached 155 HTTP Caching 162 Conclusion 166 Chapter 9: Parsing XML for Legacy Services 167 XML 167 SOAP 177 Conclusion 184 Chapter 10: Security 185 Authentication 185 Authorization 201 Encryption 209 Conclusion 214 Chapter 11: Messaging 215 What Is Messaging? 215 RabbitMQ and AMQP 217 Synchronous Reads, Asynchronous Writes 227 The CAP Theorem 230 Data Is the API 234 Conclusion 236 Chapter 12: Web Hooks and External Services 237 Web Hooks 238 OAuth 245 Integrating with External Services 251 Ensuring Performance and Reliability 258 Conclusion 261 Appendix: RESTful Primer 263 Roy Fielding’s REST 263 REST and Resources 265 HTTP and the Uniform Interface 268 Conclusion 275 Index 277ReviewsAuthor InformationPaul Dix is co-founder and CTO at Market.io. In the past, he has worked at Google, Microsoft, McAfee, Air Force Space Command, and multiple startups, filling positions as a programmer, software tester, and network engineer. He has been a speaker at multiple conferences, including RubyConf, Goruco, and Web 2.0 Expo, on the subjects of service-oriented design, event-driven architectures, machine learning, and collaborative filtering. Paul is the author of multiple open source Ruby libraries. He has a degree in computer science from Columbia University. Tab Content 6Author Website:Countries AvailableAll regions |