Fieldpine Architecture
The Fieldpine application uses a distributed database and server approach and can have multiple ways of being put together. This approach permits very high reliability for store trading operations and also flexibility to allow different technologies to be used for different purposes.
The notes below discuss in terms of connecting an external WebServer however it can be any technology external to the retailer private network, such as Mobile Apps or 3rd party applications, that is capable of requesting or receiving API messages.
Basic Configuration
API Server akaStore Server |
The calls you make via the OpenApi interface will eventually be handled by an API Server somewhere.
Retailers may elect to run this server on a computer inside their store or network. While we call it a server, it can run on standard Windows desktops or Windows Server
Multi Store/Multi Lane Configuration
API Server Store #1 |
⇳ | Register |
⇳ | ||
API Server Store #2 |
⇳ | Register |
⇳ | Register |
If multiple stores exist, then a store server will often be deployed to each store. The lanes in that store communicate initially to their store server.
The store servers communicate with each other to stay in sync.
The term 'register' is used in the diagrams, but it can be any API consumer: executables, browsers, mobile apps, voice agents.
With many stores a head office server might be deployed to coordinate store servers
Register Store #3 |
API Server Store #1 |
⇳ | Register | |
⇳ | ⇳ | |||
Head Office Server |
⇳ | API Server Store #2 |
⇳ | Register |
⇳ | Register |
A head office server is still an API Server, but amalgamates information from all the stores. While a store server knows about itself, a head office server knows more about all the stores.
Small stores can communicate directly to Head Office
As a developer, this simply means you might be talking to different servers for different reasons. If you are developing a mobile app for instore use, you will communicate to the local store server. If your solution is more enterprise wide, then you will use the head office server.
Despite there being multiple servers, as a developer you will still only need to talk to one server
Adding an External Webserver with Firewall Opening
Internet | |||
WebServer | API Server akaStore Server | ||
When a webserver is added if a port is opened in the router then the webserver can freely communicate to the API server.
This requires the retailer to open their firewall, to have static IP addresses, and to have the API server constantly running. We recommend using Cloudflare to provide additional protection for the API Server
In the documentation this method is called With Firewall and has potential access to the full set of OpenApi functions
Adding an External Webserver with Polling
Internet | |||
WebServer | « | API Server akaStore Server |
If a firewall port is not opened, the API server can connect to the webserver. This means it can poll the webserver at regular intervals to send information and retrieve information.
While the polling technique works well, it does not fully permit the APIs provided under OpenApi to be used, so websites are limited in what they can do.
In the documentation this method is called With Polling and has access to a subset of API functions that have been specifically enabled.
Connecting to Fieldpine.com websites
Internet | Fieldpine.com | ||
⇳ | ⇳ | ||
WebServer | API Server akaStore Server |
Another option is that Fieldpine.com is able to act as a store server for a retailer as well. This is possible even if the firewall is closed, as the other store servers know they need to call out to Fieldpine when this is configured.
This means that internet sites can now use OpenApi, via Fieldpine.com to communicate directly to retailers systems.
Clearly, there is a lot of security around all this as well.
In the documentation this method is called Using Fieldpine and has potential access to the full set of OpenApi functions, although retailer configuration may be required to authorise some types of data transfer.
This configuration has 3 pricing plans, premium, standard and bulk. Each of these has slightly different characteristics.
Bulk | Standard | Premium | |
Reliability | Best Effort | Best Effort | Serverless Design |
Use Cases |
|
|
|
Data Access | None, Cloned, Tunnel, Partial | Cloned, Tunnel, Partial | Varies |
Price Point | Very low cost | Standard | Higher |
API Range | Queue type operations only | All | Subset /Sales (create) |
Using a Relay Station
Internet | Relay Server | ||
⇳ | ⇳ | ||
Mobile App | API Server akaStore Server |
A less obvious option that can also be used is the use of a relay server. A relay server acts like a Post Office, or queue. Either party can send messages to the relay server and retrieve messages from it. This is not typically used for web servers, more for mobile apps or transient clients
Relay servers can be created using various technologies Azure/AWS Queues, blob storage, an FTP server, dweetpro.io and many more. The key concept is that the source app and api server both know where and how to leave messages for each other
When using a relay server the messages for each other would typically be encrypted or obfusticated.
In the documentation this method is called Using a Relay and has limited access to OpenApi functions. All API calls are possbile, but there can be long request/response delays. It is not a realtime technique.