Collaboration: At the Extremities of Extreme
Jason Ayers share the observations he made watching a team of developers collaborating in real time on the same code base, pushing XP, pair programming and continuous integration to their extremes.
The content has been bookmarked!
There was an error bookmarking this content! Please retry.

Posted by Vijay Narayanan on May 19, 2009
Data services are software services that encapsulate operations on key data entities of relevance to the enterprise. Enterprise data is stored in multiple systems and require multiple interfaces or mechanisms to interact with them. There are varying channels (branch, Online, call center) and mechanisms (event driven, on demand, batch process) that need to be served as well adding additional challenges to data services. Without an abstraction layer for data consumers that insulate them from this complexity the enterprise will end up with a spaghetti of point to point integrations between data sources and data consumers.
Data services abstract the consumer from having to access or update multiple data sources and are critical in helping maintain data integrity when a consumer needs to work with multiple data sources. Additionally, they help build reusable data services that can be leveraged for multiple projects and initiatives. Data services also perform a critical governance function - they help centralize metrics, monitoring, version management, reuse of data types, and enforce data visibility and access rules.
Data services provide several additional benefits - data source abstraction, aggregation of data providers, reuse (generic, interoperable, flexible consumption patterns), alignment with logical data models , support for multiple service versions, provide value added features, and single point of interaction. Consequently, they serve as the foundation on which an enterprise can meet evolving business requirements on a continual basis.
a. Rationale for data services: As stated briefly above, data services have several key benefits to the enterprise. In this section each benefit is explained in more detail:
b. Scope of data services: data services are primarily concerned with actions on data entities - period. Thus data services scope include various manipulations on data entities, aggregation of data across multiple disparate data sources, a facility to consume data interfaces from a variety of platforms using a variety of transport protocols, mapping between logical interface with physical provider interfaces, and graceful error handling of data service errors. Data sourcing and transfer of very large data extracts could use data services as well although traditionally those areas use ETL and data profiling tools. Business process orchestration logic and execution of line of business rules are out of scope for data services since they inhibit reuse. Logic that is specific to a particular user interface screen/application is also out of scope for a data service.
c. Data services development: Pursuing a “contract-first” approach to data services development, the service contract - input schemas and output schemas are developed based on the requirements. Schema design needs to follow several guidelines and best practices and it is important to review the key ones here.
d. Data services consumption patterns: Data services consumption needs to be examined from several perspectives:
I am Vijay Narayanan, a software development team lead building reusable data services and business process automation components working for a financial services firm. I have worked on several software projects ranging from single user systems to large, distributed, multi-user platforms with several services. I blog about Software Reuse at http://softwarereuse.wordpress.com/.
Why? See Bill Poole's excellent explanation.
Sriram
Are data services an anti-pattern? Just like everything else in architecture, the answer is based on the technology, business, and organizational contexts. The number of data sources, the complexity of data entity structure and data access patterns, volume of data exchange, performance, and degree of decoupling needed between consumers and providers all play into choosing the implementation characteristics of data services. If your organization has several silos of data including a mixture of legacy repositories and each data source integration is unique and costs resources to build and test become factors as well. There are specific concerns and techniques when implementing read-only services vs. read-write services. Finally, data services are not always accessed in synchronous request/reply fashion neither are they always accessed from a task or business service.
Isn't this just rehashing the entity services idea yet again?
Personally I totally agree with Bill Poole's analysis.
There's a good discussion of this on InfoQ itself actually:
www.infoq.com/news/2007/06/entity-services
Jason Ayers share the observations he made watching a team of developers collaborating in real time on the same code base, pushing XP, pair programming and continuous integration to their extremes.
Michael Snoyman presents Yesod, a web framework written in Haskell and containing a web server, templating, ORM, libraries (templating, gravatar, etc.).
Richard Kreuter and Kyle Banker on how to avoid classical RDBMS transactional systems by using compensation mechanisms, transactional messaging or transactional procedures.
Attila Szegedi talks about performance tuning Java and Scala programs at Twitter: how to approach GC problems, the importance of asynchronous I/O, when to use MySQL/Cassandra/Redis, and much more.
One category of risk that project teams need to ensure they address is business value failure – delivering a product that fails to provide value for the business investor.
InfoQ spoke to the authors of Software Systems Architecture on a couple of new topics, the System Context viewpoint and Agile, which have been added to the second edition.
Alex Papadimoulis discusses ugly code, where it comes from, how to avoid it, and how to get rid of it.
John Davies examines Visa’s architecture and shows how enterprises have architected complex integrations incorporating Hadoop, memcached, Ruby on Rails, and others to deliver innovative solutions.
4 comments
Watch Thread Reply