Beefy Boxes and Bandwidth Generously Provided by pair Networks
P is for Practical
 
PerlMonks  

Re: Design question: handling hundreds of state machines in a Web context

by BrowserUk (Pope)
on Jan 02, 2013 at 19:21 UTC ( #1011337=note: print w/ replies, xml ) Need Help??


in reply to Design question: handling hundreds of state machines in a Web context

Our primary concerns are performance and accuracy.

The 'state' of any individual user is simply their ID, their current workflow ID, and the step they are currently on.

A workflow is its ID, and (making a few assumptions), a list of templates representing the appropriate form for each step.

Each of these can be stored in a table index by ID. When a user logs in, requesting two such small pieces of data directly by their promary index should be absolutely no problem for any RDBMS worthy of the name; even with 1000s of concurrent users. (Who will spend most of their logged on time staring at the screen or typing, the load on the DB will be minimal.) So performance should be no problem.

As for accuracy, once the user clicks submit on any given step, there are a few possibilities:

  1. The transmission gets lost in transit.

    Assuming you aren't using too much client side trickery, the browser will time out and the user should be able to click the back button and attempt to re-submit.

    The user expectations of reliability should not be high if they fail to sucessfully submit as the intervening internet is not your responsibility.

  2. The submit completes, but your webserver crashes before the state is saved.

    Use a good webserver and test your cgis thoroughly.

  3. The webserver extracts the formdata and issues the DB update, but the DB server crashes.

    Use a reliable DB server.

  4. The update happens but is subsequently lost due DB server crash or disk failure.

    This is bread and butter DB stuff. Use a reliable RDBMS.

In essence, on the basis of your description, this sounds very similar -- in terms of data flows -- to any multi-step ordering/shopping basket/booking process already actioned on a million websites. Ie. nothing extraordinary.

Use reliable tools and don't get too complicated with either your client-side or server side processing.


With the rise and rise of 'Social' network sites: 'Computers are making people easier to use everyday'
Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
"Science is about questioning the status quo. Questioning authority".
In the absence of evidence, opinion is indistinguishable from prejudice.


Comment on Re: Design question: handling hundreds of state machines in a Web context

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://1011337]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others perusing the Monastery: (10)
As of 2014-12-28 05:31 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    Is guessing a good strategy for surviving in the IT business?





    Results (178 votes), past polls