HAPPY BOOKSGIVING
Use code BOOKSGIVING during checkout to save 40%-55% on books and eBooks. Shop now.
Rough Cuts are manuscripts that are developed but not yet published, available through Safari. Rough Cuts provide you access to the very latest information on a given topic and offer you the opportunity to interact with the author to influence the final publication.
This is the Rough Cut version of the printed book.
The Complete Guide to Building Highly Scalable, Services-Based Rails ApplicationsRuby 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
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