21.02.2019 / External resources
Choosing a technology stack and databases for enterprise software development
When starting the development of corporate software, it is important to understand what technology stack can be used to solve the problems of a large enterprise, what key indicators of a software product are important for the customer?
Indeed, the selection of new software by a large enterprise is a rather slow process, with more than 50% of the work done during the prerequisites analysis stage. This is due to the main challenges of the modern world – a high degree of automation and rapid adaptation of processes and systems to the needs of customers and the market. Accordingly, the technologies used in the creation of software must provide high stability, guaranteed continuity over a long period of time, scalability, and, most importantly, repeatability and portability of the infrastructure.
An expert with 20 years of experience in the IT field. Under his leadership, many solutions for business automation have been implemented (including for Altium, Alfabank, Kazakhmys, Visa International)
I will not analyze in detail all the languages and platforms for creating corporate software, but will only touch on my own positive experience of our company, acquired during the development of projects, including Almexoft – Java EE. Indeed, Java EE is used very widely, especially in large companies. One advantage is that the platform consists of a set of standards that guarantee compatibility with earlier versions. Even older J2EE applications will continue to function successfully. This has always been a powerful argument for companies making long-term plans. Applications based on the Java EE API are capable of running on all Java EE servers. Vendor-independent applications allow companies to create future-proof software that is not limited to any particular product. Companies choose Java EE because of the reliability, simplicity, and performance of the platform – the slow execution of programs written in Java is a myth. Modern HTTP servers built in Java are on par with C/C++ implementations in terms of performance (although, admittedly, the memory usage of the former is higher).
A lot in corporate software also depends on the choice of database management system (DBMS).
While all DBMSs perform the same basic task—allowing users to create, edit, and access information stored in databases—the actual process of accomplishing this task varies widely. In addition, the functions and capabilities of each DBMS may differ significantly.
It’s probably worth starting with Oracle (and PL/SQL).
The history of this product dates back to the 1970s, and by now the company of the same name has earned a simply brilliant reputation, becoming the standard of reliability in the corporate database market. The latest version of Oracle is designed for cloud environments and can be hosted on one or more servers, this allows you to manage databases that contain billions of records, and physical data management does not affect access to logical structures. In addition, security in this version is brought to the highest level, because each transaction is isolated from others. Currently, the Oracle DBMS line includes several products that are fully compatible with each other, which makes it possible to find the maximum match for the interests of a corporate customer. Oracle’s only downside may be the high cost of database licensing. However, Oracle is ideal for large organizations that work with huge databases and diverse functions.
One of several shareware popular DBMS options is PostgreSQL.
PostgreSQL is often used to maintain web portal databases. Being one of the first database management systems developed, PostgreSQL is now well developed and allows you to manage both structured and unstructured data. PostgreSQL can be used on most major platforms, including Linux, and does a great job of importing information from other types of databases with its own toolkit. The current version of PostgreSQL is fully compliant with the SQL:2011 standard and offers processing of large amounts of data while increasing the number of concurrent users. PostgreSQL is a free database, so it is suitable for projects with a limited budget.
Another popular DBMS is Microsoft SQL Server (and T-SQL).
First of all, this is a DBMS, the core of which works both on cloud and local servers, while allowing you to combine the types of servers used at the same time. Starting with the release of SQL Server 2016, Microsoft has adapted the product to run on the Linux operating system. One of the unique features of the 2016 version is temporal data support (temporary data support), which allows you to track data changes over time, while dynamic data masking technology (dynamic data masking) ensures that only authorized users will see sensitive data. This product pairs well with other Microsoft products and is ideal for large organizations that already use the Microsoft product line. Among the shortcomings of the product, I can only single out the high cost of licensing and the high resource intensity of the product, which, even with careful performance tuning, can take up all available resources.
MySQL is one of the most popular databases for web applications.
While not a profile system for enterprise software, MySQL is the de facto standard for web servers that run under the Linux operating system. MySQL is a free software package developed and maintained by Oracle Corporation. New versions of MySQL are released regularly, expanding the functionality and improving the security of the DBMS. There are special paid versions designed for commercial use. For commercial customers, an order for new functionality is available. In the free version, the greatest emphasis is placed on speed and reliability, and not on the completeness of the functionality, which can be both an advantage and a disadvantage, depending on the application of the database. The flexibility of the MySQL DBMS is supported by a large number of table types: users can choose between MyISAM tables that support full-text search, and InnoDB tables that support transactions at the level of individual records. The system has a sufficient level of reliability and is ideal for organizations that require a reliable but free database management tool. Unfortunately, only paid support is available for the free version. In addition, you have to spend a lot of time and effort to make MySQL perform simple tasks, while other DBMS do it automatically.
Another free database that has a commercial version is MongoDB.
MongoDB is designed for applications that use both structured and unstructured data. Due to the fact that MongoDB was not originally designed to handle relational data models (although it can), there may be performance issues when trying to use MongoDB in this way. However, MongoDB can do well where other DBMSs are slow or powerless.
Increasingly, column solutions such as Vertica or SAP HANA are used to process gigantic volumes of information.
The latter, for example, supports SQL, OLTP, and OLAP, while the SAP HANA kernel reduces resource requirements through the use of compression. At the same time, data is stored in memory, reducing access time, in some cases significantly. Column solutions are ideal for storing, retrieving, and statistically analyzing information across multiple storage tiers and are indispensable for building enterprise data warehouses (DWHs). The disadvantage is the high cost of licenses, even if we are talking about the cost of expensive corporate software.
An essential role in the success of enterprise software is the ability to move from one database to another, more powerful, in the long term, moving in sync with business development.
The key to this is the Hibernate ORM, which creates an object-relational relationship between the platform code and the DBMS. Due to this, as part of the standard delivery of Almexoft, we provide our customers with the opportunity to choose one of the supported DBMS:
- Microsoft SQL Server
Summarizing what was written above, and relying on my more than 20 years of experience in software development, I would like to bring out the ideal technology stack that our company most often recommends to corporate clients and uses in the Almexoft business process automation and electronic document management system:
- Java EE (AOP, EJB, ORM)
- DBMS Oracle/Postgree
- REST/Thrift API