Hey Pimcore People
I have been using Pimcore on and off with a few clients for a little while, and I’ve got a bit of a bug bear with it, that has stopped me promoting it more with some of the clients I work with - and that’s the Pimcore requirement for a shared FS.
Mounting an NFS volume (or similar) is exceptionally 1999. It’s difficult to operationally support, when it goes wrong, it goes wrong in exciting ways - and with more modern solutions like S3 from Amazon, or any other type of block storage, there are just so many other ways to solve this problem.
I am actually quite happy to write this as a customisation to Pimcore, and submit a PR to give people the option to use a service like S3 (or perhaps a generic driver to integrate with many storage providers?), to solve the problem of needing to sync things like versions across web servers (or in my case, Docker containers).
The thing that’s holding me back is understanding what in Pimcore needs to write to the FS…
Things I know will need to write to the FS:
- Logs - Fine. Lots of PHP applications still write log files, because becoming a 12 factor PHP app is still a bit of a nightmare
- Assets - I believe that there is a Pimcore plugin to store assets in S3? But I’ve not looked into it, if not, something to write
- File Versions - Every time a version is saved, a file gets written to the FS containing the serialised object (shudders)
… and then what else … ?
I don’t mind things like cache files being written to FS if needs be (things like view caches and such (so I am not proposing to write a change to that) - but what else does Pimcore write to the machine FS that I will need to update, to be able to feature switch on storing files outside the local machine.
Is everything just in Pimcore\Model\Version ?
My thinking is that now that Pimcore is getting away from Zend Framework 1.2 (hurrah!) - we can bring it genuinely up to date, in terms of the methodologies that it uses - because right now, it’s not scalable without effort. And these problems have been solved before.