Do You Really Need A Distributed Architecture?
Alik here.
Does the question sound rhetoric to you? Do you think the answer is “Yes” by default these days?
Think twice. Ask yourself the questions below. You may change your mind at the end.
Performance
Is performance important to you and your customers? Consider the following performance threats specifically applicable to distributed architectures.
- Network latency as a result of multiple round trips to perform a single operation.
- High network utilization by sending more data than is required.
- Increased serialization overhead.
- Performance costs as a result of security checks.
Security
Care to build security aware systems? Care to protect your and your customers mission critical assets? Consider the following security threats and challenges specifically related to distributed architectures.
- Parameters manipulation.
- Network eavesdropping and information disclosure.
- Credential theft.
- Data tampering.
- Unauthorized access to administration interfaces.
- Denial of service.
- Identity flow across physical tiers.
- Unauthorized access due to lack of network protection.
Operations
Care to respond to production incidents quickly? Want to keep up with tight SLA's? Have a small talk with your production IT guys who are supposed to support your system in production. I am sure they will ask you the following questions. Do you have a good answers?
- What do I check when end users ask me the following questions?
- Why it is not working?
- Why it works so slow?
- Why I am not allowed to do this operation?
- How do I configure this?
- What alerts your system raises when it fails?
- Where all alerts are sent?
- How do I roll back the version?
- What should I do when I see specific alert?
- How do I distribute patches for your system?
- How do I know what is the source of the incident?
- How do I get detailed information regarding the incident?
- How do I recognizes the trends that usually lead to incident?
- How do I back up the configuration?
Benefits
"Service-oriented architecture is, first and foremost, a means of attaining greater business agility from existing IT investments. SOA-based solutions connect systems and thereby automate previously manual information-transfer processes whether the goal is to develop new applications; to connect systems, workgroups, or geographically distributed subsidiaries; or to collaborate with trading partners."
Are you building next Google or Flickr or just building departmental HR system? Do you really achieve the benefits creating your distributed architecture? Do you really automate the process or add more operational costs?
Case studies
- Google Architecture
- Amazon Architecture
- YouTube Architecture
- Flickr Architecture
- Wikipedia's Site Internals, Configuration, Code Examples and Management Issues
More questions and answers
- Design For Operations [DFO] – Problems And Solution Frame
- Chapter 5 – Architecture and Design Review for Security
- Chapter 4 — Architecture and Design Review of a .NET Application for Performance and Scalability
Comments
- Anonymous
February 14, 2008
PingBack from http://msdnrss.thecoderblogs.com/2008/02/14/do-you-really-need-a-distributed-architecture/ - Anonymous
February 15, 2008
You've been kicked (a good thing) - Trackback from DotNetKicks.com - Anonymous
February 16, 2008
So, are you suggesting people NOT architect for distribution and rewrite the system when load becomes such that it isn't cost effective to scale it up any more? - Anonymous
February 16, 2008
Very nice article! I have a question for you... Would you want to use an SOA-based solution for the purpose of future scalability?For example, we have built a service which is an endpoint for scheduling data. Currently the only consumer is our web application. The consumer could one day grow to include Windows apps or Silverlight apps.Your thoughts?Thanks! - Anonymous
February 17, 2008
that was a great articlemost developers these days talk alot abt SOA like it's flawless!a kick from me :) - Anonymous
March 18, 2008
Dearest commentators!Let me first express my deepest sorrow about super late response! Usually am very fast on replies – less than 24 hours, something really went wrong here.@Udi DahanThat is NOT what I suggest. I do suggest planning for SOA and other distributed architectures. What I suggest is asking questions I mentioned in this post. Asking these questions will help you identify what you know and what you do not know. If you are not asking these questions you are in the position where you do not know what you do not know. That is bad situation to be in. Expect non-pleasant surprises. A lot of. From your end users complaining on bad perf, IT folks who do not know how to handle incidents, security stuff, and few more. If you are NOT asking these questions you are more likely to rewrite your SOA architecture-based app either.@Denny FerrassolyI would. You describe very valid scenario for “SOA” app. I like calling it distributed app vs SOA. Just do not forget that your customers are the most important part. SOA customers are more IT guys, developers, and architects. Want to satisfy them? Ask those questions when you build your next SOA app@Fady AnwarGreat to hear you liked it! Thanks for the KICK! - Anonymous
September 08, 2008
Es lo que me ha estado diciendo el servidor de pruebas. Esa semana la hemos dedicado a probar toda la - Anonymous
February 22, 2009
No witty opening comment this week...sorry to disappoint. :) General Improve .Net Performance Effectively & Efficiently : Microsoft's ACE team, who are are responsible for application performance, security, and privacy, has a great post about improving