Understanding Throughput-Oriented Architectures. By Michael Garland, David B. Kirk Communications of the ACM, Vol. 53 No. 11, Pages 58-66 10.1145/1839676.1839694 Comments Much has been written about the transition of commodity microprocessors from single-core to multicore chips, a trend most apparent in CPU processor families. Commodity PCs are now typically built with CPUs containing from two to eight cores, with even higher core counts on the horizon. These chips aim to deliver higher performance by exploiting modestly parallel workloads arising from either the need to execute multiple independent programs or individual programs that themselves consist of multiple parallel tasks, yet maintain the same level of performance as single-core chips on sequential workloads. A related architectural trend is the growing prominence of throughput-oriented microprocessor architectures.
Modern GPUs are fully programmable and designed to meet the needs of a problem domain—real-time computer graphics—with tremendous inherent parallelism. GPUs. Enterprise Integration Patterns with BizTalk Server 2004. Failover: Messy Realities. People who don't live in operations can carry some funny misconceptions in their heads. Some of my personal faves: Just add some servers! I want a report of every configuration setting that's different between production and QA! We're going to make sure this (outage) never happens again! I've recently been reminded of this during some discussions about disaster recovery. This topic seems to breed misconceptions. That is, failover is essentially automatic and magical. Sadly, there are many intermediate states that aren't found in this mental model. Once you account for delays, you also have to account for faulty mechanisms.
Just off the cuff, I think the full model looks a lot more like this: It's worth considering each of these states and asking yourself the following questions: Is the state transition triggered automatically or manually? S3 Outage Report and Perspective. Amazon has issued a more detailed statement explaining the S3 outage from June 20, 2008. In my company, we'd call this a "Post Incident Report" or PIR. It has all the necessary sections: Observed behaviorRoot cause analysisFollowup actions: corrective and operational This is exactly what I'd expect from any mature service provider. There are a few interesting bits from the report. First, the condition seems to have arisen from an unexpected failure mode in the platform's self-management protocol. This shouldn't surprise anyone. In fact, I'd expect to find more cases of odd emergent behavior at large scale.
Second, the back of my envelope still shows S3 at 99.94% availability for the year. Third, Amazon rightly recognizes that transparency is a necessary condition for trust. Exposure. The act of design includes: Consideration of many possible technology optionsExamination and identification of constraintsThought about the pros and cons of using various patterns and stylesComparing various splits of role and responsibilityLooking at various tradeoffs of complexity versus functionFormulation of opinion on possible future directions of system growth A large proportion of this information is lost when the design document is written, because the focus is typically on providing a (notionally) definitive view of how a system should be structured which might be in the form of a bunch of UML diagrams or merely a collection of Visio-type diagrams and explanation of what each of the boxes in the diagrams does. At the code-level there is almost no chance that any of this information will have been retained.
Yet this information is of high value since it: Like this: Like Loading... 10 Must-Know Topics For Software Architects In 2009. In the last year or so, after quite a lull, the software architecture business has gotten rather exciting again. We're finally seeing major new topics emerging into the early mainstream that are potential game-changers, while at the same time a few innovations that have been hovering in the margins of the industry are starting to break out in a big way.
The big changes: The hegemony of traditional 3 and 4-tier application models , heavyweight run-time platforms, and classical service-oriented architecture that has dominated for about a decade is now literally being torn asunder by a raft of new approaches for designing and architecting applications. These might sound like incautious words but major changes are in the air and architects are reaching out for new solutions as they encounter novel new challenges in the field.
Let's also not forget about Web 2.0 approaches and design patterns which are becoming ever more established in online applications and enterprise architecture both. Writing Great Documentation - What to write? Tech docs can take a bunch of different forms ranging from high-level overviews, to step-by-step walkthroughs, to auto-generated API documentation. Unfortunately, no single format works for all users; there’s huge differences in the way that people learn, so a well-documented project needs to provide many different forms of documentation. At a high level, you can break down the different types of documentation you need to provide into three different formats: step-by-step tutorials,overviews and topical guides to the various conceptual areas of your project, andlow-level, deep-dive reference material. Let’s look at each in turn. Tutorials Good tutorials are a must as they’re usually the first thing someone sees when trying out a new piece of tech. Django’s tutorial is frankly a bit musty at this point and is probably due for at least a light refresh, but it hits all the important points.
Be quick. Topical guides This is the meat of your documentation. Reference Don’t. What’s next. Writing great documentation: technical style. Now that I’ve discussed what kinds of technical documentation to write, I can move on to the question of how to actually develop a writing style that produces great technical documentation. Learn to write Unfortunately, there aren’t any shortcuts here. The best way to learn how to write great documentation is to first learn how to write (anything).
There are some important differences between technical documentation and your average prose, but a solid foundation of good written communication skills is an irreplaceable prerequisite. So how do you learn to write (anything) well? There’s only one answer: you’ll learn to write well if you write. A lot. Writing English isn’t any different than writing code: the more you do it, the better you get. That’s how those of us with humanities degrees (I’ve got a degree in American Literature, also known as a “B.A. in B.S.”) become good writers: our degrees force us to write to the point that it comes easily.
Watch for how authors accomplish “tone”. Documenting your software architecture - why and how? Corruption. Amazon has had a few problems of late, one of the more interesting ones being something S3 users encountered. It took Amazon a little while to identify the root cause: We’ve isolated this issue to a single load balancer that was brought into service at 10:55pm PDT on Friday, 6/20. It was taken out of service at 11am PDT Sunday, 6/22. While it was in service it handled a small fraction of Amazon S3′s total requests in the US. Intermittently, under load, it was corrupting single bytes in the byte stream.
Perhaps they had anticipated this scenario as the S3 API features explicit support for software-level check-summing via MD5: For all PUT requests, Amazon S3 computes its own MD5, stores it with the object, and then returns the computed MD5 as part of the PUT response code in the ETag. Some developers were surprised that any of this was necessary, expecting TCP/UDP checksums to be sufficient however Stevens points out in TCP/IP Illustrated Vol I: Takeaways: Like this: Like Loading... Bug or Architecture Flaw? (Fail or No Fail) Blaine Cook, Twitter’s lead architect, has left the company. Predictably, the blogosphere is flaying him pretty good. Michael Arrington asks , “Amateur Hour Over At Twitter?” Ouch! Blaine, I feel for you. People expect and are pretty tolerant of a few bugs, but the problems at Twitter have been going on for long enough that it’s clear there were deep-seated architectural flaws that were not going away very soon.
Twitter is taking the right steps–they’ve got a new VP of Engineering and Ops as well as two new scaling experts. Cook, rightly or wrongly is firmly under the bus. What follows next is important. What can we learn from this? First, Twitter is just the latest example of an important service that has all the ingredients for success except for the ability to scale properly. I gave up for the last time on Technorati not long ago for similar reasons. And then one day my Authority dropped almost 100 points.
Eventually, I stayed away long enough, that it was time to log in again. Non-functional Architectural Woes. Bryan Wheeler, Director Platform Development at msnbc.com “Udi Dahan is the real deal. We brought him on site to give our development staff the 5-day “Advanced Distributed System Design” training. The course profoundly changed our understanding and approach to SOA and distributed systems. Consider some of the evidence: 1. Months later, developers still make allusions to concepts learned in the course nearly every day 2. One of our developers went home and made her husband (a developer at another company) sign up for the course at a subsequent date/venue 3.
Based on what we learned, we’ve made constant improvements to our architecture that have helped us to adapt to our ever changing business domain at scale and speed If you have the opportunity to receive the training, you will make a substantial paradigm shift. If I were to do the whole thing over again, I’d start the week by playing the clip from the Matrix where Morpheus offers Neo the choice between the red and blue pills. Scott C. How do you define software architecture?
Every software system has an architecture, but not every software architecture is defined. While there is structure to most software systems, sometimes that structure has been explicitly thought about and sometimes it isn't. This is what can make a difference to whether a system works and how it's received by the stakeholders. We have a lot of content on the site about defining software architectures.
Here is some of it. Where do you start? One of the hardest things about software development is being asked to come up with a design when all you're given is a set of requirements and a blank sheet of paper. Start with the big picture One of the hardest things about the software architecture role is being asked to come up with a software architecture when all you're given is a set of requirements and a blank piece of paper. Software architecture is a platform for conversation You don't need a UML tool Defining architecture Dealing with non-functional requirements Operational aspects.
Architectural Options for Asynchronous Workflow. Duncan Mackenzie Microsoft Developer Network December 2001 Summary: This article describes the benefits of asynchronous processing and discusses three possible ways to implement this type of workflow within your own systems. (21 printed pages) Contents IntroductionBenefits of Asynchronous Processing Faster Response Time Load Balancing Fault Tolerance Intermittently Connected SystemsIssues in Asynchronous Systems Notification or Polling for Status Time-out Handling Compensating LogicImplementation Strategy Build Your Own Workflow with SQL Server Use .NET and MSMQ to Handle Workflow Let BizTalk Handle Workflow for You Comparing Your OptionsConclusion Introduction Many processes that occur as part of a line-of-business application are not executed instantaneously.
Instead, relatively long-running processes, whether they take ten seconds or ten days, should be disconnected from your application and run asynchronously. Benefits of Asynchronous Processing Figure 1. Faster Response Time Figure 2.