With the advent of cloud based storage and technologies, one big decision that companies face is whether or not to have features rely on cloud architecture, or on-client architecture. Nowdays, any features we develop, software engineers need to make a decision about whether or not certain features hould reside on the cloud, or on the native device.
To be totally honest, there’s no absolute better or worse option, but there are definitely pros and cons of each that help decide which is best for the specific use case. Here’s a list of pros and cons to help you decide.
Why use cloud-based architecture?
- Has the capabilities for a lighter and easier app build from creating a single API. This saves time and lowers the complexity of the codebase within the client.
- Maintenance of the codebase is much easier due to one centralized system
- Complex and long tasks can be done faster by utilizing a cluster of servers. This allows tasks to be dispatched to multiple servers for parallel processing
- Data manipulation made simple. By utilizing existing open source libraries in different languages, data manipulation is much easier when compared to client based solutions.
- No power or battery issues. Most of the performance bottlenecks are removed by simply increasing throughput (more servers for everyone!)
- Updating is as easy as writing and deploying. Smooth as butter.
Why use client-based architecture?
- Client-based solutions tend to be less expensive when compared to their cloud counterparts. There’s no server or electricity cost (since everything is run on the device)
- Code familiarity is a non-issue, while code details between engineers can be discussed at a low-level. This is crucial at companies like Kiwi since many software features depend on complicated mathematical/statistical algorithms developed in-house. This familiarity allows for more resources to be pooled into research efforts to ensure high solution quality.
- Porting to embedded systems is much easier. It’s as simple as reading the code and reformatting to a different language.
- Increasing server size in cloud reliant systems may also increase issue scale.
So what’s better?
Is cloud computing better than non-cloud computing? How about cloud based solutions in products?
When architecting the overall system, there is never one absolute answer that trumps the rest. Instead, understanding all the trade-offs for the decisions you make is critical, and always keep in mind that balance is what matters.
When in doubt, think about making the user experience as good as possible. As important as it is, great engineering architecture doesn’t necessarily translate to a good UX.
And remember, UX is king.