After several years enjoying a sustained growth in customer adoption, the product team came to the conclusion that we needed rethink our platform designs to serve best not only our current users, but future users joining us in our journey.
At Effective Software, we believe the future of Health and Safety looks:
Mobile First: Phones and tablets are now present in every pocket, which means they are the perfect medium to interact with H&S data on the spot.
Highly Available: Downtime is so 2000! A system that is not available when you need it can look like a minor inconvenience, but when we talk about reporting an injury, downtime becomes a serious concern.
Integrated: A single system, no matter how sophisticated, cannot provide the perfect answer for every single situation. Instead, it should offer an open API ecosystem, and work seamlessly with existing investments and custom extensions.
In order to ensure we are suitably equipped to deliver on the future described above, we've been working on a revision to our platform, that we call "Cuan". In Irish, "Cuan" means "Harbour", and we liked that image: a safe place away with calm water. Our new platform has begun to appear in our production system since 2017. Indeed, Effective customers might have already interacted with it without knowing, for example when using our Engage mobile application. We wanted to provide some background of how it all works behind the scenes.
Health and Safety is about Communication
The core of raising awareness to H&S issues is to keep people informed: employees need to know about the company policies, H&S managers need to know about dangers in the workplace as they are noticed, line managers need to know which of their employees has been trained to performed a specific task, executives need to know how the company is doing on H&S.
This is what we wanted to focus on: make the information more accessible, and let it flow across the whole organisation. H&S is not just the responsibility of the H&S manager, it is everyone's responsibility!
Technically, we call those systems message-based. In such systems, messages can flow in every direction: from a user to a machine, from a user to a user, from a machine to another machine, … The system blends into a conversation, instead of acting as a speaking grill between two persons.
What does Cloud-Based Mean?
We're often referred to as being a SaaS platform or a cloud-based platform. But what does that mean, exactly? Well, that is a fair question. The term "cloud" has known a certain amount of hype, and is sometimes applied to very different concepts. Let us provide ours:
" A cloud system consists of many commodity machines, assembled together to present a unified interface to the end user". 
We believe there are a few consequences worth mentioning:
- Commodity Machines: Cloud systems do not rely on expensive hardware to scale and provide availability:
they "scale out" instead of "scale up". This seem almost trivial (or maybe a technical detail), but this means that programs need to make the best use of available resources, while expecting to exceed them fairly quickly.
- Emerging Platform: A single machine has well-known limits (in storage space, computation power or simply a hardware failure), but a cluster of redundant and load distributed instances means that there are no limit (except costs)) to how much the system can store and compute, and when it can be accessed.
- Unified Interface: From an external point of view, there is no need to know intimately how the system works (some of us might remember fondly the time where one knew every server in a company by its name). A simple URL (unique resource location, acting like an address for Internet resources) is all that is needed to work.
At Effective, the Cuan platform is helping us migrate to a full cloud environment:
It separates message flows between accounts and ensures data security. The Effective platform, like most cloud providers, does not rely on physical separation between accounts to provide isolation. Cuan ensures that only valid messages are routed, and that there is no way for a message to "spy" on other resources.
It gracefully handles added load via load balancing. We routinely add multiple machines to respond to demand, so that the system is always snappy.
It allows us to perform zero-downtime rolling releases. Each week (during what we call Dark Thursdays), a new update with our latest and greatest code is release in "dark" mode: this new instance is entering a staging area, and we perform the last tests before slowly upgrading all machines with the new version.
There are of course many other low-level details to make this all works, but I’ll stop here in fear of exceeding your patience.
Take me Offline
Handling data offline represents a thorny issue for network systems: on one hand, for the best user experience, we would like the device to be always connected. On the other hand, network conditions and battery life forces us to disconnect as much as possible.
Cuan acts as an adapter between those two worlds, using a rather innovative approach: when a user of the platform sends a message (say, reporting an observation), it will be accepted by Cuan even before we have fully processed it. This way, the mobile device can go offline, certain that everything will be handled behind the scenes. When coming back online later, the device can ask Cuan if the previously sent message has been processed completely, and report this information to the user.
If you have ever used our Engage mobile application, the process can be seen by looking at the small status alongside the observations in the main view:
- "New" means that data are still local to the device, nothing has been sent yet.
- "Queued" means that the data is now under the care of the Cuan services, the device can power itself off, or go offline.
- "Live" means that the message has been fully processed, and all is up to date
By being explicitly designed to handle mobile devices, Cuan provides truly the best of both worlds: fast interactions, and low battery usage!
Messages, Services, Oh My!
One of our initial goals was to enable integration and API access. The good news is that everything discussed above is actually available for any customer to use — indeed, the protocol and endpoints are all public, and we use them too in our applications (this is know in the jargon as "eating our dog food")!
Technically, to use our platform, a message should be sent to our public endpoint (named rather obviously `https://cuan.effective.ie`), and directed to a service. In our platform, a service is a piece of code dedicated to execute one specific H&S function: we have a service for observations, another service for incidents, another service for data import, and so on. Cuan takes care of authenticating the message, delivering it reliably, and returning the response back.
We are still in the process of preparing the API documents for publication, and we will be happy to share in the meantime what is available upon request.
As a platform, Cuan is solidly established, and will know only small incremental evolution in the foreseeable future. We are now migrating our existing system bit by bit, and hope that our customers will enjoy the benefits as we are doing so.
I am well aware that this blog piece has become rather long, and has been using quite a bit of technical mumbo jumbo, so thank you for following along!