Web innovation-SQL Driven management as a new approach to web development
The history of Falcon - the main prerequisites for creating a business application platform
In this short essay I will tell you how we came up with the idea of creating Falcon Space.
is long, expensive, errors
Initially, we made custom development projects using the full development stack. That is, you need to write a Technical Specification with layouts, set up the appearance, and implement a database, then write the backed code, then the frontend code, all this must be integrated with each other. It's quite long, expensive and tedious. Many errors often came out during implementation.
Finished product - no flexibility
Of course, we considered the option of using ready-made boxed solutions, but in most cases, the customer the customer needs customization and flexibility, and ready-made solutions rarely provide this opportunity. So we That's why we took our project template with some ready-made modules as a basis and created a project based on it.
Fullstack development issues
Also, working on the full development stack had 2 negative factors.
It is difficult to create a programmer
First, it was very difficult to grow a full stack programmer. You need to know a lot of technologies at once and it takes time, to become a good fullstack developer. For this purpose, we have organized a free course on our stack and so we trained people and looked at them to find suitable candidates.
a memory and processor leak
The second unpleasant point is that it is very easy to create problematic code when the work goes all over the stack developments. These can be optimization problems, or an implicit business logic error, or a lack of rights checks. It is necessary to constantly monitor that no one missed anything on the code.
I was also concerned that I couldn't save the code base. Yes, there were components of the General appointments. But at the same time, there was often a situation that some standard functionality was being done on projects, which was already implemented in another project, but it was not so easy to extract it from there because of high connectivity with the project.
No ready-made solutions - no growth
Birth of an idea
Development - in the office,
business logic - in SQL
All these factors have prompted us to look for new ways to develop our system. Gradually the idea was formed to make a solution that can be assembled from blocks, and this requires minimum knowledge of technology. It must be possible to increase functions indefinitely the system.
At the same time, it is very desirable that possible errors and subsequent debugging are reduced at a minimum. I wanted to simplify development as much as possible to minimize errors. The key requirement is speed. A slow-thinking system causes rejection in the user. The rate of pages output, the speed of development, speed of development of functionality.
Finally came up with the idea.
What if the developer can fully work from the management Cabinet? What if he can not only change the content,but also develop the capabilities of the SQL-based system without external tools like Visual Studio and without compilation?
SQL is cool!
We decided to use the SQL language as the basis for the future system. All business logic is implemented in SQL. This is good for the following reasons:
The client does nothingwith his own hands
Of course, you can argue that not every client can do something on SQL. But this is not required from the client . He has a familiar office with its typical simple operations. By experience, everything that concerns changes in the system is better done by specialists. The client does not need to delve into the technical details of the system.
95%development is a typical routine
95% of the time, the developer doesn't create anything new. The developer makes some forms, tables, implements button operation. We made it so that he only needs to think about key points, such as data structure and business logic. The system takes care of everything else, which significantly reduces development time and risk of making an error.
The creation of standard elements
speeded up by 7 times!
We identified the basic development needs and found opportunities to change the behavior of the component and we implemented it! As a result, the development time of any table or form has been reduced by more than 5-7 times! If earlier the implementation of the table could take 5-7 hours, now it is possible do it in less than 1.5 hours.
A more advanced customer who knows and loves the SQL language can independently determine how to evolve the system for their needs. There is documentation for all components and the system as a whole. If you want to actively participate in the development of your system, you can do it. You only need to know SQL and the basics of Bootstrap 4 layout.
difficult to maintain, errors
An extremely important point is that we do not use a universal database, because this will eventually affect the performance, usability, and speed of development. Аnd complexity results in errors.
The idea of a universal database structure is very attractive because it is immutable and does not require writing code for a specific project. But 'ready-made' code is difficult to maintain, because it is usually very complex and has many errors. We want the code to be as simple as possible and easy to change to meet the project's requirements. And so the base in the project should be adapted to the project as much as possible.
And the second is the speed of data processing. The universal structure complicates the application optimization techniques (indexes, type restrictions, etc.). If it works slowly, then you can assume that it doesn't work.
You have to pay for everything
A universal solution is a big decision and the possible problems of optimization
In General , what we have now
What about customization and development?
First level. The main development of the system is done on SQL. You can write almost any business logic, as well as create any table, form, or dashboard.
Third level. For complex non-typical cases, it is possible to create additional modules (classic custom development across the entire stack).
Integration with the outside world
The creation of any API as
XML/JSON HTTPS on SQL
We have implemented the API system so that you can manage it via SQL. You create new API methods. You Implement business logic in SQL for these methods and return the result as JSON or XML.
If you need to integrate with a non-typical external system, such as accessing an external web service, then an additional module is developed for these needs of the project to order.
Our main priority is to make the development process in the system as noise-proof as possible, so that minimize the risk of making errors in the code. To do this, we enter markup snippets, standard blocks and checking the correctness of the data.
speed up the project
The second important area is the creation of standard solutions. In fact, a typical solution is a big one a piece of SQL code that implements the business logic of an entire project subsystem as related components and pages.
And third, integration with the most important external systems: payment gateways, geolocation services, accounting, logistics systems, etc.
That's all for now. If you are interested in our approach to development, or you have questions about system, please write to firstname.lastname@example.org