Opencart: Master product list, multiple slave sites possible? - opencart

One of my B2B partners asked me a question today. I enjoyed the whooshing sound it made as it went over my head, since I've never even looked at a line of code from OpenCart. I suggested to him that I could post it here, where the experts live.
Check it out:
I am looking at opencart as a solution for a development project that we have and I wanted to know if anyone knows if it is possible to setup OpenCart as a master/slave configuration. All sites will be on the same server with different IPs and different domain names so I would be using the same core database for the master site and each slave/product site.
What I am looking for is a way to manage all the products from one login so we don't have multiple shops that need to be managed. Is there a way to group products so I could group them by brand so they are only shown on the site they are meant for? I just wanted to check with the community to see if anyone is familiar with this setup.

It is supported since OC 1.4.9 I guess - and it's called multistore.
You have one eshop, one administration, one database, one set of products, categories, etc.
You manage the data in the master administration and set which data is visible at what slave store. Each slave store has to be an alias domain/subdomain to the main master domain.
Result: it is possible and not so hard to achieve. You can then have different settings (localization, theme, product settings, order settings, ...) per slave store.

Further, it supports multi domains, multi languages and multi currencies. With regards to the answer. shadyyx has already posted. I am furthering with regards to the technical side.
web server loadbalanced via dns:
opencart webserver1
php, nginx, apc, memcache
multiple stores on this server. The files and content is cloned to two other servers and they clone and sync every 1 hour. They get hits for high traffic.
opencart webserver2 - slave, cloned of webserver1
opencart webserver3 - slave, cloned of webserver1
cdn1 - rackspace cloud files - images, css, javascript
cdn2 - rackspace cloud files - xml, html, videos
database loadbalanced:
database mysql master server 1
database mysql slave server 2
database mysql slave server 3
So you can see. Opencart is a good solution to go with. Handling multiple stores on the same servers and or different servers. Working together.

Related

AWS RDS Read Replica

I have dotNet core application and it's MySQL RDS database configured in London AWS region, used by UK users.
I now have users connecting from Australia who are experiencing slow performance when using the UK app.
I would like to improve the performance for these users and thinking of creating a Read only replica of the database as 90% of DB activity is read.
How will the application know whether to use the Sydney Read only replica or the London Read/Write ? Does it somehow detect the user is in Sydney and just direct them to the closest ? Or do I also need to spin up a version of my app over there for that to work?
I have worked extensively on such use cases. You can always use Route53 to re-direct users to any specific endpoints. I am assuming that your users are NOT interacting directly with database. They would be hitting some application end point. For your scenario; you will have to host your application in australia also ( along with read replica). Now, inside application for read queries you will connect to read replica; while for write queries your application will write to UK database. While the application deployed on UK server; will use same UK server for both. All of this is achieved using property files having database URLs. And you deploy in different locations using different property files. This property file will have following:
For UK:
readQueries=uk.mysql.master
writeQueries=uk.mysql.master
For Australia:
readQueries=aus.mysql.read
writeQueries=uk.mysql.master
I will recommend you to change title of this question to something better which tells the exact problem. Present title is more of a tag.

Does lightsail instance also includes dbms?

I am implementing a very basic dynamic website for a school, where a parent will be able to see the fee due and child's attendance. This service will have on average 30 users per day.
I am exploring different platforms which are cost effective and easy to develop.
Does AWS Lightsail includes dbms(relational or nosql) or I will have to use an RDS instance as well(that will hike the price).
yes, you can check this blog from AWS.
Managed Databases
Today we are making Lightsail even more useful by giving you the
ability to create a managed database with a couple of clicks. This has
been one of our top customer requests and I am happy to be able to
share this news.
This feature is going to be of interest to a very wide range of
current and future Lightsail users, including students, independent
developers, entrepreneurs, and IT managers. We’ve addressed the most
common and complex issues that arise when setting up and running a
database. As you will soon see, we have simplified and fine-tuned the
process of choosing, launching, securing, accessing, monitoring, and
maintaining a database!
But you have few users montly basis as just 30 users as you said, I will suggest to go with LAMP if you are using php
LAMP with PHP 7.x certified by Bitnami greatly simplifies the
development and deployment of PHP applications. It includes the latest
versions of PHP 7.x, Apache and MySQL together with phpMyAdmin and
popular PHP frameworks Zend, Symfony, CodeIgniter, CakePHP, Smarty,
and Laravel.
Or if you are using nodejs then with NoSQL you can try with MEAN stack.
MEAN certified by Bitnami provides a complete production environment
for MongoDB and Node.js applications. It includes the latest stable
release of MongoDB, Express, Angular and Node.js. Apart from these
core components, it also includes the latest versions of Apache, Git,
PHP and RockMongo.
Here is screenshot from APP+OS
lightsail-DB-and-instance

Predictive Personalisation between different multi-tenancy sitecore websites

We have different instances of websites some of them with up to 4 multisites each. They have their own XDB backend.
We have a requirement below:
Able to track the user between each sites. When user visits the dental site and comes to company main site then show the carousel
banner with dental Ads.
When user fills up the form or download certain PDF documents, increase the accumulated goals. e.g. if user visits dental site and
fills up form (worth 10 points) and goes to different site and
downloads pdf (worth 5 points). The total goal value accumulated
should be 15.
Should be able to view the exact same user profile details (on each instances).
I understand we could use Federated experience manager, but above all are sitecore instances.
Would you able to help us how above can be achieved?
e.g.
Do we need to share same xDB and analytics Databases for ALL INSTANCES?
Does all sites need to be on SINGLE instance to achieve above?
Is it possible to share goals, personas, segments setup between different instances?
Any other recommendations?
Finally how does sitecore works out the predictive personalization i.e. it reads the xDB or analytics or something else?
Thanks.
Do we need to share same xDB and analytics Databases for ALL
INSTANCES? Yes.
Does all sites need to be on SINGLE instance to achieve
above? All sites can exist on separate instances, not an issue here.
Is it possible to share goals, personas, segments setup
between different instances? Yes share the xDB among the instance, setup Database replication in CD and make sure machine key are same Please note that there lot of other things to be considered for coming to conclusion on this point.
More reference links:
http://digital-learnings.blogspot.in/2015/12/sitecore-multi-site-or-multi-instance.html
https://doc.sitecore.net/sitecore_experience_platform/developing/xdb_overview/scalability_options
http://www.nonlinearcreations.com/Digital/how-we-think/whitepapers/Whitepaper-Planning-your-Sitecore-xDB-infrastructure.aspx

How to use a single Redis Server Instance for serving multiple DJANGO Apps

I am currently writing a django App which will have multiple deployments. Each deployment will have a sub-domain. That is, the same app will be running over different virtualenvs and will share a MySQL database (multiple databases in the same installation) and a Redis Server.
The point where I am stuck is managing the tasks in a manner that they don't get mixed up. I have been reading on this all day and could't find a solution which was accepted as a standard.
Some of the solutions proposed were,
Having separate queues for apps and have a worker listen to each queue.
Having separate database numbers in the CELERY_BROKER_URL.
Regarding solution 2, I couldn't understand how it will work and how the consistency is preserved.
Regarding solution 1, I am worried that a single mistake in the worker-queue mapping could be disastrous to the server as all the databases will have the same schema and would accept any data send even if it is supposed to go to the database of some other app instance.
Please provide some insight on this issue. Thank You!

Bare minimum for a Sitecore content delivery set-up

We currently have a single installation multi-site setup, hosted in Europe, and are looking to move content delivery for a single site to China. This is partly for SEO purposes and partly to improve content delivery performance there. Content management performance isn't an issue.
Given that we'll be having to transfer data between two separate hosting companies we'd like to limit both how much gets sent, and if possible not send any data we wouldn't be happy to publish.
We have Sitecore analytics enabled, so this might be a complicating factor.
I've read the scaling guide, which suggests we'll need a minimum of both web and core databases in the new CD environment. They do suggest that if there is no extranet security configured it is possible to do without the core database in a pure CD environment.
Does anyone have any experience with this? What are the benefits/pitfalls? What is the bare minimum installation we can get away with?
Edit: Sitecore.NET 6.4.1 (rev. 111003)
Like divamatrix said, knowing the version number is essential.
But even though the older versions can run without the Core, I would stick to an installation that includes the Core so you will have less trouble upgrading in the future.
What you need on the Content Delivery side is:
Web database
Core database
Analytics database
Then on the Content Management side you need your usual:
Master database
Web database
Core database
Analytics database
Then setup SQL replication between the Core databases.
Analytics can be configure to run reports using data from CD and store them on CM.
You also need to setup Web Deployment for file replication between the instances.
Besides all this you need some extra configuration as is explained in the Scaling Guide.
If you are not using Sitecore 6.4 or higher, I would recommend upgrading first. Once you got this setup properly it will work like a charm!
To answer your question, older versions of Sitecore worked without the Core database. You didn't say which version of Sitecore you're using, but if it's anything current, the answer is going to be that you need a web database and a core database. Also, having analytics enabled is definitely a consideration you need to look at. You should probably look at setting up an your analytics database local to your CD hosting as this database can see a lot of traffic depending on the traffic of your site. You can have publishing set up to either publish to a local web database and then replicate or you can just let publishing should handle the transfer of data between your CM and CD environment.