Vue.js - how to design a scalable architecture?

Vue.js - how to design a scalable architecture?
0

The task arose to rewrite a fairly large legacy project that is now working on angular 1.4.9 and sails (about 170k lines in total, in the database of hundreds of thousands of records).

The project is the admin panel of a company that produces gps devices. Each module is designed to automate the work of different departments, whether it is accounting, logistics, technical support, etc.

Vue was chosen as a framework for the front, because there is enough experience and a somewhat biased sympathy.

Now the issue of architecture is acute. I am for a monolithic architecture, but I have not yet developed large applications.

Colleagues for breaking modules into separate applications, such microservices, or microfronts, as they are often called.

The stumbling blocks are as follows: -In the case of architectural errors or the release of new technologies, it will be easier to rewrite each module individually. A monolith will not allow this.

-There is internal business logic, but there are modules that are used by third-party companies. Any code leak in the wrong hands can result in a collapse for the company. Access to these modules will be by rights, but in the end, in any case, there is one js file assembled. This also leads to the problem of loading a large amount of unnecessary code by a client, to which only one module is available.

As for the last point, so far I have found options with asynchronous components and webpack configuration. But so far I have no idea how to apply this in practice (yes, I didn’t touch the webpack configuration before).

Of the solutions that have fallen into the eyes - Nuxt and single-spa, but these same solutions, in turn, are a weighting and complication of the project, in my opinion.

I’ll make a reservation right away that I’ll hardly have a year of development experience. For most of this year, I worked on the same Legacy and I know all the processes from the inside. Now there is such a wonderful opportunity that I would like to take advantage of, and I want to do everything as close as possible to the ideal.