Home > Store

Service-Oriented Design with Ruby and Rails

Register your product to gain access to bonus material or receive a coupon.

Service-Oriented Design with Ruby and Rails


  • Sorry, this book is no longer in print.
Not for Sale

eBook (Watermarked)

  • Your Price: $31.99
  • List Price: $39.99
  • Includes EPUB, MOBI, and PDF
  • About eBook Formats
  • This eBook includes the following formats, accessible from your Account page after purchase:

    ePub EPUB The open industry format known for its reflowable content and usability on supported mobile devices.

    MOBI MOBI The eBook format compatible with the Amazon Kindle and Amazon Kindle applications.

    Adobe Reader PDF The popular standard, used most often with the free Adobe® Reader® software.

    This eBook requires no passwords or activation to read. We customize your eBook by discreetly watermarking it with your name, making it uniquely yours.


  • Copyright 2011
  • Dimensions: 7" x 9-1/8"
  • Edition: 1st
  • Book
  • ISBN-10: 0-321-65936-8
  • ISBN-13: 978-0-321-65936-1

The 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

Sample Content

Online Sample Chapter

An Introduction to Service-Oriented Design with Ruby and Rails

Sample Pages

Download the sample pages (includes Chapter 2 and Index)

Table of Contents

Foreword         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          277


Submit Errata

More Information

Unlimited one-month access with your purchase
Free Safari Membership