For very large Project, MODX, MODXCloud is it the right choice?

Hello everyone,
and sorry for my english.
I have known and used MODX for 15 years when it was called evo, so the answers to my questions won’t change my mind about the quality of Modx.
I used MODX for small and medium site with more customitation and particularity.
Now I have to develop a very large project and I have no experience with modx in this case.
The project is expected to support 2 to 3 millions of users and about 1 or 2 million of resources.
And now my questions.

1) Is Modx the right choice?
Or do you recommend me to develop a personal CMS, despite my esteem for Modx?

If, as I hope, MODX has the potential to handle this project, here are some specific questions

2) What version of Modx, 2.8.x or 3.x?
I use modx 2.8. x with great satisfaction, without any problems despite my intricate customizations.
I have tested modx 3.x only in local machine with WAMPP, but i have so much problem.
Some with core processor, e.g. autoload-remote, some extJs, some extras are not fully compatible, the structure has changed and some of my cutomizations should be rewritten like some snapshots.
Is there a modx 2.8.x end of life date?
We must consider Modx 3.0 is the future or just another version of Modx?

3) Better project structure with modx
In th eproject every users (2/3 mil) has a page that he can manage and customize (position of element, color, fotns,…), let’s call it HomeUser
With these elements, number of users, page, what is the most efficient choice to make with modx?
A general page, url/to/generalHome.html, where I get user getUser() and its customizations?
Or a resource for each user url/to/HomeUser where do I get only the customizations?
In this last case the pages will be millions

Similarly, groups of 5 or 6 users join together to use a common page (1/2 mil) that can be customized.
Which is the best choice?

3) ModxCloud for my very large project is the right choice?
Sorry for these trivial questions

ModxCloud has a hardware upgrdable?
In staging the hardware is only for 100/200 tester and after some milion.

My project will use websocket
Is it possible to create a wbsocket server on ModxCloud?

The group common page will use ajax and websockets heavily. So with the possibility of having at least 1 million users on the server at the same time.
Can ModxCloud handle such stress? What about modx?

Thank you all for your attention, the answers you would like to give me, the considerations you will tell me and above all any experiences you would like to share

Cheers

This is an excellent question. I have no doubt MODX can be used however you are likely looking at a not insubstantial amount of custom work and it is worth taking a good hard look at what you’re looking to get out of MODX here. I’ll get into that a bit with your other questions.

Despite initial compatibility issues, 100% use MODX3.

There is no official end of life date for 2.x announced yet, however 3.0 is a continuation of 2.x and that will eventually be discontinued. You do not want to start a new project of this scale and magitude on a version that will be end of life in a matter of 1-2 years.

As a core integrator, I feel pretty confident we’ve stabilised 3.0 enough for production usage now starting with version 3.0.4. There had been some parser and other issues, but it’s looking good, and the vast majority of important extras have been updated to be compatibility.

This is the part where I would take a good honest look at what you want MODX to do for you.

What you describe, a single page per user with some users sharing access to the same page, is really easy to model as a few custom tables with some flexible routing in front of it.

You definitely do not want these millions of users accessing the manager to edit a resource. The ACLs for that alone would be nuts, and what you’re describing here is user-generated content, not resources. That definitely needs custom modelling.

If these user pages are the primary function of the site, and you’ve established that part will involve custom routing and tables, what function does MODX serve? You could consider still using it for managing the (marketing) site, a company blog, etc.

Perhaps the user content would get pulled in through an API client-side? Or perhaps you’d want to use its server-side templating? If those things however are just a small part, perhaps a little Slim application with Twig templating would be easier to scale and build to spec?

For specific questions about MODX Cloud it’s worth dropping them an email instead, but for something of this scale I think you’re definitely looking at a private platform rather than the basic shared instances. Websockets aren’t supported on the standard platform afaik either.

If you do make MODX a core part of the site, it would be well worth it to get MODX LLC on board with that as they do have hands-on experience with a couple of really big sites and will be able to help you scale that.

2 Likes

Thanks for the replies and considerations.

I also use MODx for its simplicity to develop, chunks, snippets, plugins, if one creates his own archive he can reuse them without problems.

I use very little manager and ACL for clients, exclusively for resource management (news, page content) and with two or three standard policies. ACLs and permissions I can not digest well :slight_smile:
For other managements (e.g. Add courses to a menu, change company data) I use a management page in front-end.
The page customizations are minor but the project is very difficult to explain. I’ll try to give an example with sport.
The site with Modx has to manage a sports league, NBA.
The users are the players.
Each player can manage his clothing (UserPage).
5 or 6 players join together to create a team (TeamPage) whose colors and uniform they decide.
The league manages sponsors, news, sub-leagues with some teams, matches, etc
The day of the matches, all the users (players) connect to play the matches (websocket) and then the league manages the standings, the goalscorers, etc.
In the UserPage, the league inserts any of its baskets, and the user something else
In the teams page, the league inserts, the results, all the baskets, fouls etc etc, and the user some personal considerations.

The personalization of the pages is marginal, it only serves as folklore to “empower” users

Modx supports 2/3 mil users and 4/5 million (3 UserPage and 1 of TeamPage) of resources?
I’ve never considered modx’s stress limit

I will write the questions by mail

Thanks as always

Cheers

Correct, we don’t allow daemons from users on public platforms, but definitely OK on private platforms.

I have no idea on users, but you really should not be considering making 4/5 million resources. Give those user/team pages their own dedicated table so you can properly optimise it.

The resource tree becomes borderline impossible to use once there are a few hundred at a given level. Using the Collections extra helps alleviate that. Then at a few tens of thousands of resources, you’ll want to disable the context aliasMap, as generating/reading that will become more intensive than just asking the database to lookup what resource matches an alias.

Personally I would not consider resources for any collection of things that is expected to grow over 50k. That doesn’t mean MODX, when properly tuned, can’t run more than that. Just that when you get to that sort of scale, I would not consider resources the right hammer anymore. Use dedicated tables.

Thanks again.
I will study the architecture of the project in detail to find a solution that includes modx :slight_smile:

I just wanted to say that I would be interested to follow the development of this project, if you plan to blog about it or something. Or at least see the final site when it’s launched. It sounds cool!

1 Like

If I find a solution, as I hope, that includes modx, I will definitely update you also because I will ask a lot of questions :slight_smile:

1 Like

Hi,
SilverMabol,

Definitely MODX can handle large amounts of users and sites.
We already developed projects for End user applications with very large number of users and large amounts of pages.
We developed an extra we call it Weaver that was presented to our European fellows in the Swiss Snowups that prevents users from accessing the manager and allow then to create pages with a block systems like Legos that people can assemble to create whatever they want (there are blocks for general purpose text, for images, for video, download, galleries, whatever you would imagine). It is multilingual and allow people to manage multiple languages from their personal interface. Everything is protected via access right management.
We have developed with the time a good expertises on scaling large sites and large number of users on privately manged servers and are actively working on a wider spectrum using Docker containers.

Do not hesitate to contact us if we can help.

Long live MODX

Philipe

2 Likes

Many Thanks,
i study a new architecture for the project and then let’go out with many questions :slight_smile:

I just wanted to chime in here about MODX Cloud and large site scaling. At MODX Cloud we have over a decade of experience in hosting and managing multi-location, multi-server, high-availability configurations of MODX from 3-5+ nodes.

These configurations often include:

  • Load balancing
  • Content Delivery Network (CDN) and Web Application Firewalls (WAF)
  • Virtually real-time synchronized assets
  • Synchronized DB
  • Zero downtime (remove troubled nodes or for upgrades/data centre migrations)
  • Custom server page caching

These sites have handled millions of pageviews per day and tens of thousands of requests per second and we also have the ability to help with performance tuning and optimization where required.

MODX Cloud also includes Backstage™ selective content staging and publishing that allows content editors to work on a staging environment, get all approvals and then push only selected content to production. This keeps the hands off the production environment to prevent mistakes or gobbling up resources that could be used to serve visitors and makes the editor experience more fluid.

1 Like