Suppose I create a site in WordPress, which is running on Elastic Beanstalk. Now, on the running app I will create posts /pages, upload images, etc. That is, some data, videos, files and records in a database will be added to the running application.
3 questions:
-
If WordPress is running on Elastic Beanstalk with multiple Amazon EC2 instances actually running my WordPress install, then will those files propagate automatically to all running instances? And will this also happen, if a new EC2 instance is fired up – for example, to handle increased load?
-
From what I see in AWS console, I can deploy different versions of an app– but as per scenario above, if I deploy a new version, wont I lose all the files uploaded directly into running app (i.e. files and database records)? How do I keep those and at the same time deploy a new version of my app?
-
The WordPress team keeps issuing upgrades. Can I directly upgrade my running WordPress install, through the web interface? Or do I have to first upgrade my local version of WordPress, and then upload the new version of the app to Beanstalk? If I have to upgrade my local version and then upload, then again I am back to point 1, i.e. changes made by users directly to the older version of running app. How do I preserve those changes?
OK I researched a lot on this particular issue, and this is what I learned–
(1) If a wordpress user uploads some files, then his files will be uploaded only to the virtual machine that is actually serving his request at that time. Eg if currently the wordpress site is cloud-deployed and is using 5 virtual machines, now when user makes request he is directed to one virtual machine– the one with the lowest load at that point… His uploads are stored only on that server. Current Platform-as-a-service solutions (like Amazon Elastic Beanstalk and App Fog) do not have the ability to propagate the changes to all the running instances. Either that (propagate changes to all servers) or use a common storage by all running instances– these are the only 2 solutions to this problem. (Eg of common storage would be all 5 running virtual machines using Network-Attached-Storage (NAS)… )
(2) With ref to platforms available currently like Amazon Elastic Beanstalk and App Fog, for example, even if user made changes directly to running app- these platforms rely on the local version of code (which the admin deployed initially to cloud)- and there is no way to update the local version of code (on admin’s PC) with the changes made by a user to running app– hence these changes viz, files are lost– Similarly, changes in database by user to running app are also lost– unless the admin is using exactly the same database for his local app (that he deployed to cloud)
(3) Any changes to running apps first have to be made to the local app on admin’s PC and then pushed to cloud.
I am working on a Cloud PaaS that addresses all these concerns– viz updates can be made to running apps, code changes made to running app are also updated in code repository accessible by user…The Proof of concept is ready, hopefully it will be as good as I hope it should be 🙂 — currently the only thing that is actually there is the website (anyacloudpanel.com) — design work is going on 🙂
If there is some rule that I should not mention my website( Anya Cloud Panel) — then I am sorry — pls feel free to edit and remove my website URL from my answer 🙂
Thanks,
Arvind.