5 Ways to Store Data with Containers
Last week we started uncovering the possibilities of a certified Data Storage Container that lets you improve your projects’ filesystem structure, make it more reliable and configurable. Below, we consider in details what types of storage are available at Jelastic Cloud and for what kind of data they suit the most:
- Local filesystem
- Master container
- Compound container
- Dedicated container
- External server
This kind of storage is used to persist the data, which needs to be kept during container lifecycle, but is not required to be shared across other nodes. If drawing an analogy, basically it’s kind of a folder you create inside a server. Commonly, it’s not implied that the data such a folder contains should be kept during different maintenance processes. But in confines of Docker Standard Support at Jelastic, creating a local volume in such a container represents a highly efficient way to protect your data (e.g. during the redeploy operation).
Among the main advantages of local file system storage type, can be admitted simplicity of data control and its full local availability (as no network issue can affect its accessibility).
Such storage can be used for saving log files, which you don’t want to be erased, or for your load balancer’s configuration files, in order to not to loose the existing nodes’ linking structure.
The master container type of data storing becomes the most efficient when you don’t need to export files on different environments but face the necessity to share your data in the confines of a single node layer.
In such a case, you do not require a separate storage container and can use the initial (master) node of the layer as your storage server. E.g. if your application uses some pool of images on compute nodes, you can just share a folder with them for the whole layer. This ensures availability of the same content at all containers and, simultaneously, eliminates the necessity to synchronize and keep this data copy at each node.
So, this way, you get rid of data duplications, lowering disk space consumption, which also reduces overall environment cost. Moreover, as a separate Storage node is not used here (since everything is kept within layer’s master container), no additional environment elements (and thus funds) are required to implement this structure.
Jelastic provides a possibility to treat any node at account as a data storage server, i.e. assign it an additional storage role beside the main native one. Using such a kind of compound containers suits best for handling simple projects.
In this way, you can leverage the shared storage functionality without the redundant complication of your environment topology due to a separate node inclusion. And complementary utilization of a server, which presence is necessary due to its role but which is not very loaded, generally, helps to save money compared to dedicated storage container use case.
Also keep in mind, that local files can be retrieved by an application much faster in contrast to when they are accessed via network. So, for example, if you have two nodes with one of them distributing some static content and another one – just pushing it out upon the request, the best solution will be to set up a storage on the first container to ensure faster distribution and prevention the network from being a bottleneck.
Dedicated Storage Container
For more complex and loaded applications, it is worth to centralize your shared data within a single container to get more simple and flexible exports’ management (including access permission control – e.g. read-only for one node type and read-write for another).
In confines of Jelastic, a Dedicated Storage Container is recommended to be used for sharing files across multiple layers or even environments of a single account. It is specially optimized for data storing (i.e. is focused on performance and provides the enlarged disk space amount).
Apart of that, upon using a separate data Storage container, you get the following benefits:
- Since storage here represents an independent container, its occasional high loading can be properly handled without influence on general app’s performance (as it might happen during load peaks in case a single node fulfills several “roles”).
- Upon the necessity, you can painlessly remove everything except the required data (i.e. leaving just a storage being included to the environment) and start over with your project from the scratch. Herewith, the majority of common environment settings (e.g. internal domain and sharing permissions) will be left unchanged, which highly simplifies project re-integration.
- Storing data apart makes it easier to handle several project clones (i.e. environments), dedicated for different app lifecycle stages (e.g. separate ones for development, testing, and production).
- Mount folder with your DB’s scheduled backups to your storage container for making backups automatically kept on the remote server and, in such a way, improve the overall data safety during software upgrades.
In addition to the data storing itself, such a structure can be also efficiently utilized in case you need to share some common configuration files, that are to be used by nodes on different layers and/or environments. Herewith, your Jelastic Dedicated Storage Container can be also used as an external storage, i.e. you can expose data from it out of the Platform for being available over the Internet.
In such a way, you can share some content for the required third-party service or another developer (providing him with personal access permissions) or, generally, get a quick access to your data from any point with the Jelastic-hosted NFS server.
By using this option, you can even build your own intercloud sharing solution and/or operate with the same data from different Jelastic installations – find out the required NFS server configurations for such an implementation within the linked doc.
External server mounting is intended for establishing connection to a third party NAS storage, which shares data via NFS. With Jelastic Cloud, the process of its integration is fairly simple, since you don’t need to perform any additional configurations at either platform or storage side.
So, if you have your own storage server with the properly structured content being already set up, with this option you get rid of the necessity to copy or transfer it anywhere – just mount and share data across the layers, environments or even multiple Jelastic installations.
Otherwise, i.e. if you are just planning to create your own highly performance and reliable storage, consider leveraging the Dedicated Jelastic Storage Container. It’s delivered with all of the necessary software being preinstalled, thus you can utilize such storage just after the creation with no extra configurations required.
Depending on your project needs, you are free to choose the most suitable option for storing and sharing data within the Jelastic Cloud. Go ahead and test drive our innovative functionality!
Storing and Sharing Data Across Containers