Projects:Store Attachments In Azure/Specifications
The aim of this project is to allow the usage of Azure Blob Storage system for Openbravo Attachments.
As the result of this project, a new module will be developed containing the infrastructure and configuration required to directly store the attachments into Azure Blob Storage
Azure Blob Storage
Azure Blob Storage is a data storage service that stores data as objects within containers. There is no limit of the amount of objects that can be stored in a container. The maximum allowed size for an object is 4.7 terabytes.
With this module, the attachments will be stored inside one container in the Azure Blob Storage platform instead of keeping them in the Openbravo server locally. It is possible to upload, delete and update the attachments as usual.
A new attachment method has been created in the module for this to work.
There are two main supported versions by the Azure team: 8.0(legacy) and 12.0(still not globally announced)
The main differences between the two versions is that the 8.0 legacy version is not thread safe and only supports synchronous calls. Version 12.0 supports both synchronous and asynchronous calls and is thread safe.
We chose the version 12.0 as it is confirmed by Azure that it will be the version that will be supported for a longer period of time. It is not announced yet, the version used to develop this module is a preview. It is estimated to be globally announced by November.
This module depends on the following libraries that are not present in Openbravo core:
- Azure Core 1.0.0
- Azure Core HTTP Netty 1.0.0
- Azure Storage Blob 12.0.0
- Azure Storage Common 12.0.0
- Jackson Dataformat XML, Jackson DataType JSR310 and Jackson Module Jaxb annotations 2.9.4
- JSR305 3.0.2
- Netty All in One 4.1.33
- Reactive Streams 1.0.2
- Reactor Core 3.2.10 and Reactor Netty 0.8.3
- Stax2 API 4.2
- Woodstox Core 6.0.0
It also depends on some other libraries that are already present and updated in Openbravo Core:
- Jackson Annotations, Jackson Core and Jackson Databind