Contest :: Re-Engineering a system. Need Advice. Earn $1000

Discussions

Performance and scalability: Contest :: Re-Engineering a system. Need Advice. Earn $1000

  1. Good evening everyone!

    Best answer gets a gift check for $1000.00.

    Post your answers or send email to contest at kimolos dot tv
    ------------------------------------------------------
    Current System
    --------------
    3-Tier:
      1.IIS Webserver (JSP)
      2.Sybase EA AppServer v3.6.1 (Powerbuilder Components)
      with OCI connection to database)
      3.Oracle 8.1.7
    Issues/Facts:
    1.The system needs to support 200+ concurrent users at any given second. It supports only 10.
    2.Fact:The server doesn't cache JSPs and servlets, which
      caused it to lag behind.
    3.Fact:All the SQL are in the PBL components as Prepared
      Statements
    4.Setting up a cluster with EA has been a nightmare. So insted we have 6 indiviual silos. i.e. each of the 6 webservers connects to unique app server which connects to a common database. Extremely inefficient.
    5. Fact: Database transactions involve 90% selects and 10% inserts/updates
    6. Fact: The business logic is fairly complex but the logic is applied to only a small set of data and executes quickly.


    Given the above we are planning to reengineer the system and need recommendations on best practices i.e.
    1. Stored procs vs EJB
    2. Which App server ( I am leaning towars weblogic) and
       which version?
    3. Development/Deployment tool
    4. If for example we go with WL should we consider their
       Webserver instead of IIS 5.0. If so what are the
       advantages/disatvantages
    5. Should the JSP's be at the Application server level vs
       webserver
    6. Fact:All our components currently are stateless
       sessions.
    7. Fact: We will start off with 3+ app servers in our
       cluster


    I hope I have not misssed anything important.

    Thank you and god bless
    Kinny



  2. I would suggest the following.

    OrionServer, (orionserver.com)
    Struts for mvc (JSP/servlet).
    javakarta Ant for build.
    IBM JDK 1.3 for Windows( very fast).


    Orion is simple to install, great to develop with. Costs 1500.00/cpu. Once you develop the app, and if you think it can not handle the load, then buy one of the others (WLS,WAS,SilverStream,etc.). If session beans only, I believe orion should be fine. Supports clustering.

    Good luck,
    Jeff
  3. 1. Stored procs vs EJB


    This is not a black/white question. For straight reads of data (giant lists of tabular data), using stored procs and letting the database itself handle your locking can increase your performance.

    That said, EJB gives you many caching benefits in a distributed envirnment. I would guess from what you describe that such large amounts of data could be called from Stateless Session Beans using Stored Procs called through nicely abstracted Data Access Objects and Factory classes. Your app servers can then handle the pooling of connection and EJB resources and increase scalability.

    Entity Beans can be used to effectively cache read-only or read-rarely entity data where large maps of objects aren't required (so cases where you have one entity read at a time -> account details display, rather than a list of all accounts, for example). For handling transactions Entities are very useful.


    >> 2. Which App server ( I am leaning towars weblogic) and which version?

    Version 6.1 or whatever is the latest when you make your purchase...I think you can get development licenses for free? Weblogic is the defacto standard, hard to get fired for buying BEA, as they say. Orion is capable, as mentioned, and cheaper to. Code to the standard and you should remain quite portable.


    >> 3. Development/Deployment tool

    Depends on your choice of App Server. Probably the most tightly integrated with you App Server is a good bet. Personally I use UltraEdit, NetBeans and a collection of Open Source tools (JUnit, XDoclet, Ant).


    >> 4. If for example we go with WL should we consider their
       Webserver instead of IIS 5.0. If so what are the
       advantages/disatvantages

    You would probably gain by using a more tightly coupled webserver. For static content such as images, Apache or IIS can be used to deliver out of a cluster. QUite a common approach.

    >> 5. Should the JSP's be at the Application server level vs webserver

    In my work with JBoss and there are advantages to be gained from running the JSPs in the App Server. The overhead is reduced because the JSP run in the same JVM as the App Server. It can also reduce the complexity of clustering as well. However, it can be dependent on your security model. And for clustering, separating the physical presentation from busienss layers can be beneficial. Depends on the clustering model provided by your app server.


    >> 6. Fact:All our components currently are stateless
       sessions.

    Good work. I come from a COM/MTS background and this is precisely the model used. I think there are certain advantages to the management of Stateless components in the middle tier and Microsoft swear by it for scalability. There are definitely ways of developing in EJB with this model, but with the addition of some judiciously used Stateful components (both Session and Entity) you can gain greatly.



  4. hi,
    pl see my comment below:

    1. Stored procs vs EJB
    Performance wise, SP is superior than EJB since the database operation occurs in the database server.
    However, it's not portable. if u move into other db later, u need to rewrite ur SPs :-(

    2. Which App server ( I am leaning towars weblogic) and
       which version?
    i;ve not used other app servers except WLS. Seesm to be stable.

    For development, i recommend using JBoss. i've successfully integrated JBoss into VAJ Enterprise edition 3.5. it's pretty neat, u can step thru ur EJBs, JMS code etc. i don't believe WebLogic (ver 6.0 & above) can do that.

    3. Development/Deployment tool
    See 2 above. VAJ is bulky but it's a good IDE. u need version-control (PVCS etc), load testing tool (LoadRunner etc), profiling tool (JProbe, OptimizeIt). Of course, u need Ant !

    4. If for example we go with WL should we consider their
       Webserver instead of IIS 5.0. If so what are the
       advantages/disatvantages
    How abt NES ? Using the proxy, all servlet/JSP request will be 'forwarded' from NES to the app server. in this way, u have the web-server to handle all the web-related request (static content), and all your application logic in ur app server. Scalable solution.

    IIS, i'm a bit worried abt its vulnerability. Are u not scared of Code Red, NIMDA ??

    5. Should the JSP's be at the Application server level vs
       webserver
    No question abt it, it should be at the app server. After all, JSP is compiled into Servlet. No reason to hv JSP in web-server and servlet in app server.

    A few other pts:
    Since 90% of ur db operation are query, i would expect u to use a lots of SLSB. EB is slow. Make sure all the SQLs are optimized by the DBA.

    if i'm not wrong, i believe WL provides Servlet/JSp caching. if u are using HTTPSession for session tracking, try to store very little data in it. Instead, store a key in the session obj and pts it to ur beans/db for the actual data.

    alex