Drupal 7 One admin, multisite, multiuser, same structure what is best configuration? - drupal-7

I am developing a web site with drupal that has lot of instances. My case is
Every site same structure but different content. Websites made by drupal multisite conf. Same codebase, different database.
Only me user 1 every sites. Client is owner of the site, only add and view contents of their website.
The problem is I will keep developing web site and change structure and configurations. For example new or updated content types, new fields, new or updated views, rules etc. When I updated 1 sample web site, what is the best approach update all current websites?
Is it possible managing views, contetnt types, field, rules, enabled modules on one site. By the time maybe over 1000 website will added to system. and it is hard to update 1 by 1 features modules. (Also features modules doesnt carry some confs.)

Related

Several react apps for different part of a web app?

Here is a question on how to structure a web app based on react.
We are planning on deploying the front-end of an app that will contain several parts like main part, a customer account part and say a backoffice part for the company staff to track customer's data etc...
The plan is to deploy this app on Netlify and use subdomains like example.com, backoffice.example.com and clients.example.com.
My question is: shall we use a single React app to handle these 3 parts or use 3 different React apps ?
Initially we thought using 3 different apps would be better in terms of maintenance and evolution but any professional feedback with pros and cons would be appreciated.
Thx a lot.
We do something similar (but with Angular). It works well as each of the teams is responsible for their own app as far as maintenance and release cycles is concerned. It is pretty scalable as well - no problems to just keep adding new apps (as we are doing).
We have the whole lot behind NGINX, and so in the code we can just refer to simple paths like /client-services, /marketing and /sales - i.e. no server/protocol configurations.
You need to keep the following in mind :
How the apps interact with each other i.e. a standard data object, or cookies/localStorage
Authentication
You will be using app/internal routing for modules within your app, and external routing to redirect to other apps
We've been burnt before with one monolithic app...

Salesforce: is it possible to develop a web application on top of Salesforce

Let me start with a bit of background: I'm helping a non-profit organization that would like to have a browser-based application that is backed by Salesforce, but has very specific requirements.
I see Salesforce has a REST API that we can call, so we can develop a standalone application to serve the web pages they want and use the REST API to call Salesforce when needed.
I'm wondering if there is a way to host a web application directly on Salesforce; this way we don't have to have a separate application server. Any recommendations or pointers to documentation/open source products is greatly appreciated.
Yes, you can create services that will allow your app to hit Salesforce
Depending on the type of application, yes you can host it on salesforce using the Salesforce Sites feature, also you can develop and host your app on Heroku which is owned by salesforce and can sync data to and from salesforce using Heroku Connect, or you can build and host it on another service like AWS and connect via the REST API. You just need to investigate and choose the option that best fits your use-case. One thing to be aware of is that there are API limits (the number of calls you can make to salesforce in a rolling 24hr period). Depending the the needs of the app be sure to see if those limits will be an issue. Because if the app makes constant calls to salesforce that could be an issue. But there are things you can do to get around that, like caching.
Yes, both Force.com Sites and Site.com features allow you to host webpages on the Force.com Platform. The markup is stored in Visualforce Pages and can use Apex to access records in the Database. I have migrated multiple websites (including our company's www.mkpartners.com) to Force.com using Force.com Sites.
One thing to keep in mind is that you are limited to 500,000 views per month and the rendering of a page with images that are also stored on the platform will incur a single view for the page and a single view for each image. If you already have a very popular website, I wouldn't migrate. If you're a small business or nonprofit, then it should be fine.
Another thing to keep in mind is that dynamic functionality based on records in the database will not work during maintenance windows. There is the ability to upload a static version of your website to be rendered during these windows though.

How does writing to a database work when a web app uses multiple databases like Sitecore has

In Sitecore you basically have three databases. The Core, Master and Web database.
Simply put the Core database holds all Sitecore settings. The Master database is the authoring database. So it contains all versions of any content.
Then in Sitecore you can "publish" the contents and it will publish the latest version of each content to the Web database.
So suppose I have a website with a news page. And a user is able to edit a news item from the web site (so not through the CMS). How would the database then get updated when it's set up like this?
It would probably update the Web database, but then when I go into the CMS I don't see the latest changes, since the CMS reads from the Master database, right?
So does that mean that it should write twice? Once to the Web database and once to the Master database?
Can anyone tell me how this works in Sitecore or the like?
The reason I'd like to know this is becasue I'm thinking of creating a similar database setup. And I'm just not sure how to solve this issue.
When you have items that needs to be updated by the website visitor, you need to use the SitecoreService SOAP webservice or create your own custom webservice that runs on the Master-instance and triggers a publish after updating.
Well, Sitecore has a publishing step. When the user publishes in Sitecore, it updates the Web database at that point. If you want to build a similar system, I would simply store all versions of an item in the Master database and only when the user chooses to publish, copy the latest version to the Web database.
If your site
- generates a lot of comments
- generates the comments continuously
- uses multiple content delivery servers
- requires CMS users to manage them
I would not store the comments as content items.
The reason is HTML cache and publishing behavior.
On high volume site you'd most certainly use html caching to achieve best possible performance. If a publish is required to show comments, you'd need frequent publish actions and thus html caches are cleared often.
You don't wan't that :-)
Modeling after the DMS implementation is the safest (not cheapest and Datatables isn't something I recommend these days), storing stuff in a separate database, possibly using queuing to prevent an overload if things get busy..

What are the limit of Drupal or any CMS in general?

Drupal is a CMS, not a web framework.
Does this mean it should only be used for publishing posts, blogs, graphs or what ever content you can think of or can it be used for more sophisticated applications with 'true' business logic behind the scenes ?
Can it be used for developing a resource management application? Can we extend the Drupal database with our own tables that represent business objects?
You should be able to extend Drupal with custom modules to achieve your business goals. I wouldn't add onto the Drupal database adjusting it's schema since that would make patching and upgrading difficult to say the least. You could use an additional database if needed if the existing Drupal database API doesn't meet your needs. There is also a Drupal services module available (https://drupal.org/project/Services) that you could use for a web API interface between your app and Drupal to access it's objects.
This Stackoverflow post also may provide some answers, Web application integration with Drupal -- I have been involved with successful back-office business applications that utilize a CMS such as Drupal extending it using custom modules and an additional database for custom data objects.

How to migrate GAE alias to new application without migrating data

We have an existing application using the legacy Master-Slave database with an alias to one of our subdomains. When we went to HRD, we re-engineered the application considerably and so we don't want to use the migration tool. In fact, we don't care about the data at all (see background below for why). I just want to change the alias so that the subdomain points to a new application, or in other words:
subdomain.example.com --> oldapplication.appspot.com
to
subdomain.example.com --> newapplication.appspot.com
Ordinarily (in a non-GAE environment) this would be a simple DNS change and once DNS propagates we could shut down the legacy application. In GAE, we can delete the old alias and set the alias up on the new application, but we don't know how long this is going to take to complete (other than the 10 seconds it takes for someone to click the buttons and post to the control panel). We're potentially willing to accept a very small window of downtime where subdomain.example.com won't be serving pages (because we know when peak loads are). But does anyone know how long this change-over should take?
We reported a production issue but have not had any feedback.
Background:
This application serves a bit of Javascript that can be embedded in parters' web sites. The data for this gets fed from our main site (not on GAE) via an API on a daily basis. So we don't care about migrating data and in fact we're already doing the daily feed to the new application and just need to change the alias.
I just did very similar thing for my domain. Moved example.com to point to my new app in GAE/google apps. I deleted my existing domain/appengine application mapping and in <10seconds added the new mapping.
There was no downtime. For about a minute my domain continued to point to old application and then it moved to the new application.

Resources