For over a 100 years Royal Flora Holland (RFH) is an established player in the global flower trading business and organizes the biggest flower auction in the world.
RFH is a cooperative of growers and is combining multiple auction locations to create a centralized supply of flowers and plants. Over the past century RFH has been automating the processes of the flower auction.
In recent years RFH has completely moved over to the public cloud. However, all processes and tools are still running "old" .NET windows based applications that only have been through the lift-and-shift phase of cloud computing.
Flowers being sold "beneath the clock"
Because RFH is such an old company, many tools and processes have been built with the physical processes in mind. Automation was at the core of the digital transformation.
An example of this can be seen for the flowers or plants which physically were sold "beneath the clock". This process is still the main driver in digital processes and interfaces.
How can we use the public cloud this time around to not just automatize but modernize the real-time auction(s) of RFH in a complex environment where users are not fond of change.
Processes and tools to mimic the physical auction
Transforming monolithic applications to modern micro-services and moving away from old (windows only) desktop applications to web-based technologies. Building an (almost) greenfield system where user needs are more centralized during the exploration and development.
Proposed new architecture
Since the beginning of times at the flower auction in the Netherlands flowers are being sold according to the dutch auction principle.
Flowers and plants to be auctioned are being transported to the auction location where auctioneers control a big mechanical clock to settle on a suitable price.
Auctioning with a mechanical clock
In the years of automating the auction, various tools and processes have been created to support the physical processes.
From digitized buying location at the auction (Tribune werkplek) to a full-on remote application (Kopen Op Afstand) to enable buyers to buy from (nearly) anywhere in the world.
Tools such as beeldveilen allows the buyer to inspect the flowers and plants without the need for the product or the buyer to be physically present at the auction.
Floriday has been a frontrunner in modernizing the flower auction in recent years but has been focused on the supply chains of RFH. The actual real-time auction on which auctioneers sell the flowers and plants of growers to buyers all over the world are still using out of date systems.
Auctioning with current systems
In order to modernize the flower auction we defined four aspects which were lacking in the current systems:
- Built as monoliths and highly intertwined
- Uses UDP for instant messages to clients
- Has scheduled releases with various planned freezes
- Using windows exclusive clients
The current systems of RFH have been highly entangled with each other over the years of development. In the new system we are transforming the monolithic applications into micro-services.
Even though services could rely on each other we made clear separation of concerns in which each microservice has a single responsibility.
Each micro-service is running on cloud native building blocks using standard cloud patterns developed at Conclusion Application Innovation which makes each service individually scalable according to the needed load over the day.
A microservice blueprint
The current systems are using UDP / multi-cast for sending out messages to all active buyers. Although this is a proven technology there are some flaws which forces the current systems to send messages multiple times over the network to make sure all clients receive the correct data.
Any new technology which would replace UDP messaging was required to:
- Assure all clients will receive the real-time updates
- A (average) maximum latency of 90ms from anywhere in the world
After research into various technologies (and implementations of those technologies) we found the .NET implementation of WebSockets to be the most suitable solution for our needs.
Instead of planned releases and freeze periods we build complete CI/CD tooling for the new auction. In order to reliably release new software quickly we make sure any new code introduced into the system is thoroughly tested and monitored.
For the frontend we are using storybook to develop and test components in complete isolation. An added benefit we found in using storybook is to bring business requirements, development and design in a single place.
In the application itself we are using cypress to make sure all components are integrating well in various screens and complete end-to-end tests to make sure the application behaves as expected in real-world scenarios.
In the automated release pipeline we are making use of quality gates to prevent untested code to reach production and are monitoring releases over time with tooling such as cypress dashboard and SonarCube.
Accessibility for new buyers to the auction can be quite cumbersome. In order to buy flowers and plants at the auction potential buyers need to install software which only runs on windows.
This software needs to be manually updated to get new features or bugfixes. Users need to install and run a VPN client which connects them the the RFH network in order to receive the before mentioned UDP messages.
In our new system we are using a browser based -React- application which the users, buyers and auctioneers alike, can access trough any device with an active internet connection.
Even though the application is optimized for desktop use initially, during design and development we are taking tablet or even phone use into account.
Current state of the auctioneer interface
Current state of the buyer interface
The project is under active development and is envisioned to be tested mid 2022