Solving The Scalability Problem: How to Choose Software That Adapts To Your Company’s Growth
By: Sergey Borzenkov
Tags: Small Business, Scalability, Web Development, Enterprise Software, Infrastructure

Image credit: Pexels

Finding software for a small business can be tricky, but is still manageable. Yet supporting further growth is where the real problems begin. Today we will talk about common enterprise software scalability issues, and provide tips on how to overcome them.

Growth issues

There are several potential software-related problems any company could face during its growth. First of all are performance issues. Very often the software works well for, say, 15 users, but significantly slows down when this number grows to 50.

Also, the more new employees come aboard, the more system requirements increase. You need to segment data and usage rights to provide a high level of security while keeping the tool simple for users. Very often, business software lacks customization opportunities, which leads to a situation where users see data which is not relevant to their working tasks, or which can’t be assigned permissions for roles or individual users.

Finally, there are unpredictable costs that may occur when you decide to scale up your system. Many vendors sell additional software modules for solving the tasks that arise during business growth. Such an approach makes it hard to plan the IT budget, as it is hard to know what features you will need beforehand.

Moreover, not all systems are developed with scaling in mind (for example, the software may lack the support of a DBMS), so it might be impossible to significantly expand the number of users.

How to avoid these problems

You can avoid many problems by choosing highly scalable software from the beginning. Here is how to identify such tools.

Built-in scalability options

If your company today is about 5–7 people, ask your vendor what options their solution will have when you grow to 15–20 employees and open a couple of new offices. If these offices are present in remote locations, employees won’t be able to physically use the same database, and the connection may be unstable.

In comparison, the 1C:Enterprise platform has several modes of operation and working when it comes to databases. The first of them is suitable for SMBs (file mode) and the client-server mode, while the distributed database is perfect for large companies with multiple points of presence.

Performance-optimization capabilities

Another crucial factor in the assessment process is what performance-optimization capabilities the software solution has to offer. The product needs to have several optimization techniques implemented so that you can be sure that performance will not decline as you add new users to the system.

For example, the 1C:Enterprise platform has automatic built-in features for performance optimization:

Controllable transaction locks . This mode can be used to manage data locks in transactions which allow several users to work with the same set of data simultaneously.

. This mode can be used to manage data locks in transactions which allow several users to work with the same set of data simultaneously. Server-side data processing . The client-server architecture allows moving the most resource-intensive operations and handling to the server. The client computer only receives the final result. As a result, the company does not have to purchase a lot of powerful client computers, and it needs just one good server.

. The client-server architecture allows moving the most resource-intensive operations and handling to the server. The client computer only receives the final result. As a result, the company does not have to purchase a lot of powerful client computers, and it needs just one good server. Data cacheing . Data objects accessed during operations may be recorded to the cache located in the RAM. All subsequent requests to these objects will be directed to the cache, rather than the database itself. This will reduce the waiting time for data retrieval and increase the speed of work.

. Data objects accessed during operations may be recorded to the cache located in the RAM. All subsequent requests to these objects will be directed to the cache, rather than the database itself. This will reduce the waiting time for data retrieval and increase the speed of work. Server-generated UI . All UI elements are generated at the server and then sent to the client machine, which speeds up communication.

. All UI elements are generated at the server and then sent to the client machine, which speeds up communication. Scalable development. The system supports simultaneous development by several programmers using built-in storage, and uses a Version Control System (VCS), like GIT.

Customizable UI

The requirements applied to the system will change during its lifetime in the company. You will add new users, roles and data, and will have to implement flexible-data-access policies. To make interactions with the solutions more efficient and faster, the system should provide UI customization capabilities.

If all users or members of a particular group of users can only see the same interface, this might slow down processes as even within one department employees might need to access different data in different ways.

For example, not all users should have access to financial documents. While the sales manager needs to work with the CRM and issue sales receipts, the storekeeper who controls the stock balances does not require access to the CRM or financial software. To implement such restrictions you need to set up roles and hide documents from particular users.

In 1C:Enterprise-based applications you can change the UI elements for different users depending on their role and permissions. You can use the predefined user roles and modify them according to your organization’s needs.

Final thoughts

It is crucial to consider scalability at the initial implementation stage of software tools. Moving from one company size to another should not require the purchase of additional, costly modules, or the need to make significant infrastructure changes. The system should be easy-to-learn, have customizable UI, and support a wide range of third-party apps like DBMS systems.