views:

89

answers:

3

I need to choose right architecture model for my solution(client-server, web application, web services). Can you please tell me what questions I must answer to make good decision? thanks

+6  A: 

No. Sorry to be blunt, but if you don't know the questions to ask, then you won't know what to do with the answers either. Suggest you engage an experienced architect.

Less flippantly, you need to consider a whole raft of factors - number and location of users, the types of operations they'll be performing, their expectations on performance; size, frequency of access to and frequency of updates to underlying data; technology constraints imposed by the environment in the target organisation; security requirements, both client and regulatory etc. etc. It's a great big area.

David M
@David +1 : for the bluntness :) @lama-power : blunt but right. What you want to design is a complex system. My hint is to begin with a simple to understand, well documented, well established framework / architecture, so you can have experienced guys to answer your questions in forums along your long and hard way toward the ultimate goal of being an experienced software architect :)
neuro
@David -1 for the bluntness - it just seems unnecessary to be so harsh – many of us (perhaps not you though) have been thrown in at the deep end at some point in our career, and money for external (or internal) help isn’t always available. SO seems a perfectly reasonable place to ask for a helping hand.
stupid-phil
@phil - thanks for leaving the comment to go with the -1, many don't seem to have the courtesy to do this. Points taken, but we'll have to agree to differ on whether it was **unnecessarily** harsh.
David M
@David - cool - 'shakes hand' ;-)
stupid-phil
+3  A: 

Here are some of the questions a software architect has to answer when choosing an architecture. David covered some other important areas, like security and regulations.

  • What are the sources of my data (information)?

  • What data (information) do I need to present, display, pass to other applications?

  • Is my application CPU-intensive (unlikely) or IO-intensive (probably).

  • How will I deploy changes to my application(s)?

  • Who (how many) people have the skills and knowledge to develop and support my application?

  • Which (how many, how stable) companies develop and support the technology that supports my application?

  • Will this application bring my company more money than it costs to develop and support my application?

  • Can I explain my application to investors in 100 words or less (the elevator pitch)?

Good luck.

Gilbert Le Blanc
+3  A: 

First of all I'd advise you take some time to do some reading. There are some excellent articles on wikipedia that approach architectural subjects in a non-proprietory way. E.G. :

http://en.wikipedia.org/wiki/Service-oriented_architecture

http://en.wikipedia.org/wiki/Web_service

http://en.wikipedia.org/wiki/Client_server

(plus loads more)

Most importantly (IMO) think about tiers and layers. Be very careful about whether you need to start by going down the N-Tier/SOA route. It can add a lot of initial work, that you may be able to avoid if you start with a client-server approach. As long as you think about the layers you build in to your design, then moving to a N-Tier approach later on need not be painful.

stupid-phil
This is only useful if you understand the requirements your architecture needs to support. Picking an architecture in isolation based solely on arbitrary technical merits is NOT what software architecture is about.
Paolo
@Paulo - That's not what I'm suggesting he do - but if it reads like that then fair comment. On the other hand, he doesn't say that he doesn't understand the requirements - just that he needs choose the right architecture - why not give him the benefit of your experience...
stupid-phil