Watch, Follow, &
Connect with Us

For forums, blogs and more please visit our
Developer Tools Community.


Welcome, Guest
Guest Settings
Help

Thread: Designing a server software for many users



Permlink Replies: 30 - Last Post: Nov 6, 2014 8:07 AM Last Post By: Arnaud BOUCHEZ
Lior Ilan

Posts: 35
Registered: 6/29/00
Designing a server software for many users
Click to report abuse...   Click to reply to this thread Reply
  Posted: Oct 22, 2014 5:24 AM
Which Software and tools would you recommend for the creation of an ERP
server that will be run on the cloud ?
That ERP server should be able to serve tens of thousands of concurrent
user.
The users will use it as a SAAS on computers and mobile devices.
The software will generate invoices and journal entries.
If I understand correctly, Delphi multi-tier technology functions well only
up to hundreds of users.
Should I use Node.JS, Java EE or any other software ?

As for a database, I first thought about using Big data such as MongoDB or
cassandra , but I need good transaction support.
I am considering the expensive Oracle or the free Postgre.
Any other suggestions ?
Thanks in advance.
Robert Triest

Posts: 687
Registered: 3/24/05
Re: Designing a server software for many users
Click to report abuse...   Click to reply to this thread Reply
  Posted: Oct 22, 2014 6:12 AM   in response to: Lior Ilan in response to: Lior Ilan
If I understand correctly, Delphi multi-tier technology functions well only
up to hundreds of users.
Please read this new article "DataSnap Performance Test" based on XE6-7

Post by Original tester:
http://www.delphifeeds.com/go/s/120435

Link to Original Spanish Article:
http://datasnapperformance.wordpress.com/2014/10/15/datasnap-performance-test/

Link to Google Translate to English:
https://translate.google.com/translate?sl=auto&tl=en&js=y&prev=_t&hl=en&ie=UTF-8&u=http%3A%2F%2Fdatasnapperformance.wordpress.com%2F2014%2F10%2F15%2Fdatasnap-performance-test%2F&edit-text=
Eduardo Elias

Posts: 319
Registered: 9/20/12
Re: Designing a server software for many users
Click to report abuse...   Click to reply to this thread Reply
  Posted: Oct 22, 2014 6:29 AM   in response to: Lior Ilan in response to: Lior Ilan
Take a look on mORMot

I believe you will get all you need in one piece of open source software
for delphi. They even have Big table implemented, very well documented and
concerned on speed in everything.

Delphi built in tools are not able to handle such level of concurrency. I
know companies that got in trouble using them for something more and hundred
connections.

The problem is not Delphi itself.

Go to the Synopse web site http://synopse.info/fossil/wiki/Synopse+OpenSource

and put your questions on the mORMot forum, with details about your project
and they will give you the right direction of something and you will be happy.

Eduardo

Which Software and tools would you recommend for the creation of an
ERP
server that will be run on the cloud ?
That ERP server should be able to serve tens of thousands of
concurrent
user.
The users will use it as a SAAS on computers and mobile devices.
The software will generate invoices and journal entries.
If I understand correctly, Delphi multi-tier technology functions well
only
up to hundreds of users.
Should I use Node.JS, Java EE or any other software ?
As for a database, I first thought about using Big data such as
MongoDB or
cassandra , but I need good transaction support.
I am considering the expensive Oracle or the free Postgre.
Any other suggestions ?
Thanks in advance.
Robert Triest

Posts: 687
Registered: 3/24/05
Re: Designing a server software for many users
Click to report abuse...   Click to reply to this thread Reply
  Posted: Oct 22, 2014 7:16 AM   in response to: Eduardo Elias in response to: Eduardo Elias
Delphi built in tools are not able to handle such level of concurrency. I
know companies that got in trouble using them for something more and hundred
connections.

Look at the links I posted above. DataSnap has improved in XE6-7.
Eduardo Elias

Posts: 319
Registered: 9/20/12
Re: Designing a server software for many users
Click to report abuse...   Click to reply to this thread Reply
  Posted: Oct 22, 2014 7:42 AM   in response to: Robert Triest in response to: Robert Triest
surelly improved.

But does not means that is the right choice.

I would not go DataSnap for such high demand. There are other options.

I mentioned mORMot if he wants to stay in all delphi enviroment. This can
handle what he needs.

There is need to get right feedback from users about DataSnap before it can
be trusted. It always was said to be good solution, even when in few connections
caused trouble. Would you put your trust in a technology that was always
not trustful? not for a high demand like he needs.

Delphi built in tools are not able to handle such level of
concurrency. I know companies that got in trouble using them for
something more and hundred connections.
Look at the links I posted above. DataSnap has improved in XE6-7.
Arnaud BOUCHEZ

Posts: 143
Registered: 2/17/02
Re: Designing a server software for many users
Click to report abuse...   Click to reply to this thread Reply
  Posted: Oct 22, 2014 8:33 AM   in response to: Robert Triest in response to: Robert Triest
Robert Triest wrote:
Look at the links I posted above. DataSnap has improved in XE6-7.

Apart from performance and stability, mORMot offers:
- interface based services (like WCF);
- a simple but very fast ORM, which is natively JSON oriented;
- direct support of MongoDB in addition to most known SQL engines;
- MVC web applications with efficient Mustache templates;
- works with Delphi 6 up to XE7 (may be good for your code base);
- FPC / Linux support;
- Extensive documentation;
- Regression and performance tests are supplied;
- Open Source, with active support by the community.

AFAIK none of those features are available in DataSnap.
You would need to put some bricks from several vendors to do this, whereas mORMot has all you need in one code base.
Kyle Miller

Posts: 115
Registered: 10/4/99
Re: Designing a server software for many users
Click to report abuse...   Click to reply to this thread Reply
  Posted: Oct 22, 2014 9:46 AM   in response to: Arnaud BOUCHEZ in response to: Arnaud BOUCHEZ
On 10/22/2014 10:33 AM, Arnaud BOUCHEZ wrote:
Apart from performance and stability, mORMot offers:
- interface based services (like WCF);
- a simple but very fast ORM, which is natively JSON oriented;
- direct support of MongoDB in addition to most known SQL engines;
- MVC web applications with efficient Mustache templates;
- works with Delphi 6 up to XE7 (may be good for your code base);
- FPC / Linux support;
- Extensive documentation;
- Regression and performance tests are supplied;
- Open Source, with active support by the community.

AFAIK none of those features are available in DataSnap.
You would need to put some bricks from several vendors to do this, whereas mORMot has all you need in one code base.

Between the previously mentioned Datasnap performance testing article and this list,
color me impressed.

You say Linux support. Does that include servers, or are you speaking via client JSON?
Mormot web page says "Targeting Win32 and Win64 platforms for high-performance servers..."
Arnaud BOUCHEZ

Posts: 143
Registered: 2/17/02
Re: Designing a server software for many users
Click to report abuse...   Click to reply to this thread Reply
  Posted: Oct 22, 2014 2:16 PM   in response to: Kyle Miller in response to: Kyle Miller
Kyle Miller wrote:
Between the previously mentioned Datasnap performance testing article and this list,
color me impressed.

In fact, mORMot is optimized from performance from the ground up, without any dependency to identified bottlenecks like TDataSet or

You say Linux support. Does that include servers, or are you speaking via client JSON?
Mormot web page says "Targeting Win32 and Win64 platforms for high-performance servers..."

Client support works at 100% under Linux.

But Server support under Linux via FPC is on its way!
See http://synopse.info/forum/viewtopic.php?pid=13036#p13036

You can already retrieve the latest unstable version of the source code tree, and compile it with FPC 2.7.1.
I have CodeTyphon installed, for the debugging on Windows.
You need to have the Synapse library available (which is used for cross-platform HTTP process).

We have one big issue with FPC which prevents to use interface based services, so our SOA process.
See http://bugs.freepascal.org/view.php?id=26774
We just need the RTTI as available in Delphi 6, more than 12 years ago!
Sadly, the FPC team does not seem willing to fix it soon.
But the restful ORM works great, under Linux!

In the meanwhile, I will add Kylix/CrossKylix support.
In fact, Kylix as all the needed RTTI needed.
Rael Bauer

Posts: 228
Registered: 10/10/02
Re: Designing a server software for many users
Click to report abuse...   Click to reply to this thread Reply
  Posted: Oct 29, 2014 11:29 AM   in response to: Eduardo Elias in response to: Eduardo Elias
On 2014/10/22 03:29 PM, Eduardo Elias wrote:
The problem is not Delphi itself.

Which parts of Delphi have/cause the problem?

to Arnaud:
Why is mORMot more able to handle huge numbers compared to other delphi
solutions? (options have not been mentioned...)


Even if using mORMot, I imagine specific choices will need to be made to
use correct options/db.. etc...
Arnaud BOUCHEZ

Posts: 143
Registered: 2/17/02
Re: Designing a server software for many users
Click to report abuse...   Click to reply to this thread Reply
  Posted: Oct 29, 2014 12:19 PM   in response to: Rael Bauer in response to: Rael Bauer
Rael Bauer wrote:
Why is mORMot more able to handle huge numbers compared to other delphi
solutions? (options have not been mentioned...)

First of all, its HTTP server is event-based, as a very light layer over http.sys.
See http://datasnapperformance.wordpress.com/2014/10/16/datasnap-performance-test-en/
But this is not all. This benchmark was a simple "hello world". For real world solution, you need much more than that.

In fact, the whole mORMot architecture was client-server from the ground up.
It is not a local ORM to which you did add some remote access.
This is a REST server, exposed as an ORM/ODM (ORM for SQL DB, ODM for NoSQL).
WCF+EF or J2EE+Hibernate solutions are two bricks put together.
Only some startups do propose such native RESTful access today, AFAIK. As does our little mORMot.

For data process, it minimizes data marshalling, like memory allocation, or data conversion: everything is UTF-8 and JSON from the ground up.
It is truly multi-threaded AND event-based. So you benefit of event-based design (like node.js) BUT with multi-threading abilities, so is able to leverage all power of you multi-core servers.
A lot of code is shared around the modules: the same code and data structures are re-used for ORM, SOA, MVC, reporting, DB access.
Its DB access has been a LOT tuned: it supports an optimized batch mode for all SQL databases, allows simple but efficient caching, by-pass the whole DB.pas unit (and its slow TDataSet) - for instance the JSON returned to the clients is created directly from the low-level DB client buffers, with no translation to temporary variables nor string... All statements are prepared and cached, and it supports not only SQL engines, but NoSQL (e.g. there is a direct link to MongoDB).
When processing bulk data, it is faster to use mORMot ORM than a naive stored procedure, on Oracle, for instance: the ORM will use array DML, and optimized SQL, to achieve very highest possible performance.

Of course, you can do slow applications with mORMot - just delete an index created by the ORM for instance, and may get troubles.
But most of the time, you may be amazed about how it works.

It has high level structures for the ORM, like dynamic arrays or records, or even variants to store any data, including JSON-like documents - so a good old RDBMS is able to become a document-based database, just like MongoDB...
See http://blog.synopse.info/post/2014/05/07/MongoDB-mORMot-ORM-ODM
So coding productivity can be very high, once you are used to it.

Learning curve depends on your background.
If you come from a pure RAD approach, you would need to change your mind - see http://blog.synopse.info/post/2014/05/30/Software-Design%2C-Brook%2C-mORMot%2C-RAD%2C-SOLID-and-OOP
If you come from .Net/WCF or J2EE, you got all the concepts, and may be amazed by the potential of Delphi to implement them.
See also http://blog.synopse.info/post/2014/04/18/Introducing-mORMot-s-architecture-and-design-principles

As always, you would probably not find the right design by the first attempt.
You would have to refine your knowledge of your business, and the technology behing.

Even if using mORMot, I imagine specific choices will need to be made to
use correct options/db.. etc...

Yes, but such a framework may help you not to be tight on a DB solution.
You can start with one, and change later.

At first, what you need is to switch your mind from a RAD POV to a SOA approach.
SOA is mandatory for scaling. With some kind of micro-architecture perhaps - see http://blog.synopse.info/post/2014/10/25/MicroServices-SOA-mORMot
This is where designing a server software for many users would benefit.
You need to change your mind from vertical scaling (add more HW to scale), to horizontal scaling (split your data on multiple nodes, with several dedicated servers, per context).

Sounds like if lior ilan (as most Delphi developers I know, and even in the Java/.Net world) is still thinking in terms of RDBMS.
For instance, you have to be aware than NoSQL is no magic bullet.
You have to be aware that transactional process is not possible with most NoSQL engines - with the exception of graphs DB.
See http://blog.synopse.info/post/2014/02/28/Are-NoSQL-databases-ACID

IMHO this is where Domain Driven Design may help a lot.
You can modelize your data outside the classic relational view, and use data sharding / de-normalization of your data.
You should explicitly identify "bounded context", which should be able to expose services for a given purpose.
Then make those domain services, with proper "aggregate" persistence, on any DB backend.

You should better NOT start from the DB.
Start from your business logic, and your modelization expertise.
Then use the DB to store your modelized objects.
You should not focus on the implementation details, but focus on your business domain.
See http://blog.synopse.info/post/2014/01/04/Domain-Driven-Design%3A-part-1
Let the implementation details be handled by a framework, e.g. our little mORMot.

So all this is not about technology, but about modeling and architecture.
Rael Bauer

Posts: 228
Registered: 10/10/02
Re: Designing a server software for many users [Edit]
Click to report abuse...   Click to reply to this thread Reply
  Posted: Oct 29, 2014 1:31 PM   in response to: Arnaud BOUCHEZ in response to: Arnaud BOUCHEZ
Thanks for the detailed reply. It is interesting.
Arnaud BOUCHEZ

Posts: 143
Registered: 2/17/02
Re: Designing a server software for many users [Edit]
Click to report abuse...   Click to reply to this thread Reply
  Posted: Oct 29, 2014 1:54 PM   in response to: Rael Bauer in response to: Rael Bauer
Rael Bauer wrote:
Thanks for the detailed reply. It is interesting.

But don't take my word for it.
Download the code and documentation, and make yourself an idea.
:-)
Arnaud BOUCHEZ

Posts: 143
Registered: 2/17/02
Re: Designing a server software for many users [Edit]
Click to report abuse...   Click to reply to this thread Reply
  Posted: Nov 6, 2014 8:07 AM   in response to: Rael Bauer in response to: Rael Bauer
About the framework documentation, it is now available online.
Could be easier to work with than the huge pdf file.

See http://synopse.info/files/html/Synopse%20mORMot%20Framework%20SAD%201.18.html
Mike Margerum

Posts: 590
Registered: 12/1/99
Re: Designing a server software for many users [Edit]
Click to report abuse...   Click to reply to this thread Reply
  Posted: Oct 29, 2014 2:07 PM   in response to: Arnaud BOUCHEZ in response to: Arnaud BOUCHEZ
On 10/29/14 3:35 PM, Arnaud BOUCHEZ wrote:
Rael Bauer wrote:
Why is mORMot more able to handle huge numbers compared to other delphi
solutions? (options have not been mentioned...)

First of all, its HTTP server is event-based, as a very light layer over http.sys.
See http://datasnapperformance.wordpress.com/2014/10/16/datasnap-performance-test-en/
But this is not all. This benchmark was a simple "hello world". For real world solution, you need much more than that.

Impressive numbers from mORMot and Sparkle.

Node.js is using one core in this test . not really a fair fight hehe.
Doesn't wrapping http.sys restrict you to windows?
Arnaud BOUCHEZ

Posts: 143
Registered: 2/17/02
Re: Designing a server software for many users [Edit]
Click to report abuse...   Click to reply to this thread Reply
  Posted: Oct 30, 2014 1:27 AM   in response to: Mike Margerum in response to: Mike Margerum
Mike Margerum wrote:
On 10/29/14 3:35 PM, Arnaud BOUCHEZ wrote:
Rael Bauer wrote:
Impressive numbers from mORMot and Sparkle.

On Windows, http.sys event-driven architecture gives very good results.

Node.js is using one core in this test . not really a fair fight hehe.

In fact, Node.js has one core for HTTP incoming requests and business logic, but multiple threads for all its asynchronous process.
Whereas in mORMot, HTTP incoming requests are queued in kernel mode (in http.sys driver), then the business logic (i.e. your Delphi code) is running in multiple threads.

So the purpose of this benchmark is not to be fair.
It is to identify which solution do scale better.
And the blocking+asynchronous pattern of Node.js - which inherits from the browser style of JavaScript coding, can be a bottleneck: why limit to one core, if you have a multi-core CPU?
... hehe.... indeed! :)

In Node.js, you can use workers to run your business logic in backgound threads - but you should not be able to leverage the botleneck of using only one thread for the main event loop.
Even ECMA 6 and "future" would not release the lock.
And unblocking/synchronous code, as used in mORMot, is much easier to write and debug than all this JavaScript code with callbacks.

Doesn't wrapping http.sys restrict you to windows?

Yes, it does.
But there is another IOCP-based web server, using plain OS sockets, in mORMot.
This works also on Linux.

For Linux hosting, we consider:
- using FastCGI over NGINX/Lighttp/whatever server;
- enhancing our HTTP server class - perhaps based on http://wiki.lazarus.freepascal.org/lNet - or directly on epoll low level library - to compete with http.sys.

Having a single HTTP Server within the mORMot server could be a good idea: to deploy on Linux, just run one single mORMot executable as daemon, without the need to setup a whole HTTP server + application server.
You can deploy hunderths of servers in one command line!
Mike Margerum

Posts: 590
Registered: 12/1/99
Re: Designing a server software for many users [Edit]
Click to report abuse...   Click to reply to this thread Reply
  Posted: Oct 30, 2014 12:52 PM   in response to: Arnaud BOUCHEZ in response to: Arnaud BOUCHEZ
Node.js is using one core in this test . not really a fair fight hehe.

In fact, Node.js has one core for HTTP incoming requests and business logic,

True but it only takes a dozen lines of code to run a cluster all
sharing the same port

http://nodejs.org/api/cluster.html

Whereas in mORMot, HTTP incoming requests are queued in kernel mode (in http.sys driver), then the business logic (i.e. your Delphi code) is running in multiple threads.

So the purpose of this benchmark is not to be fair.
It is to identify which solution do scale better.
And the blocking+asynchronous pattern of Node.js - which inherits from the browser style of JavaScript coding, can be a bottleneck: why limit to one core, if you have a multi-core CPU?
... hehe.... indeed! :)

True poorly written code can block the event loop and you are hosed.

Most server processes are i/o bound and I understand node does well here.

But, I wasn't really trying to get into a node vs mORMot discussion
since either one would serve my needs and besides mORMOt looks awesome!
I just would have liked to see the benchmarks with node running in
using cluster.

I'd love to see GO in the mix too.


And unblocking/synchronous code, as used in mORMot, is much easier to write and debug than all this JavaScript code with callbacks.

Promises help but I get your meaning here.

Doesn't wrapping http.sys restrict you to windows?

Yes, it does.
But there is another IOCP-based web server, using plain OS sockets, in mORMot.
This works also on Linux.

Good to know.
Rael Bauer

Posts: 228
Registered: 10/10/02
Re: Designing a server software for many users [Edit]
Click to report abuse...   Click to reply to this thread Reply
  Posted: Oct 29, 2014 3:14 PM   in response to: Arnaud BOUCHEZ in response to: Arnaud BOUCHEZ
On 2014/10/29 09:35 PM, Arnaud BOUCHEZ wrote:
First of all, its HTTP server is event-based, as a very light layer over http.sys.
Seehttp://datasnapperformance.wordpress.com/2014/10/16/datasnap-performance-test-en/

Is there a page where you can enlarge the pictures? Hard to read the
picture text. / is there an original page (not english)?
Rael Bauer

Posts: 228
Registered: 10/10/02
Re: Designing a server software for many users [Edit]
Click to report abuse...   Click to reply to this thread Reply
  Posted: Oct 29, 2014 3:16 PM   in response to: Rael Bauer in response to: Rael Bauer
On 2014/10/30 12:14 AM, Rael Bauer wrote:
On 2014/10/29 09:35 PM, Arnaud BOUCHEZ wrote:
First of all, its HTTP server is event-based, as a very light layer over http.sys.
Seehttp://datasnapperformance.wordpress.com/2014/10/16/datasnap-performance-test-en/

Is there a page where you can enlarge the pictures? Hard to read the
picture text. / is there an original page (not english)?

Nevermind, zoom in browser solves the problem...

Mike Margerum

Posts: 590
Registered: 12/1/99
Re: Designing a server software for many users
Click to report abuse...   Click to reply to this thread Reply
  Posted: Oct 22, 2014 6:36 AM   in response to: Lior Ilan in response to: Lior Ilan
On 10/22/14 8:24 AM, lior ilan wrote:
Which Software and tools would you recommend for the creation of an ERP
server that will be run on the cloud ?
That ERP server should be able to serve tens of thousands of concurrent
user.

I would use GO or Node.js. Both scale and are free.
Arnaud BOUCHEZ

Posts: 143
Registered: 2/17/02
Re: Designing a server software for many users
Click to report abuse...   Click to reply to this thread Reply
  Posted: Oct 22, 2014 8:26 AM   in response to: Mike Margerum in response to: Mike Margerum
Mike Margerum wrote:
I would use GO or Node.js. Both scale and are free.

Just like our little mORMot.
:)
And you are still in the Delphi world, able to re-use your existing coding skills, and probably some part of your code!
If you want to write some rules in JavaScript, there is even a JavaScript engine within mORMot, ready to run on the server side. :)
And if you want to share some code with AJAX or HTML5 mobile clients, we support SmartMobileStudio, which compiles your object pascal into optimized JavaScript.

In respect to Node.js, mORMot is architectured as multi-thread, so scales even better than Node.js, as a single process.
Honestly, writing business code in Delphi, with classes, interfaces, strong typing and an efficient memory management system is a much better option for a huge project than JavaScript.
Or you may consider using Node+TypeScript/CoffeeScript instead of plain JavaScript.
Graeme Geldenhuys

Posts: 152
Registered: 5/25/01
Re: Designing a server software for many users
Click to report abuse...   Click to reply to this thread Reply
  Posted: Oct 24, 2014 11:16 AM   in response to: Arnaud BOUCHEZ in response to: Arnaud BOUCHEZ
On 2014-10-22 16:26, Arnaud BOUCHEZ wrote:
Honestly, writing business code in Delphi, with classes, interfaces,
strong typing and an efficient memory management system is a much
better option for a huge project than JavaScript.

+1

tiOPF (Object Persistence Framework available on SourceForge) is being
used in Australia to manage the electricity. Huge volumes of data
without problems. tiOPF is also used in stacks of other commercial
software around the globe, and writing business rules with it, and
handling your data persistence is a breeze.

Regards,
- Graeme -

Eli M

Posts: 1,346
Registered: 11/9/13
Re: Designing a server software for many users
Click to report abuse...   Click to reply to this thread Reply
  Posted: Oct 22, 2014 6:44 AM   in response to: Lior Ilan in response to: Lior Ilan
I'd build a REST API with ASP.NET+MSSQL or PHP+MySQL. And then connect to it with TRESTClient from Firemonkey on the desktop and mobile.
Chan Chi Keung

Posts: 4
Registered: 6/30/03
Re: Designing a server software for many users
Click to report abuse...   Click to reply to this thread Reply
  Posted: Oct 22, 2014 6:59 AM   in response to: Lior Ilan in response to: Lior Ilan
lior ilan wrote:
Which Software and tools would you recommend for the creation of an ERP
server that will be run on the cloud ?
That ERP server should be able to serve tens of thousands of concurrent
user.
The users will use it as a SAAS on computers and mobile devices.
The software will generate invoices and journal entries.
If I understand correctly, Delphi multi-tier technology functions well only
up to hundreds of users.
Should I use Node.JS, Java EE or any other software ?

As for a database, I first thought about using Big data such as MongoDB or
cassandra , but I need good transaction support.
I am considering the expensive Oracle or the free Postgre.
Any other suggestions ?
Thanks in advance.

Hello!

What is your target segment ? ,i.e. your customer will be ?

Think more on what your desired customer and what's they want !

Due to i also having intention to do this project. So i always ask my self the above question.

Rex Chan

Edited by: Chan Chi Keung on Oct 22, 2014 6:59 AM

Lior Ilan

Posts: 35
Registered: 6/29/00
Re: Designing a server software for many users [Edit]
Click to report abuse...   Click to reply to this thread Reply
  Posted: Oct 29, 2014 3:27 AM   in response to: Chan Chi Keung in response to: Chan Chi Keung
<Chan Chi Keung> wrote in message
Hello!

What is your target segment ? ,i.e. your customer will be ?
Think more on what your desired customer and what's they want !
Due to i also having intention to do this project. So i always ask my self
the above question.
Rex Chan
Edited by: Chan Chi Keung on Oct 22, 2014 6:59 AM

Hello,
This software is an ERP B2B which is expected to rapidly grow to be used by
hundreds of thousand users.
Graeme Geldenhuys

Posts: 152
Registered: 5/25/01
Re: Designing a server software for many users
Click to report abuse...   Click to reply to this thread Reply
  Posted: Oct 24, 2014 11:11 AM   in response to: Lior Ilan in response to: Lior Ilan
On 2014-10-22 13:24, lior ilan wrote:
I am considering the expensive Oracle or the free Postgre.
Any other suggestions ?

We`ve pushed Firebird pretty hard and it handled our users with ease.
I`ve also read posts where they tested Firebird with 1GB to 1TB of data,
and again it scaled very well.

Oracle is good, but it has a ludicrous price tag!! Oracle gave some of
our clients a £200k upgrade quote to handle unlimited number of
applications connecting to their DB server. I just about fell off my
chair. They could spend that money on something much better.

Regards,
- Graeme -

--
fpGUI Toolkit - a cross-platform GUI toolkit using Free Pascal
http://fpgui.sourceforge.net/
Piotr Buczek

Posts: 6
Registered: 7/28/05
Re: Designing a server software for many users
Click to report abuse...   Click to reply to this thread Reply
  Posted: Oct 29, 2014 4:20 AM   in response to: Lior Ilan in response to: Lior Ilan
W dniu 2014-10-22 o 14:24, lior ilan pisze:
Which Software and tools would you recommend for the creation of an ERP
server that will be run on the cloud ?
That ERP server should be able to serve tens of thousands of concurrent
user.
The users will use it as a SAAS on computers and mobile devices.
The software will generate invoices and journal entries.
If I understand correctly, Delphi multi-tier technology functions well only
up to hundreds of users.
Should I use Node.JS, Java EE or any other software ?

As for a database, I first thought about using Big data such as MongoDB or
cassandra , but I need good transaction support.
I am considering the expensive Oracle or the free Postgre.
Any other suggestions ?
Thanks in advance.


Think about some of your needs.

1. You need a solid, stable platform.
2. Project seems to be big so you will need stable access to well
trained programmers in long term.
3. Big application usually needs load balancing.

In my opinion you have only two real alternatives: .Net or Java EE.
Other options are too risk.

--
Piotr

Arnaud BOUCHEZ

Posts: 143
Registered: 2/17/02
Re: Designing a server software for many users
Click to report abuse...   Click to reply to this thread Reply
  Posted: Oct 29, 2014 11:55 AM   in response to: Piotr Buczek in response to: Piotr Buczek
Piotr Buczek wrote:
1. You need a solid, stable platform.

Indeed.
Open Source may be better: if you have capable people, you can fork, patch and maintain the platform source.

2. Project seems to be big so you will need stable access to well
trained programmers in long term.

As any project. Good sense!
Better developers is more important than a huge team.
Do not hesitate to pay for the best!
:)

3. Big application usually needs load balancing.
... and a lot of other patterns. Scaling is much more than load balancing.

In my opinion you have only two real alternatives: .Net or Java EE.
Other options are too risk.

??? IMHO people are most important than technology, for such big projects.
You can do crap with whatever technology. I've seen so many crappy projects in .Net and J2EE. Not able to scale at all...
People need to be good at coding, AND knowing the business.
If you want any .Net or J2EE project to scale, you definitively need people with years (decade) of experiment. They should know how a compute works, how GC/VM work, how HW works, what is executed when they write code.

If you have people good in Delphi, my advice is to stay with this technology.
If you trust those people, they are your gold mine.
You can do pretty sexy thinks in Delphi (like DDD, SOA, MVC).
Hiring "new" devs from fresh won't be necessary better, even more if they are young.
Eduardo Elias

Posts: 319
Registered: 9/20/12
Re: Designing a server software for many users
Click to report abuse...   Click to reply to this thread Reply
  Posted: Oct 29, 2014 5:16 PM   in response to: Arnaud BOUCHEZ in response to: Arnaud BOUCHEZ
Very well said Arnaud.

If you have good programmers already, stick with them and make your tool
works in your favor.

As another example....

The most secure, stable and scalable applications nowadays are written in......
COBOL !!!! I know this is worldwide, but for example in my country, the banks
invest zillions on technolgy, but no ones touch on the core mainframe: IBM
running Cobol and I dont see change soon on that.

I have heard so many things about new tools that would dominate etc etc,
PowerBuilder was a massive hit at its time, where is it now?

I could list a lot others.

So, Delphi is a good tool, it can give what you need, select and/or use a
correct framework.

Eduardo

Piotr Buczek wrote:
1. You need a solid, stable platform.
Indeed.
Open Source may be better: if you have capable people, you can fork,
patch and maintain the platform source.
2. Project seems to be big so you will need stable access to well
trained programmers in long term.
As any project. Good sense!
Better developers is more important than a huge team.
Do not hesitate to pay for the best!
:)
3. Big application usually needs load balancing.
... and a lot of other patterns. Scaling is much more than load
balancing.

In my opinion you have only two real alternatives: .Net or Java EE.
Other options are too risk.
??? IMHO people are most important than technology, for such big
projects.

You can do crap with whatever technology. I've seen so many crappy
projects in .Net and J2EE. Not able to scale at all...

People need to be good at coding, AND knowing the business.

If you want any .Net or J2EE project to scale, you definitively need
people with years (decade) of experiment. They should know how a
compute works, how GC/VM work, how HW works, what is executed when
they write code.

If you have people good in Delphi, my advice is to stay with this
technology.
If you trust those people, they are your gold mine.
You can do pretty sexy thinks in Delphi (like DDD, SOA, MVC).
Hiring "new" devs from fresh won't be necessary better, even more if
they are young.
Piotr Buczek

Posts: 6
Registered: 7/28/05
Re: Designing a server software for many users
Click to report abuse...   Click to reply to this thread Reply
  Posted: Oct 30, 2014 3:56 AM   in response to: Eduardo Elias in response to: Eduardo Elias
W dniu 2014-10-30 o 01:16, Eduardo Elias pisze:
Very well said Arnaud.

If you have good programmers already,

The most important question. Another is if he will have this programmers
in 10 years time. Project manager need to answer this question before
taking any decision.

Piotr
Piotr Buczek

Posts: 6
Registered: 7/28/05
Re: Designing a server software for many users
Click to report abuse...   Click to reply to this thread Reply
  Posted: Oct 30, 2014 3:47 AM   in response to: Arnaud BOUCHEZ in response to: Arnaud BOUCHEZ
W dniu 2014-10-29 o 19:55, Arnaud BOUCHEZ pisze:
Piotr Buczek wrote:
1. You need a solid, stable platform.

Indeed.
Open Source may be better: if you have capable people, you can fork, patch and maintain the platform source.

2. Project seems to be big so you will need stable access to well
trained programmers in long term.

As any project. Good sense!
Better developers is more important than a huge team.
Do not hesitate to pay for the best!
:)

??? IMHO people are most important than technology, for such big projects.
You can do crap with whatever technology. I've seen so many crappy projects in .Net and J2EE. Not able to scale at all...
People need to be good at coding, AND knowing the business.
If you want any .Net or J2EE project to scale, you definitively need people with years (decade) of experiment. They should know how a compute works, how GC/VM work, how HW works, what is executed when they write code.

If you have people good in Delphi, my advice is to stay with this technology.
If you trust those people, they are your gold mine.
You can do pretty sexy thinks in Delphi (like DDD, SOA, MVC).
Hiring "new" devs from fresh won't be necessary better, even more if they are young.

Yes, and luck of Delphi developers is crucial and deciding. From my
point of view (Poland) any new big project undertaken in Delphi/C++
Builder is doomed to failure. Nobody knows such tools now. New
programmers never heard about it and are not interested to learn.
Not deciding which technology is better, I perceive .net and java
direction as much more secure than delphi toolchain. Especially for
project manager.

To Lior: Save your ass. You have only one.

--
Piotr

Arnaud BOUCHEZ

Posts: 143
Registered: 2/17/02
Re: Designing a server software for many users
Click to report abuse...   Click to reply to this thread Reply
  Posted: Oct 30, 2014 5:45 AM   in response to: Piotr Buczek in response to: Piotr Buczek
Piotr Buczek wrote:
Yes, and luck of Delphi developers is crucial and deciding.

Luck or lAck?
:)
There are few Delphi programmers, but they are few job offers also.
So perhaps this lack is a luck.

From my point of view (Poland) any new big project undertaken in Delphi/C++
Builder is doomed to failure.

Are you sure?
Sounds like a sophism to me.
There are successful new big Delphi projects.
The problem is that it would be big, not that it would be implemented in Delphi/C++ builder.

Big projects are mostly on server side, today.
I suspect you are still thinking about monolithic apps, RAD-developed.
I'm not talking about this kind of programs.
This won't scale.
But on a SOA approach.

You can have your server side written in Delphi, and a mix of other languages if needed - for instance, our mORMot framework features a high-performance Spidermonkey engine on server side, to write your changing business rules or even write your application layer.
Then the clients would be RESTful, in whatever technology your need.
Take a look at DDD - and you will find out what I mean.

Nobody knows such tools now. New programmers never heard about it and are not interested to learn.

Which kind of programmers are your talking about?
You would need probably low-level programmers (c/c++), AND high-level business coders (java/c#), for any serious scaling projects.
With Delphi, you can do both styles of programming.

I've seen people coming out of school, and going to Delphi without problem.
Just because they were motivated, and driven by well skilled seniors.

You can keep Delphi coders for the server kernel, and its Domain model.
Then use some JavaScript coders for server side rules, or the AJAX/HTML5/browser/mobile clients.
Then use ObjectiveC/Swift or Java coders for native mobile clients.
Or VCL/FMX for desktop apps.

But most of your code would be on the server side.
Architecture is definitively the key to success on big projects, not technology.

Not deciding which technology is better, I perceive .net and java
direction as much more secure than delphi toolchain. Especially for
project manager.

I've seen such decision in a lot of companies, even keeping the Delphi resource in-house.
New programmers were designed to re-write the new software from scratch, using Java or C#.
Result was that
- the "new software" was not better than the old (due to less coding experiment, and lower knowledge of the business mode);
- the "historic developers" were unhappy, since they did only have to maintain the old source code, interacting with badly written new C#/Java modules, and since they were given no opportunity to invest their skills.

I have seen Delphi developers be able to embrace new coding styles (like ORM/SOA/DDD) without fear.
If you have an existing code base, and existing Delphi skills in your team, keep your coders, just train them to evolve.
ROI would be much higher.

To Lior: Save your ass. You have only one.

I have seen so many managers "saving their ass" for a few years, selling a change of technology.
Then it failed.
But this was not a problem any more for their asses, because those managers did go away, to another "success story" on their resume.
Legend
Helpful Answer (5 pts)
Correct Answer (10 pts)

Server Response from: ETNAJIVE02