VMware Infrastructure 3 Book Excerpt and Author Interview
VMware Infrastructure 3: Advanced Technical Design Guide and Advanced Operations Guide provides a wealth of practical insights into setting up virtualization in todays corporate environments.
Tracking change and innovation in the enterprise software development community
Posted by Dilip Krishnan on Jun 24, 2008 09:47 AM
Dan Creswell claims that "taste is everything" when it comes to putting together the pieces that make a good SOA. Dan says that picking the technology stack for distributed services, how you layer the service "units", etc, are a matter of taste as well as consideration of a number of guidelines, as opposed to just taking a cookie cutter approach to SOA as some seem to claim is possible. Dan concludes providing some of his own guidelines for SOA.[...] we’d like to believe that architecture (and much of development) can be done with fixed rules, cookie cutter style, get your catalog of patterns and technology, apply them - job done. The ultimate embodiment of this behaviour is ... [thinking that] ... deploying an ESB [...] makes your system [an] SOA.
He says that even in good architectures data dependency is unavoidable, and suggests layering the code and data vertically to isolate service "units" higher up in the chain from having direct dependency on the data. This form of layering does have its own drawbacks because its bakes in assumptions of location agnosticity and synchronicity of invocation into the higher order service units. To avoid issues related to these assumptions, he suggests that "we deploy each unit in it’s own process accessed via some network endpoint that dependants use to interact with it". Such a deployment, he says, afford run-time performance benefits via techniques like 'sharding, horizontal scaling and load-balancing and maintainability in terms of testing and hot-patching these units. It also allows teams to work "independently of development efforts elsewhere, making for less contention in development".
He proposes the following set of guidelines on layering code and data and choosing distributed architectures and cautions that one still needed to think about consistency issues related with this design choice and "also take [into consideration] the fallacies of [distributed computing]":
- Considering similarities in consistency, availability and partitioning (CAP) requirements
- Data access localities
- Data relationships
- Jurisdictional requirements
- Roles and responsibilities (at coarser level than OO)
- Features (e.g. recommendations)
- Business processes
- Constituent elements of an overall business process
... and concludes by saying "most systems likely require a combination of these [guidelines] rather than one fixed approach, taste and gut instinct count for a lot." Be sure to check out the original post.
The Key to SOA Governance: Understanding the Essence of Business
The End of Middleware: Freedom from IT Stacks as we know it
The Agile Business Analyst: Skills and Techniques needed for Agile
Rainmaking - IBM's software virtualization strategy (Jerry Cuomo CTO blog)
VMware Infrastructure 3: Advanced Technical Design Guide and Advanced Operations Guide provides a wealth of practical insights into setting up virtualization in todays corporate environments.
Can a system that is so large it cannot be comprehended be "designed" in a conventional sense? The foundations of computing are about to change. In this talk, Richard P. Gabriel explores why and how.
Ruby 1.9's Fibers and non-blocking I/O are getting more attention - we talked to Mohammad A. Ali of the NeverBlock project and Tony Arcieri of the Revactor project.
Tim Mackinnon talks about the aspirations behind the Agile principles and practices, the desire to become efficient, to write quality code which does not end up being thrown away.
Brian Goetz discusses the difficulties of creating multithreaded programs correctly, incorrect synchronization, race conditions, deadlock, STM, concurrency, alternatives to threads, Erlang, Scala.
Often the hardest part of changing technologies is language syntax differences. This new article provides Java developers with a transition guide to Actionscript which forms the foundation of Flex.
Neal Ford talks about having multiple languages running on one of the two major platforms: Java and .NET. He also presents the advantages offered by Ruby compared to static languages like Java or C#.
David Anderson talks about the history of Agile, the current status of it and his vision for the future. The role of Agile consists in finding ways to implement its principles.
No comments
Reply