Re: DIM'ing data structures for 10,000 sessions for state web serving -

Aaaron wrote:
<i>It seems this would immediately put a limitation on the framework being used for public purposes because it would be limited by the RPG language vs. being limited by processing power (you can buy more processing power, but you can't buy more RPG DIM element entries). One could argue that 10,000 users is a lot, but in my mind that number could be eaten up pretty fast based on current RPG customers using this framework to take online orders and such.</i>


I agree, this is a fundamental question, and subsequent decision that needs to be made, Aaron. Do we take full advantage of i5/OS and ILE to go beyond the same ol' same ol', or instead limit ourselves to the same ol' that everyone else can do?

If we use any aspect of the iseries capability, then we should go for it and use it all to go beyond. There might be a philosophy of just use as little as possible, such as calling RPG programs from Java or PHP, with the idea that the RPG could be rewritten into another language if moved to another system, but we're not going to produce something superior by staying lowest common denominator as much as possible.

My goal is to exceed the norm with iseries i5/OS and ILE capability. Yes, that's iseries only, but everyone else has their "alleged" generic solutions, and if that's the best then the iseries will run it, if it's even close to actually being generic.

But a ton of solutions are being developed in .NET/.ASP for IIS under Windows, they utilize every aspect of their Windows environment to produce the optimal solution, and you don't see them sweating over whether it works under i5/OS or AIX or Linux. Because it doesn't, it's a proprietary solution.

But more importantly, to the point of session users and the data structre dimensioning scheme, the following:

1. Dimensiong data structures is the easy way to do this and explain it, but in a large and complex environment I would provide in the code an alloc of memory for each of the data structures for a session and access them with basing pointers. I wouldn't even deallocate the memory, just build up the pool as needed for concurrent sessions. This would be equivalent to dynamic dimensioning.

2. Data structure indexes can go to 32K. I set 10,000 as an example of an ambitious goal of running a major web app system from one iseries, which given optimal use of RPG and dataq servers as I describe with state maintained I think is possible. I would give something like a 20% overhead factor for web page processing versus 5250 processing and say that the concurrent users capable of being served would be 20% less than interactive session capability for a given box. That's just off the top of my head, no benchmarks. It could be more of an overhead than that.

3. In a robust environment where we're talking about of 10,000 or more logged in users of a business system, e-commerce, and the like, you start getting into a server farm of iseries. But the if the session maintains state, then session web pages have to be directed to the iseries where that user is logged in. Now here's where it gets interesting.

The standard wisdom is that stateless web serving allows any web page to go to any farm web server in any mixture from different sessions. But then the state has to be built up and restored, and that's the red herring. A database server has to have the state stored in it, and you have to get to the right database server, unless you can keep multiple database servers synched in real time. Which we need to do anyway for high availability, but there's a differnce between high availability synching for failover and keeping multiple production systems in synch, such as two or n way synching between the databases to start with instead of one way to the high availability backup server.

Less than acceptable ways of doing this store state in a cookie and/or hidden fields in the web page, and with encrypted data will get a lot of people by, but I think if anyone imagined our 5250 sessions and programs through the years storing all the program variables, authorities, and everything else we have in an interactive session in the 5250 binary stream which carries it around so that it could "go to any AS/400" in a server farm, we would not be in any way, shape, or form the reliable, secure, and nearly bulletproof system that we are, I think most anyone in the iseries community would agree with that. And that's what using cookies and hidden fields is doing.

So rather than store state in a central database that all the farm servers access to restore state for a given web page, the session communications in a very large complex environment in my scheme would be directed to the farm iseries the session is logged into, so the routing software has to have a level more intelligence than round robining to next farm server. But then state is there and appropriate database servers are just accessed to retrieve business data as we do in normal programming.

In reality, a complex environment would have more than one business system, and part of that smart routing would be routing to appropriate iseries running the system rather than all iseries running every business system and users logging in on random ones, etc.

That's just from one of your comments, Aaron. But these are good questions for us to come up with an optimal solution, as you suggest.

rd


As an Amazon Associate we earn from qualifying purchases.

This thread ...

Follow-Ups:
Replies:

Follow On AppleNews
Return to Archive home page | Return to MIDRANGE.COM home page

This mailing list archive is Copyright 1997-2024 by midrange.com and David Gibbs as a compilation work. Use of the archive is restricted to research of a business or technical nature. Any other uses are prohibited. Full details are available on our policy page. If you have questions about this, please contact [javascript protected email address].

Operating expenses for this site are earned using the Amazon Associate program and Google Adsense.