How can I learn to structure large-scale applications (as a hobbyist)?

I recently found a comment that perfectly described me

People also often fail to understand how to build large applications. Lots of developers are so confused by this, eventually use some sort of framework, such as Backbone.js. This is fine except it doesn’t give them a deep understanding of how to structure an application.

As a hobbyist what can I do to get closer to understanding how to build large-scale apps?

I assume that means learning how to write apps without the help of a framework.

Is it a case of trying to reverse engineer the existing framework? Are the any that are basic to reverse engineer?

(Since backbone, I believe, was one of the first frameworks, is it worth learning? Would it gives me insights to get me closer to understanding how to build large-scale applications?)

The comment says “Lots of developers are so confused by this”, would the comment mean junior devs or regardless of their experience.

Here @rpkamp pointed out for me the layered structure is the common ground that most developers agree on. But the layered structure can be used regardless of framework or not IMO.

My opinion of framework is that this adds magic and some sort of rigidity order that normally helps you to develop faster. But this magic order may limit you sooner or later. So its about choosing a way to think.

I gave Angular a shot and found it very structured, but this overhead structure gave me an application that was very slow.

If you choose not to use any framework, you have to create your own order and structure. For learning purpose this is the best. But for production it may slow down.

The benefits of frameworks is that they deal with the non-glamorous functions and allow developers to concentrate on the business and presentation layers.

The consequence of that is the overhead. There may be (and often does have) functionality which you will NEVER use. It will also often make more trips across the different layers due to the generic aspect of some of the code.

The other aspect to think of is security. Using a framework will require you to ensure you keep up with all patches that are released for the framework on TOP of any patching you do just for your site. Because if you use a common framework, then you may be a target for the blackhats that look for framework installations with newly discovered security holes.

Read the Layered Structure link that @sibertius shared. It’s a good starter for building apps that are scaleable. The trick is to ensure you’re putting like minded pieces together. Audio/Visual pieces go in the presentation layer. Rules/Filters/etc go in the business layer, CRUD and query operations go in the data layer (which can be broken down to being db agnostic but is probably the least of the worries for now)