Enterprize Application Success Statistics/Stories

Enterprize Application Success Statistics/Stories

Old forum URL: forums.lhotka.net/forums/t/6683.aspx


strick9 posted on Thursday, March 26, 2009

Normal 0 false false false EN-US X-NONE X-NONE MicrosoftInternetExplorer4 /* Style Definitions */ table.MsoNormalTable {mso-style-name:"Table Normal"; mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-noshow:yes; mso-style-priority:99; mso-style-qformat:yes; mso-style-parent:""; mso-padding-alt:0in 5.4pt 0in 5.4pt; mso-para-margin-top:0in; mso-para-margin-right:0in; mso-para-margin-bottom:10.0pt; mso-para-margin-left:0in; line-height:115%; mso-pagination:widow-orphan; font-size:11.0pt; font-family:"Calibri","sans-serif"; mso-ascii-font-family:Calibri; mso-ascii-theme-font:minor-latin; mso-hansi-font-family:Calibri; mso-hansi-theme-font:minor-latin;}

First of all I would like to say it is good to be back.  I have been on non-CSLA projects for a while now and a new opportunity may let me continue where I left off.  This is going to start off long-winded but I wanted to frame my need the best I could.

At a high level, this new opportunity was begun (before I started here) with the intention to be Object Oriented, have flexibility in deployment options and be maintainable.  The team came to these goals after working on legacy systems that, well, were not.  The promises of Object Oriented design/programming and CSLA lead them here to the path we have been on, however, underlying philosophies and practices of team individuals were not supportive of best practice implementation of Object Oriented coding and CSLA.  Most of the remaining team now admit that the aspects of maintainability / performance trade-offs were ignored.  So that is the summary of our history to arrive at the current dilemma…

The application, which performed decently in test and QA environments, now performs very poorly with a distant production database server whether we physically separate our code tiers or not.  There are some things we know where we are at fault; multi-functional user stories turned into overly complex business objects and forms (code reuse won over lightweight objects), an only loose grasp of data transfer methods and their performance differences, and a deep and hierarchical object graph that accommodates a diverse set of behaviors.  Even with all of that in our collective consciousness we are asking ourselves, "Has anyone seen an enterprise sized Object Oriented/CSLA appliaction that performs well?"

So, finally, I come to our question(s) for this community to help us move past the “Can OO*/CSLA... ?” question.   Who has had success with the development, deployment and maintenance of an enterprise sized application?  What are some usage statistics for your application?  Some examples of what we’re looking for…

·         The industry your application serves

·         Size of the development team

·         The number of concurrent/total users

·         Size of database

·         Method of data transfer (All-In-One BO (like PT application) => Database OR DTO's, etc)

·         Describe most complex object graph (in general terms of course) and it's perfomance issues/solutions

·         Anything else that would loosely quantify a size:success ratio of your application (I know, this is a fuzzy discussion all on its own). 

Looking back over this I realize I am asking a-lot from you.  Hopefully some of you will see this as a help the community as well by getting together a list of success stories and comparing each others usage demands. 

Thanks in Advance,

Brian Strickland

strick9 replied on Thursday, March 26, 2009

Sorry for the text at the top of the post.

Brian

rfcdejong replied on Thursday, March 26, 2009

Well, this isn't an succes story yet. But i hope it'll be in my situation.

--- NO SUCCESS STORY YET!! ---

We have high requirements.
Just fast feedback to your question(s).

- The industry your application serves
Insurrance crm / administration / advice (business to business)

- Size of the development team
At the moment just me and 2 others building the application framework and sample applications. Will go from 30 till 40 code monkeys when our application framework layer has passed it first stage ;)

- The number of concurrent/total users
That depends, we currently have a licence based legacy application running which is going to be replaced piece by piece. As example we have an customer who has requirements for 1000+ concurrent users.

- Size of the database
Each customer has over 1200 tables. For the legacy delphi application it's insane large. Keeping history of all changes over a root contract table with 300.000 records it are millions and millions of records. That customer had a total database size of 23 GB.

- Method of data transfer
From BO to DTO using the Objectfactory pattern where the DTO to DB is handled by an ORM.

- Describe most complex object graph
I expect that will be financial objects and perhaps contract deferral. No issues yet, since i wrote above, no success story yet.

- Anything else..
I wish we were further and could publish more information.

strick9 replied on Thursday, March 26, 2009

Thanks for chiming in.  This looks ambitious, good luck and thanks for the info.

Brian

whelzer replied on Thursday, March 26, 2009

Could/hopefully be an interesting thread:


We are fairly new the CSLA and .Net in fact,  around Aug 08 we enagaged Dunn Traning for a 3 day course and we have not looked back since.  We are taking a large VB 6 into the modern world  So far CSLA has been a huge success.

   - The industry your application serves
Banking- current app is system which handles the Trading, Settlement and Other associated Processing of various financial instruments, eg Options, Furtures, Swaps etc.

- Size of the development team
4 developers

- The number of concurrent/total users
Max 35 - we develop alongside our users, we turn ideas and bugs around very, very quickly releasing into UAT many times a day.

- Size of the database
Approx 500 tables

- Method of data transfer
BO mostly, dto where it is deemed appropriate.

- Describe most complex object graph
So far its our Custodian model (we have more complex ones to come).

Custodian  (contains)

           Branches  --> Branch (contains)

                             Markets -->  Market (contains)

                                       Accounts --> Account  (contains)

                                                     SSIs --> SSI

                                                     Clients --> Client  (contains)

                                                                 Nostros --> Nostro

We maintain this lot on a single (albeit complex) form (Windows).  It works great!

A lot of inspiration for this was taken from Rockys deep data sample.


- Anything else..
All above done in 3.0.4,  Looking to upgrade to 3.6 sooner rather than later.



strick9 replied on Friday, March 27, 2009

Great, thanks.

The we are looking at loading down the deep data example to do some "stress tests" on the different configurations.

Come back and let us know how the performance on those complex objects go.

Brian

Fintanv replied on Friday, March 27, 2009

·         The industry your application serves

Semi-conductor fabrication

·         Size of the development team

2 to 4

·         The number of concurrent/total users

~30

·         Size of database

multiple gig

·         Method of data transfer (All-In-One BO (like PT application) => Database OR DTO's, etc)

Stored procs -> BO's

·         Describe most complex object graph (in general terms of course) and it's perfomance issues/solutions

Multiple depth (arbitrary, using recursive objects) each with several collections of children.  Each child in a collection could have several hundred properties (time series data).

·         Anything else that would loosely quantify a size:success ratio of your application (I know, this is a fuzzy discussion all on its own). 

App was written with CSLA 1.1 (customized) and upgraded to 1.4 by the time I left the company.  It is still in use and a central tool for the company (going on 5+ years now).

The same bo's used for the application, were used to implements web services that allowed both data pull and push.

strick9 replied on Friday, March 27, 2009

You said something that interested me.  Describing your complex object, you said you had "recursive objects".  Have these ever been a performance challenge?

Thanks,
Brian

Fintanv replied on Monday, March 30, 2009

As I mentioned this was using older 1.x CSLA, and I have not been on that project for over a year.  However that said, we had pretty good performance with this model.  The data model was based on a tree where you had a single root object that could fan out to one or more child nodes.  The depth was between 5 and 7 nodes deep.  From memory the object model was something like:

Root Node

   Child Node collection

      Child Node

      ...

      Child Node

         Child Node collection

            Child Node

            Child Node

            ...

Additionally each child had a time series for allocations, which was a dynamic class with up to 150 time based properties (used a property bag, ITypedList, ICustomTypeDescriptor behind the scenes).  We did some tricks to group changes of multiple time points with the same allocation value so that database updates were quick (this is where we found most of the performance issues).

strick9:
You said something that interested me.  Describing your complex object, you said you had "recursive objects".  Have these ever been a performance challenge?

Thanks,
Brian

shawndewet replied on Monday, March 30, 2009

·         The industry your application serves

Networking Products Distribution

·         Size of the development team

5

·         The number of concurrent/total users

40 / 100; Windows Forms Clients running on workstations for local users and via Citrix for remote users.

·         Size of database

~5GB

·         Method of data transfer (All-In-One BO (like PT application) => Database OR DTO's, etc)

All-In-One BO

·         Describe most complex object graph (in general terms of course) and it's perfomance issues/solutions

SalesOrder --> SalesOrderLine -->PricingCondition.  No performance issues.  Though overall we make extensive use of lazy loading of children when dealing with single parent objects; and when dealing with collections of parents, we use eager loading to load children.

·         Anything else that would loosely quantify a size:success ratio of your application (I know, this is a fuzzy discussion all on its own). 

From day one of go-live the client has been processing on average 500 orders per day, with an average of 20 detail lines (ranging from 1 detail line to a couple hundred).

shawndewet replied on Monday, March 30, 2009

·         The industry your application serves

Industrial Rolling Stock Manufacture

·         Size of the development team

4

·         The number of concurrent/total users

30 / 80; Combination of Windows Forms Clienta and Intranet Web Client.

·         Size of database

~5GB

·         Method of data transfer (All-In-One BO (like PT application) => Database OR DTO's, etc)

All-In-One BO

·         Describe most complex object graph (in general terms of course) and it's perfomance issues/solutions

A job (with material and labour allocations) can contain any number of child jobs; each child job (with its own material and labour allocations) can contain any number of child jobs, going down up to 15 levels.  Though overall we make extensive use of lazy loading of children when dealing with single parent objects; and when dealing with collections of parents, we use eager loading to load children.

·         Anything else that would loosely quantify a size:success ratio of your application (I know, this is a fuzzy discussion all on its own). 

The application was developed at a time when the client's business was slow (processing around a 1000 jobs per day) around 5 years ago .  This has since quadrupled and the app is taking it in its stride!  Even in the beginning we did struggle with some some long-running processes timing out on the web client, resulting in all long-running processes (those in excess of a minute) being moved to a windows client.

Marjon1 replied on Tuesday, March 31, 2009

Our application is being developed over several stages, it is eventually going to become a complete CRM, SFA and Accounting application but so far is limited to CRM & SFA.

·         The industry your application serves
Generic CRM & SFA application, currently being used primarily in-house;
waiting for customer base to grow.

·         Size of the development team
2-4 on this specific project at any time

·         The number of concurrent/total users
20 users so far, but with expectations to scale to over 100.

·         Size of database
Current database size is about 5GB and growing daily.

·         Method of data transfer (All-In-One BO (like PT application) => Database OR DTO's, etc)
All-In-One BO

·         Describe most complex object graph (in general terms of course) and it's perfomance issues/solutions
Haven't gotten any really complex objects at the moment, but are expecting so when we get into the financials

·         Anything else that would loosely quantify a size:success ratio of your application (I know, this is a fuzzy discussion all on its own). 

CSLA has become the standard for all new development within our organisation, because it is working so well for us. We currently have over 5 applications developed using it in some form or another, with many more to come! Couldn't imagine doing some of the things we have been able to do or want to do (i.e. application server scaling) without CSLA.

Copyright (c) Marimer LLC