Software Tool Evaluation Factor 4: Scalability and Architecture
Scalability is as important as the other three factors which I already covered, as this is about how the tool performs and whether the tool fits in your technology you are using in IT.
The questions you should ask here are:
For Scalability
Scalability is difficult to define, and you must prove the scalability for your specific requirements. A tool does scale well if it is efficient when used in large situations, means input data, users, transactions or nodes.
This leads us to the different types of scalability we will ask for:
- Functions
- Load
- Users
- Geography
Here some of the questions you should consider regarding these scalability types:
- Can the tool handle your expected number of transactions and does it
run still efficiently?
- What about the network latency and response times?
- How many users can use the tool in parallel before response times are dropping?
- When many new functionalities are added, does the tool still perform well?
- Will the tool perform well during your traffic peaks?
- Does the tool performance improve after adding hardware and is this in any proportion to the capacity?
- Does the tool use load balancing or distributed computing for better performance?
- Does the backend database scale as well according to the different scalability types?
- Does the tool have any monitoring for scalability?
- What about caching data in memory?
- What data is or can be cached?
- Is data cached before writing to databases?
- Is frequently used data cached a longer time?
- What memory caching architecture does the tool use?
For Architecture
Architecture is all about how the tool is composed and works. Again, here are some questions you should include in your evaluation criteria. But many of these questions are depending on what you want to achieve and how much you want to invest in your hardware and software environment. It makes no sense to ask for a Linux version of the tool when you donĀ“t have Linux in your company.
- In comparison to best industry practices and latest trends, how is
the application architecture composed?
- Is the tool distributed or running on a single server?
- Does the tool run on cloud services and/or locally in your IT?
- Can the tool handle different environments like development, test,
training and production?
- Can configuration be shared or copied between these environments?
- Can the data transactions be performed on different and between environments?
- Can the tool be easily enhanced without major changes to the infrastructure?
- How to handle downtimes in the tool?
- Is the disaster recovery approach acceptable for you?
- Data recovery with minimal manual assistance
- Audit trail provided automatically for all transactions
- How are the backup and recovery procedures handled?
- Tool backup
- Data backup
- Configuration backup
- How are redundant data handled?
- What is the architecture of the tool?
- Client / Server application (2-tier, 3-tier, Cloud)?
- Database-centric
- Component-centric
- Service-oriented
- Event-driven
- Monolithic
- Peer-to-peer
- You name it
- What frontends do exist?
- Standard GUI on Windows, Linux, MacOS
- Web frontend
- Mobile frontend
- On what operating systems is the tool available (server backend)?
- Cloud Infrastructure
- Windows 7,8,10, Server 2012, 2016 etc.
- Linux (Suse, Ubuntu, RedHat, etc.)
- MacOS
- you name it
- What backend databases if any does the tool use?
- MS SQL Server
- Oracle
- PostgreSQL
- SQLite
- MySQL
- MariaDB
- Couchbase
- Cassandra
- You name it
- Are there any specific hardware requirements to cover which would
exceed a standard frontend computer or backend server?
- Memory
- Storage media
- Network type
- Processor power
- Graphic processors
- How about deployment and upgrades?
- Is modular deployment possible?
- Must the tool be uninstalled before upgrading?
- What upgrade procedures do exist? Are these procedures well documented?
- Does upgrades impact configuration, plug-ins, developed add-ons?
- Are automation scripts for silent update/upgrade available, so the tool can be included in any installation automation
- Security
- What security model does the tool use?
- How is the communication secured in the tool?
- Is there any User/Password security?
- Is SSO possible?
- Any external authentication possible? (like PKI)
What I need always to mention: This is not a complete list, this list should help you to ask the right questions which are suitable and important for your company.