SlideShare a Scribd company logo
Software Pipelines and SOA Releasing the Power
of Multi Core Processing 1st Edition Cory
Isaacson pdf download
https://ebookgate.com/product/software-pipelines-and-soa-
releasing-the-power-of-multi-core-processing-1st-edition-cory-
isaacson/
Get Instant Ebook Downloads – Browse at https://ebookgate.com
Instant digital products (PDF, ePub, MOBI) available
Download now and explore formats that suit you...
Software Development for Embedded Multi core Systems A
Practical Guide Using Embedded Intel Architecture 1st
Edition Max Domeika
https://ebookgate.com/product/software-development-for-embedded-
multi-core-systems-a-practical-guide-using-embedded-intel-
architecture-1st-edition-max-domeika/
Microprocessor 4 Core Concepts Software Aspects 1st
Edition Philippe Darche
https://ebookgate.com/product/microprocessor-4-core-concepts-
software-aspects-1st-edition-philippe-darche/
Networks on Chips Theory and Practice Embedded Multi
Core Systems 1st Edition Fayez Gebali
https://ebookgate.com/product/networks-on-chips-theory-and-
practice-embedded-multi-core-systems-1st-edition-fayez-gebali/
Bioinformatics High Performance Parallel Computer
Architectures Embedded Multi Core Systems 1st Edition
Bertil Schmidt
https://ebookgate.com/product/bioinformatics-high-performance-
parallel-computer-architectures-embedded-multi-core-systems-1st-
edition-bertil-schmidt/
Releasing Your Potential Expanded Edition Myles Munroe
https://ebookgate.com/product/releasing-your-potential-expanded-
edition-myles-munroe/
Little Brother First Edition Cory Doctorow
https://ebookgate.com/product/little-brother-first-edition-cory-
doctorow/
Node js Recipes 1st Edition Cory Gackenheimer (Auth.)
https://ebookgate.com/product/node-js-recipes-1st-edition-cory-
gackenheimer-auth/
SOA Principles of Service Design 1st Edition Thomas Erl
https://ebookgate.com/product/soa-principles-of-service-
design-1st-edition-thomas-erl/
Communication and Control in Electric Power Systems
Applications of Parallel and Distributed Processing
IEEE Press Series on Power Engineering 1st Edition
Mohammad Shahidehpour
https://ebookgate.com/product/communication-and-control-in-
electric-power-systems-applications-of-parallel-and-distributed-
processing-ieee-press-series-on-power-engineering-1st-edition-
Software Pipelines and SOA Releasing the Power of Multi Core Processing 1st Edition Cory Isaacson
Praise for Software Pipelines and SOA
“Software Pipelines uncovers a new and unique way of software design for high-performance
development. Where other methodologies and frameworks have previously been describing
the problem, Software Pipelines is focusing on the solution. Simply put, Software Pipelines
addresses the developer’s needs for parallel computing and uncovers the throughput offered
by multi-core processors.”
—Filip Hanik, Senior Software Engineer, SpringSource, Inc.
“There are some books that tout vision but provide no pragmatic, hands-on details. Software
Pipelines and SOA offers a dose of both. Isaacson is an authority and practitioner, who under-
stands that the promise of SOA is not fulfilled simply by embracing an architectural style of
loosely coupled, network-based services but in how the applications and services that support
this architectural style are developed and deployed. This book will help support a pragmatic
approach to SOA.”
—Dan Malks,Vice President, Partner Engineering, JackBe
“. . . it provides insights on how to efficiently realize scalability on and across multi-core
machines in a predictable manner using patterns derived from the best practices in distributed
computing and SOA. Written in a conversational manner, one of the pioneering technology
leaders of our time provides keen insights on how to build scalable software solutions.”
—Ravi Palepu, SOA Consultant and Founder of PREDICT
“Software Pipelines paves the road in distributed, SOA, high-performance computing in the-
ory and practice with strong technical background, elegant architecture, and a usable imple-
mentation. A revolution in grid computing and service-oriented architecture.”
—Nicole Nemer, Ph.D., Superior Consulting
“Multi-core computing offers a unique opportunity to deliver dramatic scalability in modern
business applications; but the task is not an easy one, presenting significant challenges to the
software developer. Software Pipelines provides an easy-to-implement, concrete strategy that
enables service-oriented applications to really deliver on the promise of this new hardware
paradigm. A must read for any developer or architect stepping up to the challenge of high-
performance business transaction processing.”
—Henry Truong, Chief Technology Officer, TeleTech, Inc.
“Isaacson offers a fresh approach to componentize and parallelize software applications in a
way that is easy to debug and easy to maintain. Using the high-level abstraction of Software
Pipelines, development managers need not worry about the complexities of concurrent pro-
gramming or the challenges in dealing with maintaining threads, interprocess communication
or deadlocks. Any software architect dealing with performance and scalability issues with
complex transactional flows must consider the Software Pipelines design paradigm.”
—Venkat Pula, Field Application Engineer, Telelogic, an IBM Company
“Cory has captured the power of simplicity, enabling business software applications to expo-
nentially leverage the capacity and capabilities of today’s advanced chip architectures. Using
Software Pipelines, corporate IT groups are able to manage, control and fully utilize the power
of multi-core computing to improve scalability and reduce long-term costs.”
—Jim Hogan, Cognify,Vice President, Managed Services
“Having projects architected to gracefully scale from a single multi-core box all the way to a
cluster of thousands of machines is the new reality. With Software Pipelines, the development
organization can easily architect every project—from the summer intern’s toy prototype to
your flagship technology—as though it might need to scale for worldwide consumption.
Embrace this change now and the day you need that scalability will be your biggest success.
Ignore it and it will likely be your greatest failure.”
—Jackson Gibbs, CTO, Strands
Software Pipelines and SOA
Addison-Wesley Information Technology Series
Capers Jones and David S. Linthicum, Consulting Editors
The information technology (IT) industry is in the public eye now more than ever before because of a number of
major issues in which software technology and national policies are closely related. As the use of software expands,
there is a continuing need for business and software professionals to stay current with the state of the art in software
methodologies and technologies. The goal of the Addison-Wesley Information Technology Series is to cover any
and all topics that affect the IT community. These books illustrate and explore how information technology can be
aligned with business practices to achieve business goals and support business imperatives. Addison-Wesley has
created this innovative series to empower you with the benefits of the industry experts’ experience.
For more information point your browser to www.awprofessional.com/itseries
Sid Adelman, Larissa Terpeluk Moss, Data Warehouse
Project Management. ISBN: 0-201-61635-1
Sid Adelman et al., Impossible Data Warehouse
Situations: Solutions from the Experts.
ISBN: 0-201-76033-9
David Leon Clark, Enterprise Security: The Manager's
Defense Guide. ISBN: 0-201-71972-X
Frank P. Coyle, XML, Web Services, and the Data
Revolution. ISBN: 0-201-77641-3
Jill Dyché, The CRM Handbook: A Business Guide
to Customer Relationship Management.
ISBN: 0-201-73062-6
Patricia L. Ferdinandi, A Requirements Pattern:
Succeeding in the Internet Economy.
ISBN: 0-201-73826-0
David Garmus and David Herron, Function Point
Analysis: Measurement Practices for Successful
Software Projects. ISBN: 0-201-69944-3
Beth Gold-Bernstein, William Ruh, Enterprise
Integration: The Essential Guide to Integration
Solutions. 0-321-22390-X
John Harney, Application Service Providers (ASPs):
A Manager's Guide. ISBN: 0-201-72659-9
International Function Point Users Group, IT
Measurement: Practical Advice from the Experts.
ISBN: 0-201-74158-X
Cory Isaacson, Software Pipelines and SOA: Releasing
the Power of Multi-Core Processing,
ISBN: 0137137974
Capers Jones, Software Assessments, Benchmarks, and
Best Practices. ISBN: 0-201-48542-7
Ravi Kalakota and Marcia Robinson, e-Business 2.0:
Roadmap for Success. ISBN: 0-201-72165-1
Ravi Kalakota and Marcia Robinson, Services Blueprint:
Roadmap for Execution. ISBN: 0-321-15039-2
David S. Linthicum, B2B Application Integration:
e-Business-Enable Your Enterprise. ISBN: 0-201-70936-8
David S. Linthicum, Enterprise Application Integration.
ISBN: 0-201-61583-5
David S. Linthicum, Next Generation Application
Integration: From Simple Information to Web Services.
ISBN: 0-201-84456-7
Anne Thomas Manes, Web Services: A Manager’s
Guide. ISBN: 0-321-18577-3
Larissa T. Moss and Shaku Atre, Business Intelligence
Roadmap: The Complete Project Lifecycle for Decision-
Support Applications. ISBN: 0-201-78420-3
Bud Porter-Roth, Request for Proposal: A Guide to
Effective RFP Development. ISBN: 0-201-77575-1
Ronald G. Ross, Principles of the Business Rule
Approach. ISBN: 0-201-78893-4
Dan Sullivan, Proven Portals: Best Practices for
Planning, Designing, and Developing Enterprise
Portals. ISBN: 0-321-12520-7
Karl E. Wiegers, Peer Reviews in Software: A Practical
Guide. ISBN: 0-201-73485-0
Ralph R. Young, Effective Requirements Practices.
ISBN: 0-201-70912-0
Bill Zoellick, CyberRegs: A Business Guide to Web
Property, Privacy, and Patents. ISBN: 0-201-72230-5
Software Pipelines
and SOA
Releasing the Power of
Multi-Core Processing
Cory Isaacson
Upper Saddle River, NJ • Boston • Indianapolis • San Francisco
New York • Toronto • Montreal • London • Munich • Paris • Madrid
Capetown • 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.
Java, JDBC, J2EE, JNI, Javadoc, MySQL and all Java-based trademarks are trademarks of Sun Microsystems, Inc. in the
United States, other countries, or both.
Linux is a registered trademark of Linus Torvalds in the United States, other countries, or both. UNIX is a registered
trademark of The Open Group in the United States, other countries, or both. Microsoft, Windows, Microsoft .NET
Remoting, and Microsoft .NET connection software are either registered trademarks or trademarks of Microsoft
Corporation in the United States and/or other countries.
IBM, iSeries, and zSeries are trademarks of International Business Machines Corporation in the United States, other
countries, or both.
CORBA is a registered trademark of Object Management Group, Inc. in the United States and/or other countries.
Apache, log4j, JMeter, Ant, and Tomcat are trademarks of The Apache Software Foundation.
dbShards is a trademarks of CodeFutures Corporation, in the United States.
The Software Pipelines Reference Framework includes software developed by the Spring Framework Project
(springframework.org). Spring Framework components copyright 2002–2007 by the original author or authors. The Spring
Framework is licensed under the Apache License,Version 2.0 (the “License”).You may obtain a copy of the License at:
apache.org/licenses/LICENSE-2.0.
Other company, product, or service names mentioned may be trademarks or service marks of others.
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,
corpsales@pearsontechgroup.com
For sales outside the United States please contact: International Sales, international@pearsoned.com
Visit us on the Web: informit.com/aw
Library of Congress Cataloging-in-Publication Data
Isaacson, Cory.
Software pipelines and SOA : releasing the power of multi-core processing
/ Cory Isaacson.—1st ed.
p. cm.
Includes bibliographical references and index.
ISBN 0-13-713797-4 (pbk. : alk. paper)
1. Parallel processing (Electronic computers) 2. Computer software—Development.
3. Web services. I. Title.
QA76.58.I82 2008
004’.35--dc22 2008040489
Copyright © 2009 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-13-713797-8
ISBN-10: 0-13-713797-4
Text printed in the United States on recycled paper by RR Donnelley in Crawfordsville, Indiana.
First printing, December 2008
vii
Contents
Foreword xv
Preface xvii
Acknowledgments xxi
About the Author xxiii
Introduction xxv
Section I: Pipelines Theory 1
CHAPTER 1 Parallel Computing and Business Applications 3
Mechanical Solutions: Parallel Computing at the Operating System Level 5
Symmetric Multiprocessing 5
Clustering 5
Automated Network Routing: Parallel Computing by Predetermined Logic 6
Grid Computing: Parallel Computing by Distribution 6
Parallel Computing for Business Applications 7
The Solution: Software Pipelines 8
Fluid Dynamics 10
Software Pipelines Example 11
Summary 16
CHAPTER 2 Pipelines Law 17
The Problem of Wasted CPU Power 17
Fluid Dynamics 18
Pipelines Law: The Basic Rule 19
Corollary 1: Limitations on the Flow 20
Corollary 2: Restrictions on the Output Flow 21
Software Pipelines Rules 22
Rule 1 22
Rule 2 23
Rule 3 26
Summary 30
viii Contents
CHAPTER 3 Pipelines Examples 31
Bank ATM System (Single-Tier Distribution) 31
Pipelines 32
Pipeline Distributor 33
Bank ATM System (Multi-Tier Distribution) 35
Secondary Pipeline Tier 36
Primary Pipeline Tier 41
Summary 43
CHAPTER 4 Pipelines Patterns 45
Service Invocation Patterns 47
Push Pattern 47
Pull Pattern 47
Message Exchange Patterns 49
One-Way Pattern 49
Request-Response Pattern 49
Pipeline Routing Patterns 51
Round-Robin Routing Pattern 52
Content-Based Routing Pattern 53
Custom Routing Pattern 54
Join Pattern 55
Distributor Patterns 55
Single Distributor Pattern 56
Multi-Tier Distributor Pattern 56
Client Distributor Pattern 58
Database Sharding Distributor Pattern 58
Distributor Connector Patterns 60
Local Method Invocation Pattern 61
Socket Invocation Pattern 62
Web Service Invocation Pattern 62
Other Patterns 62
Summary 62
CHAPTER 5 Pipelines: The Organizational Impact 65
Strategic Evaluation 66
Budget Impact 68
Contents ix
Organizational Roles and Responsibilities 70
Pipelines Architect 71
Business Unit Sponsor 72
IT Management 73
Application Developer 74
Application Project Manager 75
Quality Assurance Manager 76
IT Operations 77
Summary 78
Section II: Pipelines Methodology 79
CHAPTER 6 Software Pipelines Optimization
Cycle: Overview 81
Yet Another Software Methodology? 81
SPOC Overview 82
CHAPTER 7 The Five Steps of SPOC 85
Summary 88
CHAPTER 8 Pipelines by Example: Introducing the
Pipelines Bank Corporation 89
SPOC Report Template 93
Summary 94
CHAPTER 9 SPOC Step 1: Pipelines Objectives 95
Step 1.1: Identify Business Objectives/Requirements 96
Step 1.2: Determine Input Processing Rate 102
Step 1.3: Determine Future Potential Input Processing Rate 104
Step 1.4: Measure Current Capacity 107
Step 1.5: Calculate Performance Gap 109
Step 1.6: Define Pipelines Targets 111
Summary 113
x Contents
CHAPTER 10 SPOC Step 2: Pipelines Analysis 115
Step 2.1: Map Current Process Flow 116
Step 2.2: Identify Existing Components 119
Step 2.3: Measure Processing Rate of Existing Components 121
Step 2.4: Calculate Processing Rate of Entire Flow 124
Step 2.5: Identify Restriction Points 127
Summary 129
CHAPTER 11 SPOC Step 3: Pipelines Design 131
Step 3.1: Define Service Flow Design 133
Step 3.2: Identify New Components 138
Step 3.3: Identify Pipeline Opportunities 141
Step 3.4: Define Pipelines Scheme 145
Step 3.5: Determine Distributor Rate 151
Step 3.6: Design Physical Deployment Environment 154
Step 3.7: Define/Optimize Pipelines Design 155
Pipeline the Downstream Service 156
Pipeline Services Independently 159
Pipeline the Entire Service 161
Summary 168
CHAPTER 12 SPOC Step 4: Pipelines Implementation 169
Step 4.1: Establish Software Pipelines Framework 171
Step 4.2: Modify Existing Components 173
Map Components to Service Flow 174
Evaluate Components 174
Determine How to Incorporate Components 174
Prepare Component Table 175
Develop Components 175
Step 4.3: Develop New Components 178
Step 4.4: Orchestrate Service Flows 179
Step 4.5: Instrument Service Flow 181
Step 4.6: Develop/Modify Pipeline Sets 182
Step 4.7: Test and Optimize Pipelines Implementation 190
Summary 193
Contents xi
CHAPTER 13 SPOC Step 5: Pipelines Deployment 195
Step 5.1: Plan Pipelines Deployment 196
Step 5.2: Deploy to Production Environment 197
Step 5.3: Monitor Production Environment 198
Step 5.4: Evaluate Results, Plan Next SPOC Iteration 199
Summary 201
Section III: Pipelines Examples 203
CHAPTER 14 Hello Software Pipelines 205
Define the Message 206
Build the Service 207
Configure the Distributors 209
Create the Client 212
Run the Service 215
Summary 215
CHAPTER 15 Scaling Hello Software Pipelines 217
Scale the Service 217
Develop a Scalable Test Client 219
Run the Service 223
Summary 228
CHAPTER 16 Additional Pipelines Router Configurations 229
Content-Based Router 229
Custom Pipelines Router 241
Summary 256
CHAPTER 17 Getting an Answer from Hello
Software Pipelines 257
Request-Response Messaging 257
Use Request-Response with Hello Software Pipelines 261
Summary 273
xii Contents
CHAPTER 18 Additional Distributor Connector Patterns 275
Define and Configure a Connector 275
Socket Connector 278
Web Service Connector 280
Summary 282
CHAPTER 19 Using a Multi-Tier Distributor 283
Configure the Multi-Tier Distributors 284
Create the Client 289
Run the Service 292
Summary 293
CHAPTER 20 Database Sharding Distributor 295
Database Shards Example 297
Create the Database Shards 299
Build the Service 299
Configure the Distributor 303
Configure the Sharding Driver 304
Create the Client 305
Run the Service 307
Summary 309
CHAPTER 21 Pipelines Framework Overview 311
Interface Overview 311
AbstractMessage 312
PipelinesDistributor 313
PipelinesConnector 313
PipelinesRouter 313
Pipeline 314
PipelineService 314
Pipelines Instrumentor 314
Summary 322
Contents xiii
CHAPTER 22 Pipelines Bank Corporation (PBCOR) Example 323
Account Transaction 323
Pipelines Configuration 328
Spring Framework 332
Database Access 333
AuthorizeTransactionService 339
Connect Services 342
ValidateService 345
DebitTransactionService 345
Run the Test 348
Summary 349
Section IV: The Future of Software
Pipelines 351
CHAPTER 23 The Future of Software Pipelines 353
Final Words of Advice 353
Ideas for the Future 354
APPENDIX Pipelines Reference Framework
Javadoc 357
Index 375
This page intentionally left blank
xv
Foreword
Multi-core hardware is the new normal. Major computer chip vendors have
essentially halted the regular increase in CPU clock speeds that reigned for almost
a half century in response to issues like power consumption, heat output, and
unpredictability of quantum physics (to paraphrase Einstein, CPUs shouldn’t
play dice …).
Instead, they are using multi-core architectures to deliver increased process-
ing power in place of faster clock speeds. Although this is a logical move, a large
percentage of existing software applications cannot take advantage of the pro-
cessing power on the additional cores, and they often run even slower due to
reduced clock speeds in multi-core CPUs, setting up what could be called the
Multi-core Dilemma.
In general, the Multi-core Dilemma applies across the spectrum of program-
ming languages—Java, C#, C++, etc. This is why major technology vendors are
investing heavily in research intended to lead to the next generation of program-
ming environments. But what about the software that has already been written?
The reality for any software application is that to benefit from multi-core, the
application must either be written to be multi-threaded, or it must be in a con-
tainer that effectively makes it multi-threaded.
There is no “plug-and-play” solution, but there are development tools and
containers available that can help with the Multi-core Dilemma for many use
cases. There are not, however, many good methodologies for solving this prob-
lem. In Software Pipelines and SOA, Cory Isaacson outlines a systematic, logical
approach for planning and executing the move to multi-core.
This hardware trend will create a tectonic shift in the software industry as
billions of lines of code are migrated, optimized, or rewritten to take advantage
of multi-core hardware. Practical, logical approaches will be essential to making
this transition smoothly.
Now that parallel computing has moved from being an edge case to being a
common requirement for enterprise software, enabling applications to run in
parallel can’t be limited to only the most experienced programmers. Software
Pipelines and SOA describes several techniques for bringing parallel computing to
mainstream software development.
xvi Foreword
For example, one technique for making parallel computing happen through-
out your development group is to separate your concurrency model from the
application logic, much as you have your data and UI layer separate from the
main business logic. Doing so allows feature developers to focus on the applica-
tion functionality without having to worry about explicitly threading at design
time. In addition, it can be an effective technique for migrating existing single-
threaded applications into multi-core environments.
In addition, Software Pipelines and SOA discusses the connection between ser-
vice-oriented architectures and multi-core. The basic approach is to treat your
application as a collection of services and deploy a container that can run multi-
ple instances of those services.
Using this link between SOA and multi-core, services can be a key part of
your concurrency model. By separating concurrency from application logic, you
can make the migration of existing applications to multi-core much simpler and
enable more effective building of new parallel applications. It also makes it much
easier to reconfigure (rather than recode) your applications, then continue to
optimize them and move to new generations of hardware—from 2 and 4 cores to
8, 16, 32 … 128, and beyond. Designing enterprise applications in a service-
oriented architecture makes it easier to separate concurrency from application
logic, so that they work together.
There is work involved if you have a monolithic application, but it is still sig-
nificantly less than rewriting. If you plan to use a container, make sure that it can
handle your business application requirements, which might include message
ordering, forks and joins in the business process, human interaction, and long-
running processes.
Most parallel computing approaches use traditional multi-threaded pro-
gramming, a “thread-level” approach. Software Pipelines and SOA describes a “ser-
vice-level” approach that can provide a way to move to multi-core that requires
less effort and is more configurable. It complements, rather than replaces, the
traditional thread-level approaches.
Moving your existing applications to multi-core takes some planning, but it
might not be as much work as you think. Design a solid concurrency model, and
your existing applications can continue to serve you for years to come. Software
Pipelines and SOA provides a great road map for getting there.
Patrick Leonard
VP, Engineering & Product Strategy
Rogue Wave Software
pleonard@roguewave.com
xvii
Preface
We’re now in the multi-core era. As consumers of computing power, we’ve all
come to expect a never-ending increase in power, and CPU manufacturers are
now using multi-core processors to continue that long-standing trend. If we want
to take full advantage of this enormous capacity, our business applications must
“do more than one thing at a time.” However, traditional parallel computing
methods (such as multi-threading, SMP, and clustering) are either limiting or
extremely difficult to implement—especially when used on top of application
components that weren’t originally designed for a parallel world.
Software Pipelines architecture is a new architecture that specifically
addresses the problem of using parallel processing in the multi-core era. It is a
new approach to the problem. Pipeline technology abstracts the complexities of
parallel computing and makes it possible to use the power of the new CPUs for
business applications.
We wrote this book primarily for software architects, application developers,
and application development managers who need high-performance, scalable
business applications. Project managers, software quality assurance specialists,
and IT operations managers will also find it useful; however, the main focus is
software development. Our intention was to make the book as applicable as pos-
sible, and to provide tools that you can quickly learn and apply to your own
development challenges.
The book is divided into four sections, which we’ll describe in this preface.
Pipelines Theory
The Pipelines Theory section, Chapters 1 through 5, covers the following topics:
• How pipelines work, including the fundamental concepts and underlying
theory of Software Pipelines
• What pipelines can accomplish
• Methods for applying Software Pipelines
• Pipelines Patterns, including various ways to apply Software Pipelines in busi-
ness application scenarios, setting the stage for the examples in later chapters
xviii Preface
As the foundation for the remainder of the book, this section is appropriate for
all readers. If you’re a software architect or an application developer, you should
definitely study this section first. If you’re reading the book from a managerial
perspective, or if your interest is more general and less technical, you can focus
on just this section.
Pipelines Methodology
The Pipelines Methodology section, Chapters 6 through 13, shows how to imple-
ment Software Pipelines by using the step-by-step Software Pipelines
Optimization Cycle (SPOC). To illustrate how the methodology works, we use it
to solve a business problem for a fictitious example company, the Pipelines Bank
Corporation (PBCOR). In each chapter we present a new step, then show you
how we used the step in our PBCOR example.
This section will be of interest to all primary audiences of the book, includ-
ing project managers. The PBCOR examples get into a fair amount of technical
detail; therefore, application development managers might want to skip over the
more complex examples.
Pipelines Examples
The Pipelines Examples section, Chapters 14 through 22, contains code examples
based on the reference Pipelines Framework we developed for the book. We’ve
included examples for each main Pipelines Pattern from the Pipelines Theory
section. You can use these as guides for applying Software Pipelines directly to
your own real-world applications.
This section is for software architects and application developers, the roles
directly involved in pipelines implementation. In addition, IT operations manag-
ers will find it helpful to read the configuration sections, which show how to
modify the scalability of an application without modifying the actual application
components.
We recommend that you read the first three chapters of this section in detail.
These basic chapters include Chapter 14,“Hello Software Pipelines”; Chapter 15,
“Scaling Hello Software Pipelines”; and Chapter 16,“Additional Pipelines Router
Configurations.” After that, you might prefer to scan the more advanced exam-
ples in Chapters 17 through 22, then concentrate on the ones that most apply to
your specific application scenarios.
Preface xix
The Future of Software Pipelines
In the final section we tell you about the future we envision for Software Pipelines
architecture. There are plenty of greenfield areas that can be developed, and it is
our hope that this section will inspire readers to help move the technology for-
ward into the mainstream.
Conventions
In our examples, when we present a section of code or XML, refer to a command,
or refer to a code element, we’ll use a monospaced font, for example, <pipe-
lines-distributor>. For names of components, such as services, clients,
and distributors, we’ll use an italic monospaced font, for example,
Distributor1.
The Web Site
We’ve established a Web site for Software Pipelines technology at softwarepipe-
lines.org. The site is for readers of the book and for anyone else who is interested
in using or advancing the Software Pipelines architecture. You can download the
following items from the site:
• Tools and sample report templates for the Software Pipelines Optimization
Cycle (SPOC) methodology
• Source code for the reference Pipelines Framework
• Complete source code for all examples in the book
• Articles and discussions on pipelines technology and its applications
We hope you find Software Pipelines as exciting as we’ve found it, and that
you take this opportunity to capitalize on its capabilities and use it to help over-
come your own performance and scalability challenges.
This page intentionally left blank
xxi
Acknowledgments
There are many individuals who have contributed to the evolution of Software
Pipelines, and who have helped with the creation of this first book. I am deeply
indebted to all of them for the ideas, input, and, most of all, encouragement and
support on the project. I cannot mention everyone, but here are some of the
many contributors who made this work possible:
Ravi Palepu, great friend and business associate, spent countless hours with
me discussing pipelines ideas and helping to develop the initial concepts and
outline for the current work.
Patrick Leonard and David Haney of Rogue Wave Software worked with me
to formulate the original core pipelines concepts, forming the foundation of the
current work.
I also want to acknowledge the entire Rogue Wave Software organization, for
its support during and after my tenure there as president of the company.
Barbara Howell was the illustrator and incredibly dedicated editor for my
draft of the book; without her I never could have gotten the job done. Her persis-
tence, attention to detail, and talent for helping me communicate the key con-
cepts through the diagrams and graphics you see in the book were invaluable.
Colin Holm provided the majority of development for the code examples, as
well as the reference Pipelines Framework presented in the third section. Colin’s
insight and work on this were critical to the book’s final content, and his ability
to create the examples from the viewpoint of a “real-world” business application
developer helped transform Software Pipelines from concept to reality.
Last, I must thank my family, especially my wife, Kim, for putting up with
the enormous amount of work required to complete the book. I also want to
thank my talented and understanding children for their cooperation and under-
standing. In fact, my older son, Devyn (a genuine math whiz), helped clarify the
early formulas for Pipelines Law, and my younger son, Tyler, was often a sound-
ing board for the various ideas in the book and how to present them.
This page intentionally left blank
xxiii
About the Author
Cory Isaacson is CEO of Prelude Innovations, Inc., a firm specializing in the
incubation and introduction of leading software technology products. Actively
involved in leading information technologies for over 20 years, Cory served as
technical editor and columnist for WebSphere Advisor Magazine, has spoken at
hundreds of public events and seminars, and authored numerous articles on
architecture and practicalities of employing technology. Cory has provided guid-
ance to hundreds of top architects and professional developers in the financial
services, entertainment, telco, and software industries on the development and
implementation of powerful business applications.
Most recently Cory was president of Rogue Wave Software, managing the
organization for over three years, building new product strategies, and culminat-
ing in a successful acquisition in mid-2007 by a leading private equity firm. Cory
has focused on efficiently addressing development and deployment challenges of
emerging technologies such as SOA, virtualization, and commoditization of
resources to support real-world business applications. Cory’s expertise with high-
performance transactional applications has helped leading IT organizations
respond to the challenges of dramatic growth in business and data volumes, while
still managing cost pressures. Most recently, Cory has been an active evangelist
on the need for using concurrent processing and scalable database techniques in
order to improve application performance on multi-core architectures.
Cory received his B.A. degree from the University of California at Santa
Barbara.
This page intentionally left blank
xxv
Introduction
Throughout IT history,professional developers have searched for ways to enhance
the performance of critical business applications. The computer industry has
tried to provide the answer time and time again, and we’ve seen plenty of solu-
tions, architectures, and approaches. Obviously, the problem is not a minor one.
In today’s information-based economy, companies often succeed or fail because
of their software performance. There are abundant examples: banking systems,
trading systems, call center operations, reporting services, and many others—
they all depend on applications with high-performance requirements. In these
industries, viability is directly tied to the speed at which a company conducts
business. A slow, inadequate, or unresponsive application is damaging to opera-
tions and the bottom line; ultimately, it can literally kill or impair the organiza-
tion that relies on it. And there is no end in sight; as we depend more and more
on the exchange of information to do business, performance will lag behind
demand even further.
There’s an additional problem. Simply achieving faster performance of indi-
vidual components isn’t always enough. If your company installs a new applica-
tion, if your business expands, or if your data volume rises, you may suddenly
need an order-of-magnitude increase in performance—five, ten, twenty times or
more.
Another vector is also critical: How fast can you adapt your software to meet
new needs and competitive threats? The popularity and rapid adoption of ser-
vice-oriented architecture (SOA) is hard evidence of the demand for more flexi-
ble software systems.
SOA is a superior technology. Compared to earlier trends in IT architecture,
SOA delivers better on its promises. But it presents its own challenges. If you’re
using SOA for development, it’s even more important to address performance
and scalability, because of the following factors:
• In general observation, SOA demands significantly more computing power
from a system than earlier monolithic or tightly coupled designs.
xxvi Introduction
• The very notion of loosely coupled services implies message-centric applica-
tion development. Developers not only have to write traditional processing
logic; they also have to handle message transmission, validation, interpreta-
tion, and generation—all of which are CPU- and process-intensive.
• As more organizations use SOA, we can expect messaging volume to explode
and put a tremendous load on existing IT systems. The potential for adverse
effects will escalate.
Predictions show that over the next year or two, organizations using SOA
will run into performance issues. This is nothing new; historically, each time the
business world adopts a new software architecture, it suffers through growing
pains. In the past twenty years, the shakeout period for each new major paradigm
shift in software development has lasted about one to three years for a given evo-
lutionary phase (any early J2EE user can attest to that). During that time, busi-
nesses gradually adopt the new design, and while doing so, they face significant
performance- and scalability-related problems. In many cases software develop-
ers cannot overcome the steep learning curve; many projects end in outright fail-
ure when the deployed application doesn’t perform as expected.
Until recently, hardware was the saving grace for such immature architec-
tures. Whenever the computer industry made a significant advance, mostly in
CPU performance, performance bottlenecks could be fixed by plugging in a faster
chip or by using some other mechanical solution. That advantage is now gone.
We’ve hit a plateau in microprocessor technology, which comes from physical
factors such as power consumption, heat generation, and quantum mechanics.
The industry can no longer easily increase the clock speed of single CPUs.
Therefore, for now and the foreseeable future, CPU vendors are relying on multi-
core designs to increase horsepower. The catch is that if you want to take advan-
tage of these new multi-core chips, your software must implement parallel
processing—not a common capability in the majority of today’s applications.
Let’s sum up what today’s businesses really need from their software archi-
tecture:
• A practical approach to parallel processing, for performance and scalability
• Flexibility, to enable the business to adapt to market and other environmen-
tal changes
Introduction xxvii
Creating an application with these characteristics is not easy, especially when
using traditional means. Further, making such a paradigm shift work in the real
world requires the talent, business knowledge, and technical expertise of the pro-
fessional developer. In short, the professional developer needs a set of tools
designed to meet these objectives, enabling a new level of parallel processing for
business applications.
Therefore, what is needed is a flexible, sensible, and practical approach to
parallel processing. The Software Pipelines technology was developed to be that
approach, offering the professional developer a usable set of tools and capabili-
ties to enable scalable processing for today’s competitive business application
environment.
What Do People Think about Parallel Processing?
As part of our research for this book, we wanted to find out what the software
community thinks about parallel processing, so we conducted a statistical analy-
sis of associated Web documents. Our analysis tool compares the usage of terms
in Web documents, along with their frequency, in order to indicate the overall
trend for a given subject. The results are intriguing; they confirm the importance
of parallel processing as a solution for modern computing challenges.
To run the analysis, we based our search on the subject“software”and looked
for references to related terms in the context of that subject. We started with the
following terms:
• Multi-core
• Multi-threaded
• Parallel processing
• Parallel programming
xxviii Introduction
We’ve included several charts in this section to show you the results. The first
chart, Figure I.1, shows how often people use each term. As you can see, parallel
programming is the most popular term, followed by multi-core, and then parallel
processing. This gives us a good idea of how the software community talks about
the subject.
To get a more detailed query, we cross-linked each term with the following
attributes:
• Complex
• Hard
• Important
• Knowledge
• Useful
Figure I.1 Software query
Introduction xxix
In Figure I.2 you can see the relationship of each attribute to parallel process-
ing. Parallel processing is perceived as “useful” and “important,” its two strongest
attributes.
Figure I.2 Attributes for parallel processing
xxx Introduction
Figure I.3 shows parallel programming and its attributes. Parallel program-
ming is definitely “important,” but a high percentage of documents also mention
that it is “hard.” It’s interesting that “knowledge” has a high rank, which is not
surprising, given the difficulty of parallel programming and the general lack of
experience with its techniques.
Figure I.3 Attributes for parallel programming
Introduction xxxi
Figures I.4 and I.5 show the attributes for multi-core and then multi-threaded.
Both charts show responses similar to what we found for parallel programming.
Figure I.5 Attributes for multi-threaded
Figure I.4 Attributes for multi-core
xxxii Introduction
In Figure I.6 we’ve included a chart with all terms and attributes to show the
relative strength of each combination.You can see that parallel processing is con-
sidered “useful,” and that parallel programming is both “important” and “hard.”
What conclusion could you draw from all of this? It appears that people who
talk about software are saying that parallel processing is important, but it’s not
easy. We’re hoping we can help make it easier. The goal of Software Pipelines, and
our goal in writing this book, is to provide a practical and useful set of techniques
to address the challenge, and our intention is that you will find it helpful in your
own application development and business management.
Figure I.6 Attributes for all terms
S E C T I O N I
1
Pipelines Theory
The first section of this book covers the fundamentals of Software Pipelines.
In Chapter 1, “Parallel Computing and Business Applications,” we investigate the
existing methods for parallel processing. This beginning discussion is useful as a frame of
reference for comparing Software Pipelines to other technologies with which you’re famil-
iar. After that, we introduce you to the most basic principles of the pipelines architecture,
and then we present our first example of a pipelined application.
The following chapter, “Pipelines Law,” describes the basic theory of pipelines and
explains how to “do the math” for predicting and managing pipelines performance. We
introduce Pipelines Law by drawing an analogy to fluid dynamics, a long-standing engi-
neering discipline that provides insights into gauging the performance of business trans-
action applications. From these simple principles you’ll get the tools for modeling your
own applications and for identifying areas where you can improve performance.
Chapter 3, “Pipelines Examples,” contains a simplified automated teller machine
(ATM) example. We use this basic example to show you how the theoretical foundation
fits into a real-world application. In later sections we expand the banking application con-
cept to more detailed, advanced examples.
We’ve included a number of common, useful patterns for pipelines implementations
in Chapter 4, “Pipelines Patterns.” You can implement Software Pipelines in many ways.
In this chapter you’ll learn about several aspects and their options. Later in the book we
cover these patterns in much more detail. You’ll learn how they work and how you can
apply them to solve various problems in performance and scalability.
In the final chapter of the section,“Pipelines: The Organizational Impact,” we present
the issues with which IT and business organizations must deal when using Software
Pipelines technology. We cover all the critical points, including strategy, resources, and
budget.
This page intentionally left blank
3
C H A P T E R O N E
Parallel Computing and
Business Applications
If you own, manage, or work with a critical business appli-
cation, you’re most likely dealing with performance prob-
lems. The application can’t handle the ever-increasing
data volume, it can’t scale to meet new demand, or its per-
formance is never good enough or fast enough. You need
a higher level of performance; or even more daunting,
you may need an order-of-magnitude increase so you can
multiply the number of transactions your application can
handle. In today’s computing environment, there’s really
only one way to get there: Utilize a parallel architecture to
run multiple tasks at the same time.
The fundamental concept of parallel architecture is
this: Given a series of tasks to perform, divide those tasks
into discrete elements, some or all of which can be pro-
cessed at the same time on a set of computing resources.
Figure 1.1 illustrates this process.
To do this, you have to break the application into a
series of steps,some of which can run in parallel.However,
that’s really hard to do if you’re working with existing
business applications that do not lend themselves to such
decomposition. Whether monolithic or object-oriented,
most modern applications are tightly coupled, and that
makes it hard to decompose a given process into steps.
Over the years, computer scientists have performed
extensive research into parallel architecture and they’ve
developed many techniques, but until now they focused
on techniques that don’t easily lend themselves to busi-
4 1. Parallel Computing and Business Applications
ness systems. At the same time, demand for greater performance started over-
reaching the limit of most business applications, and the recent trend toward a
service-oriented approach has made the challenge even greater. Parallel process-
ing can fix the problem, but common existing techniques are either too complex
to adapt to typical business transactions, or they don’t even apply to the business
arena.
Before we show you the solution, let’s look at the existing techniques for par-
allel computing. The three main approaches are
• Mechanical solutions used at the operating system level, such as symmetric
multiprocessing (SMP) and clustering
• Automated network routing, such as round-robin distribution of requests
• Software-controlled grid computing
Figure 1.1 The fundamental concept of parallel architecture
Mechanical Solutions: Parallel Computing at the Operating System Level 5
Mechanical Solutions: Parallel Computing at the Operating
System Level
Symmetric Multiprocessing
SMP automatically distributes application tasks onto multiple processors inside
a single physical computer; the tasks share memory and other hardware resources.
This approach is highly efficient and easy to implement, because you don’t need
specific, detailed knowledge of how SMP divides the workload.
Mechanical solutions such as SMP are very useful as generic one-size-fits-all
techniques. To get the most out of SMP, however, you have to write applications
with multi-threaded logic. This is a tricky job at best and is not, in general, the
forte of most corporate IT developers. Plus, SMP is a black-box approach, which
can make it very difficult to debug resource contention. For example, if you have
shared software components and run into a problem, finding the cause of the
bug may be very hard and time-consuming.
There’s another drawback: Resource sharing between processors is tightly
coupled and is not optimized for any particular application. This puts a lid on
potential performance gain, and when you start scaling an application, shared
resources will bottleneck at some point. So you might scale an application to
eight processors with great results, but when you go to 16, you don’t see any real
gain in performance.
Clustering
In clustering, another widely used mechanical solution, separate physical com-
puters share the workload of an application over a network. This technique pro-
vides some capabilities for automatic parallel processing and is often used for
fail-over and redundancy.
Clustering techniques are automated and contain some inefficient function-
ality. If you’re not using centralized resources, the system has to copy critical
information (or in some cases, all information) from one node to another when-
ever a change in state occurs, which can become a serious bottleneck. As is the
case with SMP, clustering is often effective up to a point—then adding hardware
results in severely diminished returns.
6 1. Parallel Computing and Business Applications
Automated Network Routing: Parallel Computing
by Predetermined Logic
In this technique you use some type of predetermined logic to divide application
requests. One common approach is round-robin routing, where the system dis-
tributes requests evenly, one after the next, among a set of physical computers.
Each computer provides exactly the same application functionality. A good
example and use case for round-robin is a Web application, in which the system
shunts each Web page request to one of several available processors.
Although this approach is useful for certain applications and can be useful as
part of a Software Pipelines design, it is also very limited; the router has no logic
for determining the best route for a given request, and all downstream processors
perform identical tasks. Further, business applications often demand strict“order
of processing” requirements, something that simple round-robin logic cannot
accommodate.
Grid Computing: Parallel Computing by Distribution
All of the techniques covered so far have their uses, but you can’t use them for
massive scalability, and they don’t work for transaction-based, message-oriented
applications. You can scale them mechanically and automatically to a certain
level, at which point the overhead of maintaining shared or redundant resources
limits performance gains. If you need greater scalability, grid computing is a bet-
ter choice.
In grid computing the system distributes discrete tasks across many machines
in a network. Typical grid architecture includes a centralized task scheduler,
which distributes and coordinates tasks with other computing facilities across
the network.
Grid computing can deliver far higher throughput than the automated
approaches described earlier, but it puts a significant burden on the developer.
You must explicitly write the code for dividing tasks, for distributing tasks, and
for reassembling the processed results.
Most importantly, grid computing is primarily designed to solve the“embar-
rassingly parallel” problem—long-running, computation-intensive processes as
found in scientific or engineering applications. Grids are very beneficial for the
typical use cases, such as modeling fluid dynamics, tracing the human genome,
and complex financial analytics simulations. In each of these applications you
divide a massive, long-running computation among multiple nodes. This divides
Parallel Computing for Business Applications 7
the problem into smaller, similar tasks, which interact predictably with computa-
tional resources. However, this is not as useful for business applications, given
their transactional nature, mixed workload requirements, and ever-changing vol-
ume demands.
Parallel Computing for Business Applications
Business applications are very different from engineering or scientific applica-
tions. They have the following traits:
• They process transactions.
• They process tasks with mixed workloads. Quite often you can’t predict the
size of each task, or what the processing requirements might be.
• The workload varies widely throughout a given time period. It might even
change from day to day, or from one hour to the next.
• They often have requirements that defy the very concept of performing mul-
tiple tasks in parallel. For example, first in/first out (FIFO) transactions
(which are very commonly used) must be done in an exact, ordered
sequence.
• They almost always use a database or other centralized resource that bottle-
necks and caps off transaction throughput.
Up to now, research on parallel computing concentrated mostly on mechan-
ical solutions with limited scalability, or on grid-based scientific and engineering
applications that lie outside the business domain. What we need is a new, simpler
way to implement parallel computing for businesses. This new approach must
support the following requirements:
• It must handle a wide variety of business application needs.
• It must provide ultimate scalability.
• It must maintain critical business requirements.
• It must be easy to implement by corporate IT developers.
In reality, there’s no automagic answer for scaling business applications,
because each organization has very different needs and requirements. The ulti-
mate solution requires the right tools, architecture, and approach, and it must
focus on business applications. But more importantly, the solution requires the
expertise of the professional developer—the invaluable corporate resource who
possesses both a full understanding of the technology and an intimate knowledge
of the business domain.
Discovering Diverse Content Through
Random Scribd Documents
through the railing and disappear for half an hour together in the
then inclosed and thickly planted greensward, knowing perfectly well
that Lamb did not dare to move from the spot where he (Dash) had
disappeared, till he thought proper to show himself again. And they
used to take this walk oftener than any other, precisely because Dash
liked it, and Lamb did not.”
Beecher said that “in evolution, the dog got up before the door was
shut.” If there were not reason, mirthfulness, love, honour, and
fidelity in a dog, he did not know where to look for them, And Huxley
has devoted much attention to the study of canine ability. He once
illustrated, by the skeleton of the animal being raised on hind legs,
that in internal construction the only difference between man and
dog was one of size and proportion. There was not a bone in one
which did not exist in the other, not a single constituent in the one
that was not to be found in the other, and by the same process he
could prove that the dog had a mind. His own dog was certainly not a
mere piece of animate machinery. He once possessed a dog which he
frequently left among the thousands frequenting Regent’s Park to
secrete himself behind a tree. So soon as the animal found that he
had lost his master, he laid his nose to the ground and soon tracked
him to his hiding place. He believed there was no fundamental
faculty connected with the reasoning powers that might not be
demonstrated to exist in dogs. He did not believe that dogs ever took
any pleasure in music; but this seems not to be always the case.
Adelaide Phillips, the famous contralto, told me that her splendid
Newfoundland Cæsar was quite a musician. She gave him singing
lessons regularly. “I see him now,” she said, “his fore paws resting on
my knee. I would say: ‘Now the lesson begins. Look at me, sir. Do as I
do.’ Then I would run down the scale in thirds, and Cæsar, with head
thrown back and swaying from side to side, would really sing the
scale. He would sing the air of The Brook very correctly. But it was
the best sport to see him attempt the operatic.” Here her gestures
became showy and impressive, as if on the stage, and her mimicking
of the dog’s efforts to follow her were comical in the extreme.
Sometimes (so quickly did he catch all the tricks of the profession) he
would not sing until urged again and again. Sometimes he would be
“out of voice,” and make most discordant sounds. He has an
honoured grave at her country home in Marshfield, where Webster
also put up a stone in memory of his horse Greatheart.
Charlotte Cushman loved animals, especially dogs and horses; and
her blue Skye terrier Bushie, with her human eyes and uncommon
intelligence, has a permanent place in the memoirs of her mistress.
Miss Cushman would say, “Play the piano, Bushie,” and Bush knew
perfectly well what was meant, and would go through the
performance, adding a few recitative barks with great gravity and
éclat. The phrase “human eyes” recalls what Blackmore, the novelist
—who has a genuine, loving appreciation of our dear dumb animals—
says of a dog in Christowell: “No lady in the land has eyes more lucid,
loving, eloquent, and even if she had, they would be as nothing
without the tan spots over them.”
Patti has many pets, and always takes some dog with her on her
travels, causing great commotion at hotels. She also leaves many
behind her as a necessity. She has an aviary at her castle in Wales,
and owns several most loquacious parrots.
Miss Mitford’s gushing eulogy upon one of her numerous dogs is
too extravagant to be quoted at length: “There never was such a dog.
His temper was, beyond comparison, the sweetest ever known.
Nobody ever saw him out of humour, and his sagacity was equal to
his temper.... I shall miss him every moment of my life. We covered
his dead body with flowers; every flower in the garden. Everybody
loved him, dear saint, as I used to call him, and as I do not doubt he
now is. Heaven bless him, beloved angel!”
Mr. Fields writes: “Miss Mitford used to write me long letters
about Fanchon, a dog whose personal acquaintance I had made some
time before while on a visit to her cottage. Every virtue under heaven
she attributed to that canine individual, and I was obliged to allow in
my return letters that since our planet began to spin nothing
comparable to Fanchon had ever run on four legs.”
Mrs. Browning was fond of pets, especially of her dog Flush,
presented by Miss Mitford, which she has immortalized in a sonnet
and a long and exquisite poem:
Flush or Faunus.
You see this dog. It was but yesterday
I mused forgetful of his presence here;
Till thought on thought drew downward tear on tear;
When from the pillow, where wet-cheeked I lay,
A head as hairy as Faunus’ thrust its way
Right sudden against my face, two golden, clear,
Great eyes astonished mine; a drooping ear
Did flap me on either cheek to dry the spray.
I started first; as some Arcadian
Amazed by goatly god in twilight grove;
But as the bearded vision closelier ran
My tears off, I knew Flush, and rose above
Surprise and sadness; thanking the true Pan
Who by low creatures leads to heights of love.
The poem is equally beautiful:
To Flush, my Dog.
Other dogs may be thy peers
Haply in these drooping ears
And this glossy fairness.
But of thee it shall be said,
This dog watched beside a bed
Day and night unweary;
Watched within a curtained room,
Where no sunbeam brake the gloom
Round the sick and weary.
Roses gathered for a vase
In that chamber died apace,
Beam and breeze resigning;
This dog only waited on,
Knowing that when light is gone
Love remains for shining.
Other dogs in thymy dew
Tracked the hares and followed through
Sunny moor or meadow;
This dog only crept and crept
Next a languid cheek that slept,
Sharing in the shadow.
Other dogs of loyal cheer
Bounded at the whistle clear,
Up the woodside hieing;
This dog only watched in reach
Of a faintly uttered speech,
Or a louder sighing.
And if one or two quick tears
Dropped upon his glossy ears,
Or a sigh came double,
Up he sprang in eager haste,
Fawning, fondling, breathing fast
In a tender trouble.
And this dog was satisfied
If a pale, thin hand would glide
Down his dewlaps sloping,
Which he pushed his nose within,
After platforming his chin
O h l l f
On the palm left open.
This dog, if a friendly voice
Call him now to blither choice
Than such chamber keeping,
“Come out,” praying from the door,
Presseth backward as before,
Up against me leaping.
Therefore to this dog will I,
Tenderly, not scornfully,
Render praise and favour;
With my hand upon his head,
Is my benediction said,
Therefore and forever.
Mrs. Browning said in a note to this poem: “This dog was the gift
of my dear and admired friend, Miss Mitford, and belongs to the
beautiful race she has rendered celebrated among English and
American readers.”
Hogg, the Ettrick Shepherd, addressed a long poem to his dog,
ending:
When my last bannock’s on the hearth,
Of that thou canna want thy share;
While I ha’e house or hauld on earth,
My Hector shall ha’e shelter there.
Another favourite was honoured by Dr. Holland, the essayist,
lecturer, magazine editor, and poet:
To my Dog Blanco.
My dear, dumb friend, low lying there,
A willing vassal at my feet,
Glad partner of my home and fare,
My shadow in the street.
I look into your great brown eyes,
Where love and loyal homage shine,
And wonder where the difference lies
Between your soul and mine!
For all of good that I have found
Within myself or human kind,
Hath royally informed and crowned
Your gentle heart and mind.
I scan the whole broad earth around
For that one heart which, leal and true,
Bears friendship without end or bound,
And find the prize in you.
I trust you as I trust the stars;
Nor cruel loss, nor scoff of pride,
Nor beggary, nor dungeon bars,
Can move you from my side!
As patient under injury
As any Christian saint of old,
As gentle as a lamb with me,
But with your brothers bold;
More playful than a frolic boy,
More watchful than a sentinel,
By day and night your constant joy
To guard and please me well.
I clasp your head upon my breast—
The while you whine and lick my hand—
And thus our friendship is confessed,
And thus we understand!
Ah, Blanco! did I worship God
As truly as you worship me,
Or follow where my Master trod
With your humility—
Did I sit fondly at his feet,
As you, dear Blanco, sit at mine,
And watch him with a love as sweet,
My life would grow divine!
Maria Edgeworth wrote to her aunt, Mrs. Ruxton, in 1819, “I see
my little dog on your lap, and feel your hand patting his head, and
hear your voice telling him that it is for Maria’s sake he is there.”
What a pathetic friendship existed between Emily Brontë and the
dog whom she was sure could understand every word she said to
him! “She always fed the animals herself; the old cat; Flossy, her
favourite spaniel; Keeper, the fierce bulldog, her own constant dear
companion, whose portrait, drawn by her own spirited hand, is still
extant. And the creatures on the moor were all in a sense her pets
and familiar with her. The intense devotion of this silent woman to
all manner of dumb creatures has something almost inexplicable. As
her old father and her sisters followed her to the grave they were
joined by another mourner, Keeper, Emily’s dog. He walked in front
of all, first in the rank of mourners, and perhaps no other creature
had loved the dead woman quite so well. When they had laid her to
sleep in the dark, airless vault under the church, and when they had
crossed the bleak churchyard and had entered the empty house
again, Keeper went straight to the door of the room where his
mistress used to sleep, and laid down across the threshold. There he
howled piteously for many days, knowing not that no lamentations
could wake her any more.”
Dogs were supposed by the ancient Gaels to know of the death of a
friend, however far they might be separated. But this is getting too
gloomy. Do you know how the proverb originated “as cold as a dog’s
nose”? An old verse tells us:
There sprang a leak in Noah’s ark,
Which made the dog begin to bark;
Noah took his nose to stop the hole,
And hence his nose is always cold.
No one has expressed more appreciation of the noble qualities of
dogs than the abstracted, philosophic Wordsworth.
Incident
Characteristic of a Favourite Dog.
On his morning rounds the master
Goes to learn how all things fare;
Searches pasture after pasture,
Sheep and cattle eyes with care;
And, for silence or for talk,
He hath comrades in his walk;
Four dogs, each pair of different breed,
Distinguished two for scent and two for speed.
See a hare before him started!
Off they fly in earnest chase;
Every dog is eager-hearted,
All the four are in the race:
And the hare whom they pursue,
Hath an instinct what to do;
Her hope is near: no turn she makes;
But, like an arrow, to the river takes.
Deep the river was, and crusted
Thinly by a one night’s frost;
But the nimble hare hath trusted
To the ice, and safely crost;
She hath crossed, and without heed
All are following at full speed,
When, lo! the ice, so thinly spread,
Breaks—and the greyhound, Dart, is over head!
Better fate have Prince and Swallow—
See them cleaving to the sport!
Music has no heart to follow,
Little Music, she stops short.
She hath neither wish nor heart,
Hers is now another part:
A loving creature she, and brave!
And fondly strives her struggling friend to save.
From the brink her paws she stretches,
Very hands as you would say!
And afflicting moans she fetches,
As he breaks the ice away.
For herself she hath no fears,
Him alone she sees and hears,
Makes efforts and complainings; nor gives o’er
Until her fellow sank, and reappeared no more.
, pp
Tribute
To the Memory of the Same Dog.
Lie here, without a record of thy worth,
Beneath a covering of the common earth!
It is not from unwillingness to praise,
Or want of love, that here no stone we raise;
More thou deservest; but this man gives to man,
Brother to brother, this is all we can.
Yet they to whom thy virtues made thee dear
Shall find thee through all changes of the year:
This oak points out thy grave; the silent tree
Will gladly stand a monument of thee.
Cowper, who tenderly loved all animals, did not fail to honour a
dog with a poetical tribute in The Dog and the Water Lily, celebrating
the devotion of “my spaniel, prettiest of his race.”
It was the time when Ouse displayed
His lilies newly blown;
Their beauties I intent surveyed,
And one I wished my own.
With cane extended far, I sought
To steer it close to land;
But still the prize, though nearly caught,
Escaped my eager hand.
Beau marked my unsuccessful pains
With fixed, considerate face,
And puzzling set his puppy brains
To comprehend, the case.
But chief myself, I will enjoin,
Awake at duty’s call,
To show a love as prompt as thine
To Him who gives us all.
But with a chirrup clear and strong,
Dispersing all his dream,
I thence withdrew, and followed long
The windings of the stream.
My ramble finished, I returned.
Beau, trotting far before,
The floating wreath again discerned,
And, plunging, left the shore.
I saw him, with that lily cropped,
Impatient swim to meet
My quick approach, and soon he dropped
The treasure at my feet.
Charmed with this sight, the world, I cried,
Shall hear of this, thy deed:
My dog shall mortify the pride
Of man’s superior breed.
Forster tells us fully of Dickens’s devotion to his many dogs,
quoting the novelist’s inimitable way of describing his favourites. In
Dr. Marigold there is an especially good bit about “me and my dog.”
“My dog knew as well as I did when she was on the turn. Before
she broke out he would give a howl and bolt. How he knew it was a
mystery to me, but the sure and certain knowledge of it would wake
him up out of his soundest sleep, and would give a howl and bolt. At
such times I wished I was him.” After the death of child and wife, he
says: “Me and my dog was all the company left in the cart now, and
the dog learned to give a short bark when they wouldn’t bid, and to
give another and a nod of his head when I asked him ‘Who said half a
crown?’ He attained to an immense height of popularity, and, I shall
always believe, taught himself entirely out of his own head to growl
at any person in the crowd that bid as low as sixpence. But he got to
be well on in years, and one night when I was convulsing York with
the spectacles he took a convulsion on his own account, upon the
very footboard by me, and it finished him.”
Mr. Laurence Hutton, in the St. Nicholas, has lately expressed his
sentiments about dogs, as follows:
“It was Dr. John Brown, of Edinburgh, I think, who spoke in
sincere sympathy of the man who “led a dog-less life.” It was Mr.
“Josh Billings,” I know, who said that in the whole history of the
world there is but one thing that money can not buy—to wit, the wag
of a dog’s tail. And it was Prof. John C. Van Dyke who declared the
other day, in reviewing the artistic career of Landseer, that he made
his dogs too human. It was the great Creator himself who made dogs
too human—so human that sometimes they put humanity to shame.
“I have been the friend and confidant of three dogs, who helped to
humanize me for the space of a quarter of a century, and who had
souls to be saved, I am sure, and when I cross the Stygian River I
expect to find on the other shore a trio of dogs wagging their tails
almost off in their joy at my coming, and with honest tongues
hanging out to lick my hands and my feet. And then I am going, with
these faithful, devoted dogs at my heels, to talk dogs over with Dr.
John Brown, Sir Edward Landseer, and Mr. Josh Billings.”
Do dogs have souls—a spark of life that after death lives on
elsewhere?
Many have hoped so, from Wesley to the little boy who has lost his
cherished comrade.
It is certain that dogs show qualities that in a man would be called
reason, quick apprehension, presence of mind, courage, self-
abnegation, affection unto death.
At the close of this chapter may I be allowed to tell of two of my
special friends—one a fox terrier, owned by Mr. Howard Ticknor, of
Boston; the other my own interesting pet—who have never failed to
learn any trick suggested to them? Antoninus Pius, called Tony for
short, goes through more than a score of wonderful
accomplishments, such as playing on the piano, crossing his paws
and looking extremely artistic, if not inspired, dancing a skirt dance,
spinning on a flax wheel, performing on a tambourine swung by a
ribbon round his neck; plays pattycake with his mistress. And my
own intelligent Yorkshire terrier mounts a chair back and preaches
with animation, eloquence, and forcible gestures; knocks down a row
of books and then sits on them, as a book reviewer; stands in a
corner with right paw uplifted, as a tableau of Liberty enlightening
the World; rings a bell repeatedly and with increasing energy, to call
us to the table; sings with head and eyes uplifted, to accompaniment
of harmonica—and each is just beginning his education.
I have read lately an account of a knowing dog, with a sort of sharp
cockney ability, who used to go daily with penny in mouth and buy a
roll. Once one right out of the oven was given to him; he dropped it,
seized his money off the counter, and changed his baker.
COMPLIMENTS TO CATS.
You may own a cat, but cannot govern one.
TO A KITTEN.
But not alone by cottage fire
Do rustics rude thy feats admire;
The learnèd sage, whose thoughts explore
The widest range of human lore;
Or, with unfettered fancy fly
Through airy heights of poesy;
Pausing, smiles with altered air
To see thee climb his elbow-chair,
Or, struggling with the mat below,
Hold warfare with his slippered toe.
Joanna Baillie.
CATS.
God made the cat in order to give to man the pleasurable sense of
having caressed the tiger.
Welcome to Our Bookstore - The Ultimate Destination for Book Lovers
Are you passionate about books and eager to explore new worlds of
knowledge? At our website, we offer a vast collection of books that
cater to every interest and age group. From classic literature to
specialized publications, self-help books, and children’s stories, we
have it all! Each book is a gateway to new adventures, helping you
expand your knowledge and nourish your soul
Experience Convenient and Enjoyable Book Shopping Our website is more
than just an online bookstore—it’s a bridge connecting readers to the
timeless values of culture and wisdom. With a sleek and user-friendly
interface and a smart search system, you can find your favorite books
quickly and easily. Enjoy special promotions, fast home delivery, and
a seamless shopping experience that saves you time and enhances your
love for reading.
Let us accompany you on the journey of exploring knowledge and
personal growth!
ebookgate.com
Ad

More Related Content

Similar to Software Pipelines and SOA Releasing the Power of Multi Core Processing 1st Edition Cory Isaacson (20)

Symphony Driver Essay
Symphony Driver EssaySymphony Driver Essay
Symphony Driver Essay
Angie Jorgensen
 
Supercharging the Cloud for an Agile Enterprise
Supercharging the Cloud  for an Agile EnterpriseSupercharging the Cloud  for an Agile Enterprise
Supercharging the Cloud for an Agile Enterprise
Patrick Bouillaud
 
Microservices Architecture for e-Commerce
Microservices Architecture for e-CommerceMicroservices Architecture for e-Commerce
Microservices Architecture for e-Commerce
Divante
 
Shrinking the Custom Application Development Cycle with Low-Code Platforms
Shrinking the Custom Application Development Cycle with Low-Code PlatformsShrinking the Custom Application Development Cycle with Low-Code Platforms
Shrinking the Custom Application Development Cycle with Low-Code Platforms
QuickBase, Inc.
 
Data Management at Scale Piethein Strengholt
Data Management at Scale Piethein StrengholtData Management at Scale Piethein Strengholt
Data Management at Scale Piethein Strengholt
dacikaashiti
 
Polysynthetic Data Center Vision v1.2
Polysynthetic Data Center Vision v1.2Polysynthetic Data Center Vision v1.2
Polysynthetic Data Center Vision v1.2
Christopher Williams
 
IT Fundamentals
IT FundamentalsIT Fundamentals
IT Fundamentals
Ricardo Trujillo Rodríguez
 
Encanvas executive Briefing 2017
Encanvas executive Briefing 2017Encanvas executive Briefing 2017
Encanvas executive Briefing 2017
Newton Day Uploads
 
Analytics as a Service in SL
Analytics as a Service in SLAnalytics as a Service in SL
Analytics as a Service in SL
SkylabReddy Vanga
 
Azure Biz
Azure BizAzure Biz
Azure Biz
kevinb222
 
Mark Simpson - UKOUG23 - Refactoring Monolithic Oracle Database Applications ...
Mark Simpson - UKOUG23 - Refactoring Monolithic Oracle Database Applications ...Mark Simpson - UKOUG23 - Refactoring Monolithic Oracle Database Applications ...
Mark Simpson - UKOUG23 - Refactoring Monolithic Oracle Database Applications ...
marksimpsongw
 
Platforms and Microservices - Is There a Middle Ground for Engineers and Tech...
Platforms and Microservices - Is There a Middle Ground for Engineers and Tech...Platforms and Microservices - Is There a Middle Ground for Engineers and Tech...
Platforms and Microservices - Is There a Middle Ground for Engineers and Tech...
Dialexa
 
The Benefits Of Software Creation
The Benefits Of Software CreationThe Benefits Of Software Creation
The Benefits Of Software Creation
Jennifer Wood
 
Navigating the Complexity of Distributed Microservices across AWS, Azure, and...
Navigating the Complexity of Distributed Microservices across AWS, Azure, and...Navigating the Complexity of Distributed Microservices across AWS, Azure, and...
Navigating the Complexity of Distributed Microservices across AWS, Azure, and...
Enterprise Management Associates
 
The next-generation data center
The next-generation data centerThe next-generation data center
The next-generation data center
thinkASG
 
Freelancer profile / Pasi Vuorio
Freelancer profile / Pasi VuorioFreelancer profile / Pasi Vuorio
Freelancer profile / Pasi Vuorio
Pasi Vuorio
 
A research on- Sales force Project- documentation
A research on- Sales force Project- documentationA research on- Sales force Project- documentation
A research on- Sales force Project- documentation
Pasupathi Ganesan
 
Enterprise Integration Patterns Revisited (EIP) for the Era of Big Data, Inte...
Enterprise Integration Patterns Revisited (EIP) for the Era of Big Data, Inte...Enterprise Integration Patterns Revisited (EIP) for the Era of Big Data, Inte...
Enterprise Integration Patterns Revisited (EIP) for the Era of Big Data, Inte...
Kai Wähner
 
Introduction to CAAD Codeless Applications Development Methodology
Introduction to CAAD Codeless Applications Development MethodologyIntroduction to CAAD Codeless Applications Development Methodology
Introduction to CAAD Codeless Applications Development Methodology
Newton Day Uploads
 
The Growth Of Data Centers
The Growth Of Data CentersThe Growth Of Data Centers
The Growth Of Data Centers
Gina Buck
 
Supercharging the Cloud for an Agile Enterprise
Supercharging the Cloud  for an Agile EnterpriseSupercharging the Cloud  for an Agile Enterprise
Supercharging the Cloud for an Agile Enterprise
Patrick Bouillaud
 
Microservices Architecture for e-Commerce
Microservices Architecture for e-CommerceMicroservices Architecture for e-Commerce
Microservices Architecture for e-Commerce
Divante
 
Shrinking the Custom Application Development Cycle with Low-Code Platforms
Shrinking the Custom Application Development Cycle with Low-Code PlatformsShrinking the Custom Application Development Cycle with Low-Code Platforms
Shrinking the Custom Application Development Cycle with Low-Code Platforms
QuickBase, Inc.
 
Data Management at Scale Piethein Strengholt
Data Management at Scale Piethein StrengholtData Management at Scale Piethein Strengholt
Data Management at Scale Piethein Strengholt
dacikaashiti
 
Polysynthetic Data Center Vision v1.2
Polysynthetic Data Center Vision v1.2Polysynthetic Data Center Vision v1.2
Polysynthetic Data Center Vision v1.2
Christopher Williams
 
Encanvas executive Briefing 2017
Encanvas executive Briefing 2017Encanvas executive Briefing 2017
Encanvas executive Briefing 2017
Newton Day Uploads
 
Analytics as a Service in SL
Analytics as a Service in SLAnalytics as a Service in SL
Analytics as a Service in SL
SkylabReddy Vanga
 
Mark Simpson - UKOUG23 - Refactoring Monolithic Oracle Database Applications ...
Mark Simpson - UKOUG23 - Refactoring Monolithic Oracle Database Applications ...Mark Simpson - UKOUG23 - Refactoring Monolithic Oracle Database Applications ...
Mark Simpson - UKOUG23 - Refactoring Monolithic Oracle Database Applications ...
marksimpsongw
 
Platforms and Microservices - Is There a Middle Ground for Engineers and Tech...
Platforms and Microservices - Is There a Middle Ground for Engineers and Tech...Platforms and Microservices - Is There a Middle Ground for Engineers and Tech...
Platforms and Microservices - Is There a Middle Ground for Engineers and Tech...
Dialexa
 
The Benefits Of Software Creation
The Benefits Of Software CreationThe Benefits Of Software Creation
The Benefits Of Software Creation
Jennifer Wood
 
Navigating the Complexity of Distributed Microservices across AWS, Azure, and...
Navigating the Complexity of Distributed Microservices across AWS, Azure, and...Navigating the Complexity of Distributed Microservices across AWS, Azure, and...
Navigating the Complexity of Distributed Microservices across AWS, Azure, and...
Enterprise Management Associates
 
The next-generation data center
The next-generation data centerThe next-generation data center
The next-generation data center
thinkASG
 
Freelancer profile / Pasi Vuorio
Freelancer profile / Pasi VuorioFreelancer profile / Pasi Vuorio
Freelancer profile / Pasi Vuorio
Pasi Vuorio
 
A research on- Sales force Project- documentation
A research on- Sales force Project- documentationA research on- Sales force Project- documentation
A research on- Sales force Project- documentation
Pasupathi Ganesan
 
Enterprise Integration Patterns Revisited (EIP) for the Era of Big Data, Inte...
Enterprise Integration Patterns Revisited (EIP) for the Era of Big Data, Inte...Enterprise Integration Patterns Revisited (EIP) for the Era of Big Data, Inte...
Enterprise Integration Patterns Revisited (EIP) for the Era of Big Data, Inte...
Kai Wähner
 
Introduction to CAAD Codeless Applications Development Methodology
Introduction to CAAD Codeless Applications Development MethodologyIntroduction to CAAD Codeless Applications Development Methodology
Introduction to CAAD Codeless Applications Development Methodology
Newton Day Uploads
 
The Growth Of Data Centers
The Growth Of Data CentersThe Growth Of Data Centers
The Growth Of Data Centers
Gina Buck
 

Recently uploaded (20)

pulse ppt.pptx Types of pulse , characteristics of pulse , Alteration of pulse
pulse  ppt.pptx Types of pulse , characteristics of pulse , Alteration of pulsepulse  ppt.pptx Types of pulse , characteristics of pulse , Alteration of pulse
pulse ppt.pptx Types of pulse , characteristics of pulse , Alteration of pulse
sushreesangita003
 
Social Problem-Unemployment .pptx notes for Physiotherapy Students
Social Problem-Unemployment .pptx notes for Physiotherapy StudentsSocial Problem-Unemployment .pptx notes for Physiotherapy Students
Social Problem-Unemployment .pptx notes for Physiotherapy Students
DrNidhiAgarwal
 
How to Subscribe Newsletter From Odoo 18 Website
How to Subscribe Newsletter From Odoo 18 WebsiteHow to Subscribe Newsletter From Odoo 18 Website
How to Subscribe Newsletter From Odoo 18 Website
Celine George
 
How to Manage Opening & Closing Controls in Odoo 17 POS
How to Manage Opening & Closing Controls in Odoo 17 POSHow to Manage Opening & Closing Controls in Odoo 17 POS
How to Manage Opening & Closing Controls in Odoo 17 POS
Celine George
 
LDMMIA Reiki Master Spring 2025 Mini Updates
LDMMIA Reiki Master Spring 2025 Mini UpdatesLDMMIA Reiki Master Spring 2025 Mini Updates
LDMMIA Reiki Master Spring 2025 Mini Updates
LDM Mia eStudios
 
The ever evoilving world of science /7th class science curiosity /samyans aca...
The ever evoilving world of science /7th class science curiosity /samyans aca...The ever evoilving world of science /7th class science curiosity /samyans aca...
The ever evoilving world of science /7th class science curiosity /samyans aca...
Sandeep Swamy
 
UNIT 3 NATIONAL HEALTH PROGRAMMEE. SOCIAL AND PREVENTIVE PHARMACY
UNIT 3 NATIONAL HEALTH PROGRAMMEE. SOCIAL AND PREVENTIVE PHARMACYUNIT 3 NATIONAL HEALTH PROGRAMMEE. SOCIAL AND PREVENTIVE PHARMACY
UNIT 3 NATIONAL HEALTH PROGRAMMEE. SOCIAL AND PREVENTIVE PHARMACY
DR.PRISCILLA MARY J
 
Anti-Depressants pharmacology 1slide.pptx
Anti-Depressants pharmacology 1slide.pptxAnti-Depressants pharmacology 1slide.pptx
Anti-Depressants pharmacology 1slide.pptx
Mayuri Chavan
 
Phoenix – A Collaborative Renewal of Children’s and Young People’s Services C...
Phoenix – A Collaborative Renewal of Children’s and Young People’s Services C...Phoenix – A Collaborative Renewal of Children’s and Young People’s Services C...
Phoenix – A Collaborative Renewal of Children’s and Young People’s Services C...
Library Association of Ireland
 
Exploring-Substances-Acidic-Basic-and-Neutral.pdf
Exploring-Substances-Acidic-Basic-and-Neutral.pdfExploring-Substances-Acidic-Basic-and-Neutral.pdf
Exploring-Substances-Acidic-Basic-and-Neutral.pdf
Sandeep Swamy
 
2541William_McCollough_DigitalDetox.docx
2541William_McCollough_DigitalDetox.docx2541William_McCollough_DigitalDetox.docx
2541William_McCollough_DigitalDetox.docx
contactwilliamm2546
 
To study the nervous system of insect.pptx
To study the nervous system of insect.pptxTo study the nervous system of insect.pptx
To study the nervous system of insect.pptx
Arshad Shaikh
 
Political History of Pala dynasty Pala Rulers NEP.pptx
Political History of Pala dynasty Pala Rulers NEP.pptxPolitical History of Pala dynasty Pala Rulers NEP.pptx
Political History of Pala dynasty Pala Rulers NEP.pptx
Arya Mahila P. G. College, Banaras Hindu University, Varanasi, India.
 
CBSE - Grade 8 - Science - Chemistry - Metals and Non Metals - Worksheet
CBSE - Grade 8 - Science - Chemistry - Metals and Non Metals - WorksheetCBSE - Grade 8 - Science - Chemistry - Metals and Non Metals - Worksheet
CBSE - Grade 8 - Science - Chemistry - Metals and Non Metals - Worksheet
Sritoma Majumder
 
Sinhala_Male_Names.pdf Sinhala_Male_Name
Sinhala_Male_Names.pdf Sinhala_Male_NameSinhala_Male_Names.pdf Sinhala_Male_Name
Sinhala_Male_Names.pdf Sinhala_Male_Name
keshanf79
 
apa-style-referencing-visual-guide-2025.pdf
apa-style-referencing-visual-guide-2025.pdfapa-style-referencing-visual-guide-2025.pdf
apa-style-referencing-visual-guide-2025.pdf
Ishika Ghosh
 
To study Digestive system of insect.pptx
To study Digestive system of insect.pptxTo study Digestive system of insect.pptx
To study Digestive system of insect.pptx
Arshad Shaikh
 
How to manage Multiple Warehouses for multiple floors in odoo point of sale
How to manage Multiple Warehouses for multiple floors in odoo point of saleHow to manage Multiple Warehouses for multiple floors in odoo point of sale
How to manage Multiple Warehouses for multiple floors in odoo point of sale
Celine George
 
GDGLSPGCOER - Git and GitHub Workshop.pptx
GDGLSPGCOER - Git and GitHub Workshop.pptxGDGLSPGCOER - Git and GitHub Workshop.pptx
GDGLSPGCOER - Git and GitHub Workshop.pptx
azeenhodekar
 
How to Customize Your Financial Reports & Tax Reports With Odoo 17 Accounting
How to Customize Your Financial Reports & Tax Reports With Odoo 17 AccountingHow to Customize Your Financial Reports & Tax Reports With Odoo 17 Accounting
How to Customize Your Financial Reports & Tax Reports With Odoo 17 Accounting
Celine George
 
pulse ppt.pptx Types of pulse , characteristics of pulse , Alteration of pulse
pulse  ppt.pptx Types of pulse , characteristics of pulse , Alteration of pulsepulse  ppt.pptx Types of pulse , characteristics of pulse , Alteration of pulse
pulse ppt.pptx Types of pulse , characteristics of pulse , Alteration of pulse
sushreesangita003
 
Social Problem-Unemployment .pptx notes for Physiotherapy Students
Social Problem-Unemployment .pptx notes for Physiotherapy StudentsSocial Problem-Unemployment .pptx notes for Physiotherapy Students
Social Problem-Unemployment .pptx notes for Physiotherapy Students
DrNidhiAgarwal
 
How to Subscribe Newsletter From Odoo 18 Website
How to Subscribe Newsletter From Odoo 18 WebsiteHow to Subscribe Newsletter From Odoo 18 Website
How to Subscribe Newsletter From Odoo 18 Website
Celine George
 
How to Manage Opening & Closing Controls in Odoo 17 POS
How to Manage Opening & Closing Controls in Odoo 17 POSHow to Manage Opening & Closing Controls in Odoo 17 POS
How to Manage Opening & Closing Controls in Odoo 17 POS
Celine George
 
LDMMIA Reiki Master Spring 2025 Mini Updates
LDMMIA Reiki Master Spring 2025 Mini UpdatesLDMMIA Reiki Master Spring 2025 Mini Updates
LDMMIA Reiki Master Spring 2025 Mini Updates
LDM Mia eStudios
 
The ever evoilving world of science /7th class science curiosity /samyans aca...
The ever evoilving world of science /7th class science curiosity /samyans aca...The ever evoilving world of science /7th class science curiosity /samyans aca...
The ever evoilving world of science /7th class science curiosity /samyans aca...
Sandeep Swamy
 
UNIT 3 NATIONAL HEALTH PROGRAMMEE. SOCIAL AND PREVENTIVE PHARMACY
UNIT 3 NATIONAL HEALTH PROGRAMMEE. SOCIAL AND PREVENTIVE PHARMACYUNIT 3 NATIONAL HEALTH PROGRAMMEE. SOCIAL AND PREVENTIVE PHARMACY
UNIT 3 NATIONAL HEALTH PROGRAMMEE. SOCIAL AND PREVENTIVE PHARMACY
DR.PRISCILLA MARY J
 
Anti-Depressants pharmacology 1slide.pptx
Anti-Depressants pharmacology 1slide.pptxAnti-Depressants pharmacology 1slide.pptx
Anti-Depressants pharmacology 1slide.pptx
Mayuri Chavan
 
Phoenix – A Collaborative Renewal of Children’s and Young People’s Services C...
Phoenix – A Collaborative Renewal of Children’s and Young People’s Services C...Phoenix – A Collaborative Renewal of Children’s and Young People’s Services C...
Phoenix – A Collaborative Renewal of Children’s and Young People’s Services C...
Library Association of Ireland
 
Exploring-Substances-Acidic-Basic-and-Neutral.pdf
Exploring-Substances-Acidic-Basic-and-Neutral.pdfExploring-Substances-Acidic-Basic-and-Neutral.pdf
Exploring-Substances-Acidic-Basic-and-Neutral.pdf
Sandeep Swamy
 
2541William_McCollough_DigitalDetox.docx
2541William_McCollough_DigitalDetox.docx2541William_McCollough_DigitalDetox.docx
2541William_McCollough_DigitalDetox.docx
contactwilliamm2546
 
To study the nervous system of insect.pptx
To study the nervous system of insect.pptxTo study the nervous system of insect.pptx
To study the nervous system of insect.pptx
Arshad Shaikh
 
CBSE - Grade 8 - Science - Chemistry - Metals and Non Metals - Worksheet
CBSE - Grade 8 - Science - Chemistry - Metals and Non Metals - WorksheetCBSE - Grade 8 - Science - Chemistry - Metals and Non Metals - Worksheet
CBSE - Grade 8 - Science - Chemistry - Metals and Non Metals - Worksheet
Sritoma Majumder
 
Sinhala_Male_Names.pdf Sinhala_Male_Name
Sinhala_Male_Names.pdf Sinhala_Male_NameSinhala_Male_Names.pdf Sinhala_Male_Name
Sinhala_Male_Names.pdf Sinhala_Male_Name
keshanf79
 
apa-style-referencing-visual-guide-2025.pdf
apa-style-referencing-visual-guide-2025.pdfapa-style-referencing-visual-guide-2025.pdf
apa-style-referencing-visual-guide-2025.pdf
Ishika Ghosh
 
To study Digestive system of insect.pptx
To study Digestive system of insect.pptxTo study Digestive system of insect.pptx
To study Digestive system of insect.pptx
Arshad Shaikh
 
How to manage Multiple Warehouses for multiple floors in odoo point of sale
How to manage Multiple Warehouses for multiple floors in odoo point of saleHow to manage Multiple Warehouses for multiple floors in odoo point of sale
How to manage Multiple Warehouses for multiple floors in odoo point of sale
Celine George
 
GDGLSPGCOER - Git and GitHub Workshop.pptx
GDGLSPGCOER - Git and GitHub Workshop.pptxGDGLSPGCOER - Git and GitHub Workshop.pptx
GDGLSPGCOER - Git and GitHub Workshop.pptx
azeenhodekar
 
How to Customize Your Financial Reports & Tax Reports With Odoo 17 Accounting
How to Customize Your Financial Reports & Tax Reports With Odoo 17 AccountingHow to Customize Your Financial Reports & Tax Reports With Odoo 17 Accounting
How to Customize Your Financial Reports & Tax Reports With Odoo 17 Accounting
Celine George
 
Ad

Software Pipelines and SOA Releasing the Power of Multi Core Processing 1st Edition Cory Isaacson

  • 1. Software Pipelines and SOA Releasing the Power of Multi Core Processing 1st Edition Cory Isaacson pdf download https://ebookgate.com/product/software-pipelines-and-soa- releasing-the-power-of-multi-core-processing-1st-edition-cory- isaacson/ Get Instant Ebook Downloads – Browse at https://ebookgate.com
  • 2. Instant digital products (PDF, ePub, MOBI) available Download now and explore formats that suit you... Software Development for Embedded Multi core Systems A Practical Guide Using Embedded Intel Architecture 1st Edition Max Domeika https://ebookgate.com/product/software-development-for-embedded- multi-core-systems-a-practical-guide-using-embedded-intel- architecture-1st-edition-max-domeika/ Microprocessor 4 Core Concepts Software Aspects 1st Edition Philippe Darche https://ebookgate.com/product/microprocessor-4-core-concepts- software-aspects-1st-edition-philippe-darche/ Networks on Chips Theory and Practice Embedded Multi Core Systems 1st Edition Fayez Gebali https://ebookgate.com/product/networks-on-chips-theory-and- practice-embedded-multi-core-systems-1st-edition-fayez-gebali/ Bioinformatics High Performance Parallel Computer Architectures Embedded Multi Core Systems 1st Edition Bertil Schmidt https://ebookgate.com/product/bioinformatics-high-performance- parallel-computer-architectures-embedded-multi-core-systems-1st- edition-bertil-schmidt/
  • 3. Releasing Your Potential Expanded Edition Myles Munroe https://ebookgate.com/product/releasing-your-potential-expanded- edition-myles-munroe/ Little Brother First Edition Cory Doctorow https://ebookgate.com/product/little-brother-first-edition-cory- doctorow/ Node js Recipes 1st Edition Cory Gackenheimer (Auth.) https://ebookgate.com/product/node-js-recipes-1st-edition-cory- gackenheimer-auth/ SOA Principles of Service Design 1st Edition Thomas Erl https://ebookgate.com/product/soa-principles-of-service- design-1st-edition-thomas-erl/ Communication and Control in Electric Power Systems Applications of Parallel and Distributed Processing IEEE Press Series on Power Engineering 1st Edition Mohammad Shahidehpour https://ebookgate.com/product/communication-and-control-in- electric-power-systems-applications-of-parallel-and-distributed- processing-ieee-press-series-on-power-engineering-1st-edition-
  • 5. Praise for Software Pipelines and SOA “Software Pipelines uncovers a new and unique way of software design for high-performance development. Where other methodologies and frameworks have previously been describing the problem, Software Pipelines is focusing on the solution. Simply put, Software Pipelines addresses the developer’s needs for parallel computing and uncovers the throughput offered by multi-core processors.” —Filip Hanik, Senior Software Engineer, SpringSource, Inc. “There are some books that tout vision but provide no pragmatic, hands-on details. Software Pipelines and SOA offers a dose of both. Isaacson is an authority and practitioner, who under- stands that the promise of SOA is not fulfilled simply by embracing an architectural style of loosely coupled, network-based services but in how the applications and services that support this architectural style are developed and deployed. This book will help support a pragmatic approach to SOA.” —Dan Malks,Vice President, Partner Engineering, JackBe “. . . it provides insights on how to efficiently realize scalability on and across multi-core machines in a predictable manner using patterns derived from the best practices in distributed computing and SOA. Written in a conversational manner, one of the pioneering technology leaders of our time provides keen insights on how to build scalable software solutions.” —Ravi Palepu, SOA Consultant and Founder of PREDICT “Software Pipelines paves the road in distributed, SOA, high-performance computing in the- ory and practice with strong technical background, elegant architecture, and a usable imple- mentation. A revolution in grid computing and service-oriented architecture.” —Nicole Nemer, Ph.D., Superior Consulting “Multi-core computing offers a unique opportunity to deliver dramatic scalability in modern business applications; but the task is not an easy one, presenting significant challenges to the software developer. Software Pipelines provides an easy-to-implement, concrete strategy that enables service-oriented applications to really deliver on the promise of this new hardware paradigm. A must read for any developer or architect stepping up to the challenge of high- performance business transaction processing.” —Henry Truong, Chief Technology Officer, TeleTech, Inc.
  • 6. “Isaacson offers a fresh approach to componentize and parallelize software applications in a way that is easy to debug and easy to maintain. Using the high-level abstraction of Software Pipelines, development managers need not worry about the complexities of concurrent pro- gramming or the challenges in dealing with maintaining threads, interprocess communication or deadlocks. Any software architect dealing with performance and scalability issues with complex transactional flows must consider the Software Pipelines design paradigm.” —Venkat Pula, Field Application Engineer, Telelogic, an IBM Company “Cory has captured the power of simplicity, enabling business software applications to expo- nentially leverage the capacity and capabilities of today’s advanced chip architectures. Using Software Pipelines, corporate IT groups are able to manage, control and fully utilize the power of multi-core computing to improve scalability and reduce long-term costs.” —Jim Hogan, Cognify,Vice President, Managed Services “Having projects architected to gracefully scale from a single multi-core box all the way to a cluster of thousands of machines is the new reality. With Software Pipelines, the development organization can easily architect every project—from the summer intern’s toy prototype to your flagship technology—as though it might need to scale for worldwide consumption. Embrace this change now and the day you need that scalability will be your biggest success. Ignore it and it will likely be your greatest failure.” —Jackson Gibbs, CTO, Strands
  • 8. Addison-Wesley Information Technology Series Capers Jones and David S. Linthicum, Consulting Editors The information technology (IT) industry is in the public eye now more than ever before because of a number of major issues in which software technology and national policies are closely related. As the use of software expands, there is a continuing need for business and software professionals to stay current with the state of the art in software methodologies and technologies. The goal of the Addison-Wesley Information Technology Series is to cover any and all topics that affect the IT community. These books illustrate and explore how information technology can be aligned with business practices to achieve business goals and support business imperatives. Addison-Wesley has created this innovative series to empower you with the benefits of the industry experts’ experience. For more information point your browser to www.awprofessional.com/itseries Sid Adelman, Larissa Terpeluk Moss, Data Warehouse Project Management. ISBN: 0-201-61635-1 Sid Adelman et al., Impossible Data Warehouse Situations: Solutions from the Experts. ISBN: 0-201-76033-9 David Leon Clark, Enterprise Security: The Manager's Defense Guide. ISBN: 0-201-71972-X Frank P. Coyle, XML, Web Services, and the Data Revolution. ISBN: 0-201-77641-3 Jill Dyché, The CRM Handbook: A Business Guide to Customer Relationship Management. ISBN: 0-201-73062-6 Patricia L. Ferdinandi, A Requirements Pattern: Succeeding in the Internet Economy. ISBN: 0-201-73826-0 David Garmus and David Herron, Function Point Analysis: Measurement Practices for Successful Software Projects. ISBN: 0-201-69944-3 Beth Gold-Bernstein, William Ruh, Enterprise Integration: The Essential Guide to Integration Solutions. 0-321-22390-X John Harney, Application Service Providers (ASPs): A Manager's Guide. ISBN: 0-201-72659-9 International Function Point Users Group, IT Measurement: Practical Advice from the Experts. ISBN: 0-201-74158-X Cory Isaacson, Software Pipelines and SOA: Releasing the Power of Multi-Core Processing, ISBN: 0137137974 Capers Jones, Software Assessments, Benchmarks, and Best Practices. ISBN: 0-201-48542-7 Ravi Kalakota and Marcia Robinson, e-Business 2.0: Roadmap for Success. ISBN: 0-201-72165-1 Ravi Kalakota and Marcia Robinson, Services Blueprint: Roadmap for Execution. ISBN: 0-321-15039-2 David S. Linthicum, B2B Application Integration: e-Business-Enable Your Enterprise. ISBN: 0-201-70936-8 David S. Linthicum, Enterprise Application Integration. ISBN: 0-201-61583-5 David S. Linthicum, Next Generation Application Integration: From Simple Information to Web Services. ISBN: 0-201-84456-7 Anne Thomas Manes, Web Services: A Manager’s Guide. ISBN: 0-321-18577-3 Larissa T. Moss and Shaku Atre, Business Intelligence Roadmap: The Complete Project Lifecycle for Decision- Support Applications. ISBN: 0-201-78420-3 Bud Porter-Roth, Request for Proposal: A Guide to Effective RFP Development. ISBN: 0-201-77575-1 Ronald G. Ross, Principles of the Business Rule Approach. ISBN: 0-201-78893-4 Dan Sullivan, Proven Portals: Best Practices for Planning, Designing, and Developing Enterprise Portals. ISBN: 0-321-12520-7 Karl E. Wiegers, Peer Reviews in Software: A Practical Guide. ISBN: 0-201-73485-0 Ralph R. Young, Effective Requirements Practices. ISBN: 0-201-70912-0 Bill Zoellick, CyberRegs: A Business Guide to Web Property, Privacy, and Patents. ISBN: 0-201-72230-5
  • 9. Software Pipelines and SOA Releasing the Power of Multi-Core Processing Cory Isaacson Upper Saddle River, NJ • Boston • Indianapolis • San Francisco New York • Toronto • Montreal • London • Munich • Paris • Madrid Capetown • Sydney • Tokyo • Singapore • Mexico City
  • 10. 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. Java, JDBC, J2EE, JNI, Javadoc, MySQL and all Java-based trademarks are trademarks of Sun Microsystems, Inc. in the United States, other countries, or both. Linux is a registered trademark of Linus Torvalds in the United States, other countries, or both. UNIX is a registered trademark of The Open Group in the United States, other countries, or both. Microsoft, Windows, Microsoft .NET Remoting, and Microsoft .NET connection software are either registered trademarks or trademarks of Microsoft Corporation in the United States and/or other countries. IBM, iSeries, and zSeries are trademarks of International Business Machines Corporation in the United States, other countries, or both. CORBA is a registered trademark of Object Management Group, Inc. in the United States and/or other countries. Apache, log4j, JMeter, Ant, and Tomcat are trademarks of The Apache Software Foundation. dbShards is a trademarks of CodeFutures Corporation, in the United States. The Software Pipelines Reference Framework includes software developed by the Spring Framework Project (springframework.org). Spring Framework components copyright 2002–2007 by the original author or authors. The Spring Framework is licensed under the Apache License,Version 2.0 (the “License”).You may obtain a copy of the License at: apache.org/licenses/LICENSE-2.0. Other company, product, or service names mentioned may be trademarks or service marks of others. 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 Isaacson, Cory. Software pipelines and SOA : releasing the power of multi-core processing / Cory Isaacson.—1st ed. p. cm. Includes bibliographical references and index. ISBN 0-13-713797-4 (pbk. : alk. paper) 1. Parallel processing (Electronic computers) 2. Computer software—Development. 3. Web services. I. Title. QA76.58.I82 2008 004’.35--dc22 2008040489 Copyright © 2009 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-13-713797-8 ISBN-10: 0-13-713797-4 Text printed in the United States on recycled paper by RR Donnelley in Crawfordsville, Indiana. First printing, December 2008
  • 11. vii Contents Foreword xv Preface xvii Acknowledgments xxi About the Author xxiii Introduction xxv Section I: Pipelines Theory 1 CHAPTER 1 Parallel Computing and Business Applications 3 Mechanical Solutions: Parallel Computing at the Operating System Level 5 Symmetric Multiprocessing 5 Clustering 5 Automated Network Routing: Parallel Computing by Predetermined Logic 6 Grid Computing: Parallel Computing by Distribution 6 Parallel Computing for Business Applications 7 The Solution: Software Pipelines 8 Fluid Dynamics 10 Software Pipelines Example 11 Summary 16 CHAPTER 2 Pipelines Law 17 The Problem of Wasted CPU Power 17 Fluid Dynamics 18 Pipelines Law: The Basic Rule 19 Corollary 1: Limitations on the Flow 20 Corollary 2: Restrictions on the Output Flow 21 Software Pipelines Rules 22 Rule 1 22 Rule 2 23 Rule 3 26 Summary 30
  • 12. viii Contents CHAPTER 3 Pipelines Examples 31 Bank ATM System (Single-Tier Distribution) 31 Pipelines 32 Pipeline Distributor 33 Bank ATM System (Multi-Tier Distribution) 35 Secondary Pipeline Tier 36 Primary Pipeline Tier 41 Summary 43 CHAPTER 4 Pipelines Patterns 45 Service Invocation Patterns 47 Push Pattern 47 Pull Pattern 47 Message Exchange Patterns 49 One-Way Pattern 49 Request-Response Pattern 49 Pipeline Routing Patterns 51 Round-Robin Routing Pattern 52 Content-Based Routing Pattern 53 Custom Routing Pattern 54 Join Pattern 55 Distributor Patterns 55 Single Distributor Pattern 56 Multi-Tier Distributor Pattern 56 Client Distributor Pattern 58 Database Sharding Distributor Pattern 58 Distributor Connector Patterns 60 Local Method Invocation Pattern 61 Socket Invocation Pattern 62 Web Service Invocation Pattern 62 Other Patterns 62 Summary 62 CHAPTER 5 Pipelines: The Organizational Impact 65 Strategic Evaluation 66 Budget Impact 68
  • 13. Contents ix Organizational Roles and Responsibilities 70 Pipelines Architect 71 Business Unit Sponsor 72 IT Management 73 Application Developer 74 Application Project Manager 75 Quality Assurance Manager 76 IT Operations 77 Summary 78 Section II: Pipelines Methodology 79 CHAPTER 6 Software Pipelines Optimization Cycle: Overview 81 Yet Another Software Methodology? 81 SPOC Overview 82 CHAPTER 7 The Five Steps of SPOC 85 Summary 88 CHAPTER 8 Pipelines by Example: Introducing the Pipelines Bank Corporation 89 SPOC Report Template 93 Summary 94 CHAPTER 9 SPOC Step 1: Pipelines Objectives 95 Step 1.1: Identify Business Objectives/Requirements 96 Step 1.2: Determine Input Processing Rate 102 Step 1.3: Determine Future Potential Input Processing Rate 104 Step 1.4: Measure Current Capacity 107 Step 1.5: Calculate Performance Gap 109 Step 1.6: Define Pipelines Targets 111 Summary 113
  • 14. x Contents CHAPTER 10 SPOC Step 2: Pipelines Analysis 115 Step 2.1: Map Current Process Flow 116 Step 2.2: Identify Existing Components 119 Step 2.3: Measure Processing Rate of Existing Components 121 Step 2.4: Calculate Processing Rate of Entire Flow 124 Step 2.5: Identify Restriction Points 127 Summary 129 CHAPTER 11 SPOC Step 3: Pipelines Design 131 Step 3.1: Define Service Flow Design 133 Step 3.2: Identify New Components 138 Step 3.3: Identify Pipeline Opportunities 141 Step 3.4: Define Pipelines Scheme 145 Step 3.5: Determine Distributor Rate 151 Step 3.6: Design Physical Deployment Environment 154 Step 3.7: Define/Optimize Pipelines Design 155 Pipeline the Downstream Service 156 Pipeline Services Independently 159 Pipeline the Entire Service 161 Summary 168 CHAPTER 12 SPOC Step 4: Pipelines Implementation 169 Step 4.1: Establish Software Pipelines Framework 171 Step 4.2: Modify Existing Components 173 Map Components to Service Flow 174 Evaluate Components 174 Determine How to Incorporate Components 174 Prepare Component Table 175 Develop Components 175 Step 4.3: Develop New Components 178 Step 4.4: Orchestrate Service Flows 179 Step 4.5: Instrument Service Flow 181 Step 4.6: Develop/Modify Pipeline Sets 182 Step 4.7: Test and Optimize Pipelines Implementation 190 Summary 193
  • 15. Contents xi CHAPTER 13 SPOC Step 5: Pipelines Deployment 195 Step 5.1: Plan Pipelines Deployment 196 Step 5.2: Deploy to Production Environment 197 Step 5.3: Monitor Production Environment 198 Step 5.4: Evaluate Results, Plan Next SPOC Iteration 199 Summary 201 Section III: Pipelines Examples 203 CHAPTER 14 Hello Software Pipelines 205 Define the Message 206 Build the Service 207 Configure the Distributors 209 Create the Client 212 Run the Service 215 Summary 215 CHAPTER 15 Scaling Hello Software Pipelines 217 Scale the Service 217 Develop a Scalable Test Client 219 Run the Service 223 Summary 228 CHAPTER 16 Additional Pipelines Router Configurations 229 Content-Based Router 229 Custom Pipelines Router 241 Summary 256 CHAPTER 17 Getting an Answer from Hello Software Pipelines 257 Request-Response Messaging 257 Use Request-Response with Hello Software Pipelines 261 Summary 273
  • 16. xii Contents CHAPTER 18 Additional Distributor Connector Patterns 275 Define and Configure a Connector 275 Socket Connector 278 Web Service Connector 280 Summary 282 CHAPTER 19 Using a Multi-Tier Distributor 283 Configure the Multi-Tier Distributors 284 Create the Client 289 Run the Service 292 Summary 293 CHAPTER 20 Database Sharding Distributor 295 Database Shards Example 297 Create the Database Shards 299 Build the Service 299 Configure the Distributor 303 Configure the Sharding Driver 304 Create the Client 305 Run the Service 307 Summary 309 CHAPTER 21 Pipelines Framework Overview 311 Interface Overview 311 AbstractMessage 312 PipelinesDistributor 313 PipelinesConnector 313 PipelinesRouter 313 Pipeline 314 PipelineService 314 Pipelines Instrumentor 314 Summary 322
  • 17. Contents xiii CHAPTER 22 Pipelines Bank Corporation (PBCOR) Example 323 Account Transaction 323 Pipelines Configuration 328 Spring Framework 332 Database Access 333 AuthorizeTransactionService 339 Connect Services 342 ValidateService 345 DebitTransactionService 345 Run the Test 348 Summary 349 Section IV: The Future of Software Pipelines 351 CHAPTER 23 The Future of Software Pipelines 353 Final Words of Advice 353 Ideas for the Future 354 APPENDIX Pipelines Reference Framework Javadoc 357 Index 375
  • 19. xv Foreword Multi-core hardware is the new normal. Major computer chip vendors have essentially halted the regular increase in CPU clock speeds that reigned for almost a half century in response to issues like power consumption, heat output, and unpredictability of quantum physics (to paraphrase Einstein, CPUs shouldn’t play dice …). Instead, they are using multi-core architectures to deliver increased process- ing power in place of faster clock speeds. Although this is a logical move, a large percentage of existing software applications cannot take advantage of the pro- cessing power on the additional cores, and they often run even slower due to reduced clock speeds in multi-core CPUs, setting up what could be called the Multi-core Dilemma. In general, the Multi-core Dilemma applies across the spectrum of program- ming languages—Java, C#, C++, etc. This is why major technology vendors are investing heavily in research intended to lead to the next generation of program- ming environments. But what about the software that has already been written? The reality for any software application is that to benefit from multi-core, the application must either be written to be multi-threaded, or it must be in a con- tainer that effectively makes it multi-threaded. There is no “plug-and-play” solution, but there are development tools and containers available that can help with the Multi-core Dilemma for many use cases. There are not, however, many good methodologies for solving this prob- lem. In Software Pipelines and SOA, Cory Isaacson outlines a systematic, logical approach for planning and executing the move to multi-core. This hardware trend will create a tectonic shift in the software industry as billions of lines of code are migrated, optimized, or rewritten to take advantage of multi-core hardware. Practical, logical approaches will be essential to making this transition smoothly. Now that parallel computing has moved from being an edge case to being a common requirement for enterprise software, enabling applications to run in parallel can’t be limited to only the most experienced programmers. Software Pipelines and SOA describes several techniques for bringing parallel computing to mainstream software development.
  • 20. xvi Foreword For example, one technique for making parallel computing happen through- out your development group is to separate your concurrency model from the application logic, much as you have your data and UI layer separate from the main business logic. Doing so allows feature developers to focus on the applica- tion functionality without having to worry about explicitly threading at design time. In addition, it can be an effective technique for migrating existing single- threaded applications into multi-core environments. In addition, Software Pipelines and SOA discusses the connection between ser- vice-oriented architectures and multi-core. The basic approach is to treat your application as a collection of services and deploy a container that can run multi- ple instances of those services. Using this link between SOA and multi-core, services can be a key part of your concurrency model. By separating concurrency from application logic, you can make the migration of existing applications to multi-core much simpler and enable more effective building of new parallel applications. It also makes it much easier to reconfigure (rather than recode) your applications, then continue to optimize them and move to new generations of hardware—from 2 and 4 cores to 8, 16, 32 … 128, and beyond. Designing enterprise applications in a service- oriented architecture makes it easier to separate concurrency from application logic, so that they work together. There is work involved if you have a monolithic application, but it is still sig- nificantly less than rewriting. If you plan to use a container, make sure that it can handle your business application requirements, which might include message ordering, forks and joins in the business process, human interaction, and long- running processes. Most parallel computing approaches use traditional multi-threaded pro- gramming, a “thread-level” approach. Software Pipelines and SOA describes a “ser- vice-level” approach that can provide a way to move to multi-core that requires less effort and is more configurable. It complements, rather than replaces, the traditional thread-level approaches. Moving your existing applications to multi-core takes some planning, but it might not be as much work as you think. Design a solid concurrency model, and your existing applications can continue to serve you for years to come. Software Pipelines and SOA provides a great road map for getting there. Patrick Leonard VP, Engineering & Product Strategy Rogue Wave Software [email protected]
  • 21. xvii Preface We’re now in the multi-core era. As consumers of computing power, we’ve all come to expect a never-ending increase in power, and CPU manufacturers are now using multi-core processors to continue that long-standing trend. If we want to take full advantage of this enormous capacity, our business applications must “do more than one thing at a time.” However, traditional parallel computing methods (such as multi-threading, SMP, and clustering) are either limiting or extremely difficult to implement—especially when used on top of application components that weren’t originally designed for a parallel world. Software Pipelines architecture is a new architecture that specifically addresses the problem of using parallel processing in the multi-core era. It is a new approach to the problem. Pipeline technology abstracts the complexities of parallel computing and makes it possible to use the power of the new CPUs for business applications. We wrote this book primarily for software architects, application developers, and application development managers who need high-performance, scalable business applications. Project managers, software quality assurance specialists, and IT operations managers will also find it useful; however, the main focus is software development. Our intention was to make the book as applicable as pos- sible, and to provide tools that you can quickly learn and apply to your own development challenges. The book is divided into four sections, which we’ll describe in this preface. Pipelines Theory The Pipelines Theory section, Chapters 1 through 5, covers the following topics: • How pipelines work, including the fundamental concepts and underlying theory of Software Pipelines • What pipelines can accomplish • Methods for applying Software Pipelines • Pipelines Patterns, including various ways to apply Software Pipelines in busi- ness application scenarios, setting the stage for the examples in later chapters
  • 22. xviii Preface As the foundation for the remainder of the book, this section is appropriate for all readers. If you’re a software architect or an application developer, you should definitely study this section first. If you’re reading the book from a managerial perspective, or if your interest is more general and less technical, you can focus on just this section. Pipelines Methodology The Pipelines Methodology section, Chapters 6 through 13, shows how to imple- ment Software Pipelines by using the step-by-step Software Pipelines Optimization Cycle (SPOC). To illustrate how the methodology works, we use it to solve a business problem for a fictitious example company, the Pipelines Bank Corporation (PBCOR). In each chapter we present a new step, then show you how we used the step in our PBCOR example. This section will be of interest to all primary audiences of the book, includ- ing project managers. The PBCOR examples get into a fair amount of technical detail; therefore, application development managers might want to skip over the more complex examples. Pipelines Examples The Pipelines Examples section, Chapters 14 through 22, contains code examples based on the reference Pipelines Framework we developed for the book. We’ve included examples for each main Pipelines Pattern from the Pipelines Theory section. You can use these as guides for applying Software Pipelines directly to your own real-world applications. This section is for software architects and application developers, the roles directly involved in pipelines implementation. In addition, IT operations manag- ers will find it helpful to read the configuration sections, which show how to modify the scalability of an application without modifying the actual application components. We recommend that you read the first three chapters of this section in detail. These basic chapters include Chapter 14,“Hello Software Pipelines”; Chapter 15, “Scaling Hello Software Pipelines”; and Chapter 16,“Additional Pipelines Router Configurations.” After that, you might prefer to scan the more advanced exam- ples in Chapters 17 through 22, then concentrate on the ones that most apply to your specific application scenarios.
  • 23. Preface xix The Future of Software Pipelines In the final section we tell you about the future we envision for Software Pipelines architecture. There are plenty of greenfield areas that can be developed, and it is our hope that this section will inspire readers to help move the technology for- ward into the mainstream. Conventions In our examples, when we present a section of code or XML, refer to a command, or refer to a code element, we’ll use a monospaced font, for example, <pipe- lines-distributor>. For names of components, such as services, clients, and distributors, we’ll use an italic monospaced font, for example, Distributor1. The Web Site We’ve established a Web site for Software Pipelines technology at softwarepipe- lines.org. The site is for readers of the book and for anyone else who is interested in using or advancing the Software Pipelines architecture. You can download the following items from the site: • Tools and sample report templates for the Software Pipelines Optimization Cycle (SPOC) methodology • Source code for the reference Pipelines Framework • Complete source code for all examples in the book • Articles and discussions on pipelines technology and its applications We hope you find Software Pipelines as exciting as we’ve found it, and that you take this opportunity to capitalize on its capabilities and use it to help over- come your own performance and scalability challenges.
  • 25. xxi Acknowledgments There are many individuals who have contributed to the evolution of Software Pipelines, and who have helped with the creation of this first book. I am deeply indebted to all of them for the ideas, input, and, most of all, encouragement and support on the project. I cannot mention everyone, but here are some of the many contributors who made this work possible: Ravi Palepu, great friend and business associate, spent countless hours with me discussing pipelines ideas and helping to develop the initial concepts and outline for the current work. Patrick Leonard and David Haney of Rogue Wave Software worked with me to formulate the original core pipelines concepts, forming the foundation of the current work. I also want to acknowledge the entire Rogue Wave Software organization, for its support during and after my tenure there as president of the company. Barbara Howell was the illustrator and incredibly dedicated editor for my draft of the book; without her I never could have gotten the job done. Her persis- tence, attention to detail, and talent for helping me communicate the key con- cepts through the diagrams and graphics you see in the book were invaluable. Colin Holm provided the majority of development for the code examples, as well as the reference Pipelines Framework presented in the third section. Colin’s insight and work on this were critical to the book’s final content, and his ability to create the examples from the viewpoint of a “real-world” business application developer helped transform Software Pipelines from concept to reality. Last, I must thank my family, especially my wife, Kim, for putting up with the enormous amount of work required to complete the book. I also want to thank my talented and understanding children for their cooperation and under- standing. In fact, my older son, Devyn (a genuine math whiz), helped clarify the early formulas for Pipelines Law, and my younger son, Tyler, was often a sound- ing board for the various ideas in the book and how to present them.
  • 27. xxiii About the Author Cory Isaacson is CEO of Prelude Innovations, Inc., a firm specializing in the incubation and introduction of leading software technology products. Actively involved in leading information technologies for over 20 years, Cory served as technical editor and columnist for WebSphere Advisor Magazine, has spoken at hundreds of public events and seminars, and authored numerous articles on architecture and practicalities of employing technology. Cory has provided guid- ance to hundreds of top architects and professional developers in the financial services, entertainment, telco, and software industries on the development and implementation of powerful business applications. Most recently Cory was president of Rogue Wave Software, managing the organization for over three years, building new product strategies, and culminat- ing in a successful acquisition in mid-2007 by a leading private equity firm. Cory has focused on efficiently addressing development and deployment challenges of emerging technologies such as SOA, virtualization, and commoditization of resources to support real-world business applications. Cory’s expertise with high- performance transactional applications has helped leading IT organizations respond to the challenges of dramatic growth in business and data volumes, while still managing cost pressures. Most recently, Cory has been an active evangelist on the need for using concurrent processing and scalable database techniques in order to improve application performance on multi-core architectures. Cory received his B.A. degree from the University of California at Santa Barbara.
  • 29. xxv Introduction Throughout IT history,professional developers have searched for ways to enhance the performance of critical business applications. The computer industry has tried to provide the answer time and time again, and we’ve seen plenty of solu- tions, architectures, and approaches. Obviously, the problem is not a minor one. In today’s information-based economy, companies often succeed or fail because of their software performance. There are abundant examples: banking systems, trading systems, call center operations, reporting services, and many others— they all depend on applications with high-performance requirements. In these industries, viability is directly tied to the speed at which a company conducts business. A slow, inadequate, or unresponsive application is damaging to opera- tions and the bottom line; ultimately, it can literally kill or impair the organiza- tion that relies on it. And there is no end in sight; as we depend more and more on the exchange of information to do business, performance will lag behind demand even further. There’s an additional problem. Simply achieving faster performance of indi- vidual components isn’t always enough. If your company installs a new applica- tion, if your business expands, or if your data volume rises, you may suddenly need an order-of-magnitude increase in performance—five, ten, twenty times or more. Another vector is also critical: How fast can you adapt your software to meet new needs and competitive threats? The popularity and rapid adoption of ser- vice-oriented architecture (SOA) is hard evidence of the demand for more flexi- ble software systems. SOA is a superior technology. Compared to earlier trends in IT architecture, SOA delivers better on its promises. But it presents its own challenges. If you’re using SOA for development, it’s even more important to address performance and scalability, because of the following factors: • In general observation, SOA demands significantly more computing power from a system than earlier monolithic or tightly coupled designs.
  • 30. xxvi Introduction • The very notion of loosely coupled services implies message-centric applica- tion development. Developers not only have to write traditional processing logic; they also have to handle message transmission, validation, interpreta- tion, and generation—all of which are CPU- and process-intensive. • As more organizations use SOA, we can expect messaging volume to explode and put a tremendous load on existing IT systems. The potential for adverse effects will escalate. Predictions show that over the next year or two, organizations using SOA will run into performance issues. This is nothing new; historically, each time the business world adopts a new software architecture, it suffers through growing pains. In the past twenty years, the shakeout period for each new major paradigm shift in software development has lasted about one to three years for a given evo- lutionary phase (any early J2EE user can attest to that). During that time, busi- nesses gradually adopt the new design, and while doing so, they face significant performance- and scalability-related problems. In many cases software develop- ers cannot overcome the steep learning curve; many projects end in outright fail- ure when the deployed application doesn’t perform as expected. Until recently, hardware was the saving grace for such immature architec- tures. Whenever the computer industry made a significant advance, mostly in CPU performance, performance bottlenecks could be fixed by plugging in a faster chip or by using some other mechanical solution. That advantage is now gone. We’ve hit a plateau in microprocessor technology, which comes from physical factors such as power consumption, heat generation, and quantum mechanics. The industry can no longer easily increase the clock speed of single CPUs. Therefore, for now and the foreseeable future, CPU vendors are relying on multi- core designs to increase horsepower. The catch is that if you want to take advan- tage of these new multi-core chips, your software must implement parallel processing—not a common capability in the majority of today’s applications. Let’s sum up what today’s businesses really need from their software archi- tecture: • A practical approach to parallel processing, for performance and scalability • Flexibility, to enable the business to adapt to market and other environmen- tal changes
  • 31. Introduction xxvii Creating an application with these characteristics is not easy, especially when using traditional means. Further, making such a paradigm shift work in the real world requires the talent, business knowledge, and technical expertise of the pro- fessional developer. In short, the professional developer needs a set of tools designed to meet these objectives, enabling a new level of parallel processing for business applications. Therefore, what is needed is a flexible, sensible, and practical approach to parallel processing. The Software Pipelines technology was developed to be that approach, offering the professional developer a usable set of tools and capabili- ties to enable scalable processing for today’s competitive business application environment. What Do People Think about Parallel Processing? As part of our research for this book, we wanted to find out what the software community thinks about parallel processing, so we conducted a statistical analy- sis of associated Web documents. Our analysis tool compares the usage of terms in Web documents, along with their frequency, in order to indicate the overall trend for a given subject. The results are intriguing; they confirm the importance of parallel processing as a solution for modern computing challenges. To run the analysis, we based our search on the subject“software”and looked for references to related terms in the context of that subject. We started with the following terms: • Multi-core • Multi-threaded • Parallel processing • Parallel programming
  • 32. xxviii Introduction We’ve included several charts in this section to show you the results. The first chart, Figure I.1, shows how often people use each term. As you can see, parallel programming is the most popular term, followed by multi-core, and then parallel processing. This gives us a good idea of how the software community talks about the subject. To get a more detailed query, we cross-linked each term with the following attributes: • Complex • Hard • Important • Knowledge • Useful Figure I.1 Software query
  • 33. Introduction xxix In Figure I.2 you can see the relationship of each attribute to parallel process- ing. Parallel processing is perceived as “useful” and “important,” its two strongest attributes. Figure I.2 Attributes for parallel processing
  • 34. xxx Introduction Figure I.3 shows parallel programming and its attributes. Parallel program- ming is definitely “important,” but a high percentage of documents also mention that it is “hard.” It’s interesting that “knowledge” has a high rank, which is not surprising, given the difficulty of parallel programming and the general lack of experience with its techniques. Figure I.3 Attributes for parallel programming
  • 35. Introduction xxxi Figures I.4 and I.5 show the attributes for multi-core and then multi-threaded. Both charts show responses similar to what we found for parallel programming. Figure I.5 Attributes for multi-threaded Figure I.4 Attributes for multi-core
  • 36. xxxii Introduction In Figure I.6 we’ve included a chart with all terms and attributes to show the relative strength of each combination.You can see that parallel processing is con- sidered “useful,” and that parallel programming is both “important” and “hard.” What conclusion could you draw from all of this? It appears that people who talk about software are saying that parallel processing is important, but it’s not easy. We’re hoping we can help make it easier. The goal of Software Pipelines, and our goal in writing this book, is to provide a practical and useful set of techniques to address the challenge, and our intention is that you will find it helpful in your own application development and business management. Figure I.6 Attributes for all terms
  • 37. S E C T I O N I 1 Pipelines Theory The first section of this book covers the fundamentals of Software Pipelines. In Chapter 1, “Parallel Computing and Business Applications,” we investigate the existing methods for parallel processing. This beginning discussion is useful as a frame of reference for comparing Software Pipelines to other technologies with which you’re famil- iar. After that, we introduce you to the most basic principles of the pipelines architecture, and then we present our first example of a pipelined application. The following chapter, “Pipelines Law,” describes the basic theory of pipelines and explains how to “do the math” for predicting and managing pipelines performance. We introduce Pipelines Law by drawing an analogy to fluid dynamics, a long-standing engi- neering discipline that provides insights into gauging the performance of business trans- action applications. From these simple principles you’ll get the tools for modeling your own applications and for identifying areas where you can improve performance. Chapter 3, “Pipelines Examples,” contains a simplified automated teller machine (ATM) example. We use this basic example to show you how the theoretical foundation fits into a real-world application. In later sections we expand the banking application con- cept to more detailed, advanced examples. We’ve included a number of common, useful patterns for pipelines implementations in Chapter 4, “Pipelines Patterns.” You can implement Software Pipelines in many ways. In this chapter you’ll learn about several aspects and their options. Later in the book we cover these patterns in much more detail. You’ll learn how they work and how you can apply them to solve various problems in performance and scalability. In the final chapter of the section,“Pipelines: The Organizational Impact,” we present the issues with which IT and business organizations must deal when using Software Pipelines technology. We cover all the critical points, including strategy, resources, and budget.
  • 39. 3 C H A P T E R O N E Parallel Computing and Business Applications If you own, manage, or work with a critical business appli- cation, you’re most likely dealing with performance prob- lems. The application can’t handle the ever-increasing data volume, it can’t scale to meet new demand, or its per- formance is never good enough or fast enough. You need a higher level of performance; or even more daunting, you may need an order-of-magnitude increase so you can multiply the number of transactions your application can handle. In today’s computing environment, there’s really only one way to get there: Utilize a parallel architecture to run multiple tasks at the same time. The fundamental concept of parallel architecture is this: Given a series of tasks to perform, divide those tasks into discrete elements, some or all of which can be pro- cessed at the same time on a set of computing resources. Figure 1.1 illustrates this process. To do this, you have to break the application into a series of steps,some of which can run in parallel.However, that’s really hard to do if you’re working with existing business applications that do not lend themselves to such decomposition. Whether monolithic or object-oriented, most modern applications are tightly coupled, and that makes it hard to decompose a given process into steps. Over the years, computer scientists have performed extensive research into parallel architecture and they’ve developed many techniques, but until now they focused on techniques that don’t easily lend themselves to busi-
  • 40. 4 1. Parallel Computing and Business Applications ness systems. At the same time, demand for greater performance started over- reaching the limit of most business applications, and the recent trend toward a service-oriented approach has made the challenge even greater. Parallel process- ing can fix the problem, but common existing techniques are either too complex to adapt to typical business transactions, or they don’t even apply to the business arena. Before we show you the solution, let’s look at the existing techniques for par- allel computing. The three main approaches are • Mechanical solutions used at the operating system level, such as symmetric multiprocessing (SMP) and clustering • Automated network routing, such as round-robin distribution of requests • Software-controlled grid computing Figure 1.1 The fundamental concept of parallel architecture
  • 41. Mechanical Solutions: Parallel Computing at the Operating System Level 5 Mechanical Solutions: Parallel Computing at the Operating System Level Symmetric Multiprocessing SMP automatically distributes application tasks onto multiple processors inside a single physical computer; the tasks share memory and other hardware resources. This approach is highly efficient and easy to implement, because you don’t need specific, detailed knowledge of how SMP divides the workload. Mechanical solutions such as SMP are very useful as generic one-size-fits-all techniques. To get the most out of SMP, however, you have to write applications with multi-threaded logic. This is a tricky job at best and is not, in general, the forte of most corporate IT developers. Plus, SMP is a black-box approach, which can make it very difficult to debug resource contention. For example, if you have shared software components and run into a problem, finding the cause of the bug may be very hard and time-consuming. There’s another drawback: Resource sharing between processors is tightly coupled and is not optimized for any particular application. This puts a lid on potential performance gain, and when you start scaling an application, shared resources will bottleneck at some point. So you might scale an application to eight processors with great results, but when you go to 16, you don’t see any real gain in performance. Clustering In clustering, another widely used mechanical solution, separate physical com- puters share the workload of an application over a network. This technique pro- vides some capabilities for automatic parallel processing and is often used for fail-over and redundancy. Clustering techniques are automated and contain some inefficient function- ality. If you’re not using centralized resources, the system has to copy critical information (or in some cases, all information) from one node to another when- ever a change in state occurs, which can become a serious bottleneck. As is the case with SMP, clustering is often effective up to a point—then adding hardware results in severely diminished returns.
  • 42. 6 1. Parallel Computing and Business Applications Automated Network Routing: Parallel Computing by Predetermined Logic In this technique you use some type of predetermined logic to divide application requests. One common approach is round-robin routing, where the system dis- tributes requests evenly, one after the next, among a set of physical computers. Each computer provides exactly the same application functionality. A good example and use case for round-robin is a Web application, in which the system shunts each Web page request to one of several available processors. Although this approach is useful for certain applications and can be useful as part of a Software Pipelines design, it is also very limited; the router has no logic for determining the best route for a given request, and all downstream processors perform identical tasks. Further, business applications often demand strict“order of processing” requirements, something that simple round-robin logic cannot accommodate. Grid Computing: Parallel Computing by Distribution All of the techniques covered so far have their uses, but you can’t use them for massive scalability, and they don’t work for transaction-based, message-oriented applications. You can scale them mechanically and automatically to a certain level, at which point the overhead of maintaining shared or redundant resources limits performance gains. If you need greater scalability, grid computing is a bet- ter choice. In grid computing the system distributes discrete tasks across many machines in a network. Typical grid architecture includes a centralized task scheduler, which distributes and coordinates tasks with other computing facilities across the network. Grid computing can deliver far higher throughput than the automated approaches described earlier, but it puts a significant burden on the developer. You must explicitly write the code for dividing tasks, for distributing tasks, and for reassembling the processed results. Most importantly, grid computing is primarily designed to solve the“embar- rassingly parallel” problem—long-running, computation-intensive processes as found in scientific or engineering applications. Grids are very beneficial for the typical use cases, such as modeling fluid dynamics, tracing the human genome, and complex financial analytics simulations. In each of these applications you divide a massive, long-running computation among multiple nodes. This divides
  • 43. Parallel Computing for Business Applications 7 the problem into smaller, similar tasks, which interact predictably with computa- tional resources. However, this is not as useful for business applications, given their transactional nature, mixed workload requirements, and ever-changing vol- ume demands. Parallel Computing for Business Applications Business applications are very different from engineering or scientific applica- tions. They have the following traits: • They process transactions. • They process tasks with mixed workloads. Quite often you can’t predict the size of each task, or what the processing requirements might be. • The workload varies widely throughout a given time period. It might even change from day to day, or from one hour to the next. • They often have requirements that defy the very concept of performing mul- tiple tasks in parallel. For example, first in/first out (FIFO) transactions (which are very commonly used) must be done in an exact, ordered sequence. • They almost always use a database or other centralized resource that bottle- necks and caps off transaction throughput. Up to now, research on parallel computing concentrated mostly on mechan- ical solutions with limited scalability, or on grid-based scientific and engineering applications that lie outside the business domain. What we need is a new, simpler way to implement parallel computing for businesses. This new approach must support the following requirements: • It must handle a wide variety of business application needs. • It must provide ultimate scalability. • It must maintain critical business requirements. • It must be easy to implement by corporate IT developers. In reality, there’s no automagic answer for scaling business applications, because each organization has very different needs and requirements. The ulti- mate solution requires the right tools, architecture, and approach, and it must focus on business applications. But more importantly, the solution requires the expertise of the professional developer—the invaluable corporate resource who possesses both a full understanding of the technology and an intimate knowledge of the business domain.
  • 44. Discovering Diverse Content Through Random Scribd Documents
  • 45. through the railing and disappear for half an hour together in the then inclosed and thickly planted greensward, knowing perfectly well that Lamb did not dare to move from the spot where he (Dash) had disappeared, till he thought proper to show himself again. And they used to take this walk oftener than any other, precisely because Dash liked it, and Lamb did not.” Beecher said that “in evolution, the dog got up before the door was shut.” If there were not reason, mirthfulness, love, honour, and fidelity in a dog, he did not know where to look for them, And Huxley has devoted much attention to the study of canine ability. He once illustrated, by the skeleton of the animal being raised on hind legs, that in internal construction the only difference between man and dog was one of size and proportion. There was not a bone in one which did not exist in the other, not a single constituent in the one that was not to be found in the other, and by the same process he could prove that the dog had a mind. His own dog was certainly not a mere piece of animate machinery. He once possessed a dog which he frequently left among the thousands frequenting Regent’s Park to secrete himself behind a tree. So soon as the animal found that he had lost his master, he laid his nose to the ground and soon tracked him to his hiding place. He believed there was no fundamental faculty connected with the reasoning powers that might not be demonstrated to exist in dogs. He did not believe that dogs ever took any pleasure in music; but this seems not to be always the case. Adelaide Phillips, the famous contralto, told me that her splendid Newfoundland Cæsar was quite a musician. She gave him singing lessons regularly. “I see him now,” she said, “his fore paws resting on my knee. I would say: ‘Now the lesson begins. Look at me, sir. Do as I do.’ Then I would run down the scale in thirds, and Cæsar, with head thrown back and swaying from side to side, would really sing the scale. He would sing the air of The Brook very correctly. But it was the best sport to see him attempt the operatic.” Here her gestures became showy and impressive, as if on the stage, and her mimicking of the dog’s efforts to follow her were comical in the extreme. Sometimes (so quickly did he catch all the tricks of the profession) he
  • 46. would not sing until urged again and again. Sometimes he would be “out of voice,” and make most discordant sounds. He has an honoured grave at her country home in Marshfield, where Webster also put up a stone in memory of his horse Greatheart. Charlotte Cushman loved animals, especially dogs and horses; and her blue Skye terrier Bushie, with her human eyes and uncommon intelligence, has a permanent place in the memoirs of her mistress. Miss Cushman would say, “Play the piano, Bushie,” and Bush knew perfectly well what was meant, and would go through the performance, adding a few recitative barks with great gravity and éclat. The phrase “human eyes” recalls what Blackmore, the novelist —who has a genuine, loving appreciation of our dear dumb animals— says of a dog in Christowell: “No lady in the land has eyes more lucid, loving, eloquent, and even if she had, they would be as nothing without the tan spots over them.” Patti has many pets, and always takes some dog with her on her travels, causing great commotion at hotels. She also leaves many behind her as a necessity. She has an aviary at her castle in Wales, and owns several most loquacious parrots. Miss Mitford’s gushing eulogy upon one of her numerous dogs is too extravagant to be quoted at length: “There never was such a dog. His temper was, beyond comparison, the sweetest ever known. Nobody ever saw him out of humour, and his sagacity was equal to his temper.... I shall miss him every moment of my life. We covered his dead body with flowers; every flower in the garden. Everybody loved him, dear saint, as I used to call him, and as I do not doubt he now is. Heaven bless him, beloved angel!” Mr. Fields writes: “Miss Mitford used to write me long letters about Fanchon, a dog whose personal acquaintance I had made some time before while on a visit to her cottage. Every virtue under heaven she attributed to that canine individual, and I was obliged to allow in my return letters that since our planet began to spin nothing comparable to Fanchon had ever run on four legs.”
  • 47. Mrs. Browning was fond of pets, especially of her dog Flush, presented by Miss Mitford, which she has immortalized in a sonnet and a long and exquisite poem:
  • 48. Flush or Faunus. You see this dog. It was but yesterday I mused forgetful of his presence here; Till thought on thought drew downward tear on tear; When from the pillow, where wet-cheeked I lay, A head as hairy as Faunus’ thrust its way Right sudden against my face, two golden, clear, Great eyes astonished mine; a drooping ear Did flap me on either cheek to dry the spray. I started first; as some Arcadian Amazed by goatly god in twilight grove; But as the bearded vision closelier ran My tears off, I knew Flush, and rose above Surprise and sadness; thanking the true Pan Who by low creatures leads to heights of love. The poem is equally beautiful:
  • 49. To Flush, my Dog.
  • 50. Other dogs may be thy peers Haply in these drooping ears And this glossy fairness. But of thee it shall be said, This dog watched beside a bed Day and night unweary; Watched within a curtained room, Where no sunbeam brake the gloom Round the sick and weary. Roses gathered for a vase In that chamber died apace, Beam and breeze resigning; This dog only waited on, Knowing that when light is gone Love remains for shining. Other dogs in thymy dew Tracked the hares and followed through Sunny moor or meadow; This dog only crept and crept Next a languid cheek that slept, Sharing in the shadow. Other dogs of loyal cheer Bounded at the whistle clear, Up the woodside hieing; This dog only watched in reach Of a faintly uttered speech, Or a louder sighing. And if one or two quick tears Dropped upon his glossy ears, Or a sigh came double, Up he sprang in eager haste, Fawning, fondling, breathing fast In a tender trouble. And this dog was satisfied If a pale, thin hand would glide Down his dewlaps sloping, Which he pushed his nose within, After platforming his chin O h l l f
  • 51. On the palm left open. This dog, if a friendly voice Call him now to blither choice Than such chamber keeping, “Come out,” praying from the door, Presseth backward as before, Up against me leaping. Therefore to this dog will I, Tenderly, not scornfully, Render praise and favour; With my hand upon his head, Is my benediction said, Therefore and forever. Mrs. Browning said in a note to this poem: “This dog was the gift of my dear and admired friend, Miss Mitford, and belongs to the beautiful race she has rendered celebrated among English and American readers.” Hogg, the Ettrick Shepherd, addressed a long poem to his dog, ending: When my last bannock’s on the hearth, Of that thou canna want thy share; While I ha’e house or hauld on earth, My Hector shall ha’e shelter there. Another favourite was honoured by Dr. Holland, the essayist, lecturer, magazine editor, and poet:
  • 52. To my Dog Blanco.
  • 53. My dear, dumb friend, low lying there, A willing vassal at my feet, Glad partner of my home and fare, My shadow in the street. I look into your great brown eyes, Where love and loyal homage shine, And wonder where the difference lies Between your soul and mine! For all of good that I have found Within myself or human kind, Hath royally informed and crowned Your gentle heart and mind. I scan the whole broad earth around For that one heart which, leal and true, Bears friendship without end or bound, And find the prize in you. I trust you as I trust the stars; Nor cruel loss, nor scoff of pride, Nor beggary, nor dungeon bars, Can move you from my side! As patient under injury As any Christian saint of old, As gentle as a lamb with me, But with your brothers bold; More playful than a frolic boy, More watchful than a sentinel, By day and night your constant joy To guard and please me well. I clasp your head upon my breast— The while you whine and lick my hand— And thus our friendship is confessed, And thus we understand! Ah, Blanco! did I worship God As truly as you worship me, Or follow where my Master trod With your humility—
  • 54. Did I sit fondly at his feet, As you, dear Blanco, sit at mine, And watch him with a love as sweet, My life would grow divine! Maria Edgeworth wrote to her aunt, Mrs. Ruxton, in 1819, “I see my little dog on your lap, and feel your hand patting his head, and hear your voice telling him that it is for Maria’s sake he is there.” What a pathetic friendship existed between Emily Brontë and the dog whom she was sure could understand every word she said to him! “She always fed the animals herself; the old cat; Flossy, her favourite spaniel; Keeper, the fierce bulldog, her own constant dear companion, whose portrait, drawn by her own spirited hand, is still extant. And the creatures on the moor were all in a sense her pets and familiar with her. The intense devotion of this silent woman to all manner of dumb creatures has something almost inexplicable. As her old father and her sisters followed her to the grave they were joined by another mourner, Keeper, Emily’s dog. He walked in front of all, first in the rank of mourners, and perhaps no other creature had loved the dead woman quite so well. When they had laid her to sleep in the dark, airless vault under the church, and when they had crossed the bleak churchyard and had entered the empty house again, Keeper went straight to the door of the room where his mistress used to sleep, and laid down across the threshold. There he howled piteously for many days, knowing not that no lamentations could wake her any more.” Dogs were supposed by the ancient Gaels to know of the death of a friend, however far they might be separated. But this is getting too gloomy. Do you know how the proverb originated “as cold as a dog’s nose”? An old verse tells us: There sprang a leak in Noah’s ark, Which made the dog begin to bark; Noah took his nose to stop the hole, And hence his nose is always cold.
  • 55. No one has expressed more appreciation of the noble qualities of dogs than the abstracted, philosophic Wordsworth.
  • 57. On his morning rounds the master Goes to learn how all things fare; Searches pasture after pasture, Sheep and cattle eyes with care; And, for silence or for talk, He hath comrades in his walk; Four dogs, each pair of different breed, Distinguished two for scent and two for speed. See a hare before him started! Off they fly in earnest chase; Every dog is eager-hearted, All the four are in the race: And the hare whom they pursue, Hath an instinct what to do; Her hope is near: no turn she makes; But, like an arrow, to the river takes. Deep the river was, and crusted Thinly by a one night’s frost; But the nimble hare hath trusted To the ice, and safely crost; She hath crossed, and without heed All are following at full speed, When, lo! the ice, so thinly spread, Breaks—and the greyhound, Dart, is over head! Better fate have Prince and Swallow— See them cleaving to the sport! Music has no heart to follow, Little Music, she stops short. She hath neither wish nor heart, Hers is now another part: A loving creature she, and brave! And fondly strives her struggling friend to save. From the brink her paws she stretches, Very hands as you would say! And afflicting moans she fetches, As he breaks the ice away. For herself she hath no fears, Him alone she sees and hears, Makes efforts and complainings; nor gives o’er Until her fellow sank, and reappeared no more.
  • 58. , pp
  • 59. Tribute To the Memory of the Same Dog. Lie here, without a record of thy worth, Beneath a covering of the common earth! It is not from unwillingness to praise, Or want of love, that here no stone we raise; More thou deservest; but this man gives to man, Brother to brother, this is all we can. Yet they to whom thy virtues made thee dear Shall find thee through all changes of the year: This oak points out thy grave; the silent tree Will gladly stand a monument of thee. Cowper, who tenderly loved all animals, did not fail to honour a dog with a poetical tribute in The Dog and the Water Lily, celebrating the devotion of “my spaniel, prettiest of his race.”
  • 60. It was the time when Ouse displayed His lilies newly blown; Their beauties I intent surveyed, And one I wished my own. With cane extended far, I sought To steer it close to land; But still the prize, though nearly caught, Escaped my eager hand. Beau marked my unsuccessful pains With fixed, considerate face, And puzzling set his puppy brains To comprehend, the case. But chief myself, I will enjoin, Awake at duty’s call, To show a love as prompt as thine To Him who gives us all. But with a chirrup clear and strong, Dispersing all his dream, I thence withdrew, and followed long The windings of the stream. My ramble finished, I returned. Beau, trotting far before, The floating wreath again discerned, And, plunging, left the shore. I saw him, with that lily cropped, Impatient swim to meet My quick approach, and soon he dropped The treasure at my feet. Charmed with this sight, the world, I cried, Shall hear of this, thy deed: My dog shall mortify the pride Of man’s superior breed. Forster tells us fully of Dickens’s devotion to his many dogs, quoting the novelist’s inimitable way of describing his favourites. In Dr. Marigold there is an especially good bit about “me and my dog.”
  • 61. “My dog knew as well as I did when she was on the turn. Before she broke out he would give a howl and bolt. How he knew it was a mystery to me, but the sure and certain knowledge of it would wake him up out of his soundest sleep, and would give a howl and bolt. At such times I wished I was him.” After the death of child and wife, he says: “Me and my dog was all the company left in the cart now, and the dog learned to give a short bark when they wouldn’t bid, and to give another and a nod of his head when I asked him ‘Who said half a crown?’ He attained to an immense height of popularity, and, I shall always believe, taught himself entirely out of his own head to growl at any person in the crowd that bid as low as sixpence. But he got to be well on in years, and one night when I was convulsing York with the spectacles he took a convulsion on his own account, upon the very footboard by me, and it finished him.” Mr. Laurence Hutton, in the St. Nicholas, has lately expressed his sentiments about dogs, as follows: “It was Dr. John Brown, of Edinburgh, I think, who spoke in sincere sympathy of the man who “led a dog-less life.” It was Mr. “Josh Billings,” I know, who said that in the whole history of the world there is but one thing that money can not buy—to wit, the wag of a dog’s tail. And it was Prof. John C. Van Dyke who declared the other day, in reviewing the artistic career of Landseer, that he made his dogs too human. It was the great Creator himself who made dogs too human—so human that sometimes they put humanity to shame. “I have been the friend and confidant of three dogs, who helped to humanize me for the space of a quarter of a century, and who had souls to be saved, I am sure, and when I cross the Stygian River I expect to find on the other shore a trio of dogs wagging their tails almost off in their joy at my coming, and with honest tongues hanging out to lick my hands and my feet. And then I am going, with these faithful, devoted dogs at my heels, to talk dogs over with Dr. John Brown, Sir Edward Landseer, and Mr. Josh Billings.”
  • 62. Do dogs have souls—a spark of life that after death lives on elsewhere? Many have hoped so, from Wesley to the little boy who has lost his cherished comrade. It is certain that dogs show qualities that in a man would be called reason, quick apprehension, presence of mind, courage, self- abnegation, affection unto death. At the close of this chapter may I be allowed to tell of two of my special friends—one a fox terrier, owned by Mr. Howard Ticknor, of Boston; the other my own interesting pet—who have never failed to learn any trick suggested to them? Antoninus Pius, called Tony for short, goes through more than a score of wonderful accomplishments, such as playing on the piano, crossing his paws and looking extremely artistic, if not inspired, dancing a skirt dance, spinning on a flax wheel, performing on a tambourine swung by a ribbon round his neck; plays pattycake with his mistress. And my own intelligent Yorkshire terrier mounts a chair back and preaches with animation, eloquence, and forcible gestures; knocks down a row of books and then sits on them, as a book reviewer; stands in a corner with right paw uplifted, as a tableau of Liberty enlightening the World; rings a bell repeatedly and with increasing energy, to call us to the table; sings with head and eyes uplifted, to accompaniment of harmonica—and each is just beginning his education. I have read lately an account of a knowing dog, with a sort of sharp cockney ability, who used to go daily with penny in mouth and buy a roll. Once one right out of the oven was given to him; he dropped it, seized his money off the counter, and changed his baker.
  • 63. COMPLIMENTS TO CATS. You may own a cat, but cannot govern one.
  • 64. TO A KITTEN. But not alone by cottage fire Do rustics rude thy feats admire; The learnèd sage, whose thoughts explore The widest range of human lore; Or, with unfettered fancy fly Through airy heights of poesy; Pausing, smiles with altered air To see thee climb his elbow-chair, Or, struggling with the mat below, Hold warfare with his slippered toe. Joanna Baillie.
  • 65. CATS. God made the cat in order to give to man the pleasurable sense of having caressed the tiger.
  • 66. Welcome to Our Bookstore - The Ultimate Destination for Book Lovers Are you passionate about books and eager to explore new worlds of knowledge? At our website, we offer a vast collection of books that cater to every interest and age group. From classic literature to specialized publications, self-help books, and children’s stories, we have it all! Each book is a gateway to new adventures, helping you expand your knowledge and nourish your soul Experience Convenient and Enjoyable Book Shopping Our website is more than just an online bookstore—it’s a bridge connecting readers to the timeless values of culture and wisdom. With a sleek and user-friendly interface and a smart search system, you can find your favorite books quickly and easily. Enjoy special promotions, fast home delivery, and a seamless shopping experience that saves you time and enhances your love for reading. Let us accompany you on the journey of exploring knowledge and personal growth! ebookgate.com