Backend server system for providing web or app services of different platform domains
Patent Information
- Authority / Receiving Office
- WO ยท WO
- Patent Type
- Applications
- Current Assignee / Owner
- SKYREVE INC
- Filing Date
- 2025-10-27
- Publication Date
- 2026-07-30
Smart Images

Figure KR2025017178_30072026_PF_FP_ABST
Abstract
Description
Backend server system for providing web or app services across different platform domains
[0001] The present invention relates to a backend server system for providing web or app services of different platform domains.
[0002] A web server may transmit a web document stored on the web server for rendering an interface screen as an HTTP response in response to a request for an interface screen from a web client, such as a request for a web service or an HTTP request for a URL regarding a root URL or an index page (home page); in this case, the web server may transmit a web document written in a markup language such as HTML as a resource identified by the corresponding URL by referencing the URL transmitted from the client as an HTTP request. Furthermore, a web browser, as a client-side program, may render the interface screen on the client side from the web document transmitted from the server.
[0003] One embodiment of the present invention provides web or app services of different platform domains from a single backend server or a backend server system including a single backend server that runs on a single operating system while sharing computing resources. Compared to a configuration in which web or app services of different platform domains are implemented on separate servers, this increases the utilization rate of computing resources, allows for processing more URL requests or traffic from the same computing resources, and eliminates inefficient operation of computing resources or waste of computing resources due to securing spare capacity.
[0004] In order to solve the above problems and other problems, the backend server system for providing web or app services of different platform domains according to the present invention is,
[0005] A single backend server for providing web services for different platform domains includes a backend server that identifies the platform domain to which a URL is requested from a namespace configured on a URL requested to the backend server, and executes a server-side method or function associated with a URL mapping registered on each different platform domain.
[0006] According to the present invention, by providing web or app services of different platform domains from a single backend server or a backend server system including a single backend server that runs on a single operating system while sharing computing resources, the utilization rate of computing resources can be increased compared to a configuration in which web or app services of different platform domains are implemented on separate servers, more URL requests or traffic can be processed from the same computing resources, and inefficient operation of computing resources or waste of computing resources due to securing spare capacity can be eliminated.
[0007] FIG. 1 illustrates a diagram schematically explaining a backend server system for providing web services for different platform domains in one embodiment of the present invention.
[0008] FIG. 2 is a simplified model of the backend server system of the present invention illustrated in FIG. 1, illustrating that URL requests for different platform domains are assigned to each platform domain through the Multi-Tenant Routing Module and Logical Layer described above, and that CRUD (create, read, update, delete) operations on data of different platform domains stored in a single database or a single database management system are implemented by executing a server-side method or function according to the assigned URL request to implement interaction with the backend server.
[0009] FIG. 3 illustrates a comparative example that contrasts with the present invention, in which web services of different platform domains are implemented from a backend server provided in the form of a single server, and includes different servers for providing web services of each different platform domain (URL requests regarding each platform domain are transmitted to a server dedicated to each platform domain) and different databases or different database management systems linked to each of the different servers.
[0010] FIG. 4 is a diagram illustrating a scale-out according to an embodiment of the present invention, and illustrates a configuration of scale-out including a load balancer connected in parallel with different backend servers to implement traffic distribution for each backend server, wherein different backend servers connected in parallel with the load balancer each implement web services for the same group of platform domains (distributing and processing URL requests for the same group of platform domains). FIG. 4 illustrates a configuration of scale-out according to the present invention that can increase the utilization rate of computing resources and implement efficient operation of computing resources by including a single database linked with the different backend servers connected in parallel with the load balancer while each backend server connected in parallel with the load balancer implements web services for different platform domains.
[0011] FIG. 5 illustrates a comparative example that includes a dedicated server dedicated to web services for each platform domain and a dedicated database or dedicated database management system linked to the dedicated server, in which the utilization rate of computing resources is low and the waste of computing resources is caused by the inefficient operation of computing resources.
[0012] FIG. 6 is a diagram illustrating a scale-out of a comparative example that contrasts with the present invention. In a scale-out configuration that includes a load balancer connected in parallel with different servers to implement traffic distribution for each server, the diagram illustrates a form in which different backend servers connected in parallel with the load balancer all implement web services for the same single platform domain (distributing and processing URL requests for the same group of platform domains). The diagram illustrates a scale-out configuration of a comparative example in which different servers connected in parallel with the load balancer implement web services for the same single platform domain, resulting in a decrease in the utilization rate of computational resources (CPU, memory, network, etc.) and waste of computational resources due to inefficient operation of computational resources.
[0013] FIGS. 7 and FIGS. 8 each illustrate diagrams for explaining the differences between different hypervisor virtualization technologies and container virtualization technologies, respectively, in contrast to a backend server that implements web services for different platform domains in the form of a single server driven by a single operating system while sharing computing resources in one embodiment of the present invention.
[0014] Figure 9 illustrates a diagram for explaining the structure of a URL request transmitted to a backend server.
[0015] FIG. 10 is a diagram illustrating the structure of a URL request transmitted to a backend server, and illustrates the structure of a URL request in which a namespace is set to identify URL requests regarding different platform domains.
[0016] FIG. 11 illustrates a backend server system according to an embodiment of the present invention, comprising a URL parsing module for identifying a namespace from a URL requested to a backend server side in an embodiment of the present invention, and a URL matching module for connecting the requested URL to a URL mapping registered on a different platform domain according to the namespace identified by the URL parsing module, and calling a URL mapping registered on a controller of a different MVC (model-view-controller) model for implementing a different platform domain from a namespace set on a URL requested to the backend server.
[0017] FIG. 12 illustrates a backend server system according to an embodiment of the present invention, comprising a URL parsing module for identifying a namespace from a URL requested to a backend server side in an embodiment of the present invention, and a URL matching module for connecting the requested URL to a URL mapping registered on a different platform domain according to the namespace identified by the URL parsing module, and calling a URL mapping registered on a URL conf of a different MVT (model-view-template) model for implementing a different platform domain from a namespace set on a URL requested to the backend server.
[0018] Figure 13 illustrates a hash function that establishes a mapping relationship between data and an index regarding the storage location (bucket) of the data from a URL namespace, and a hash table generated from the hash function.
[0019] Figure 14 illustrates a diagram for explaining Redis (remote dictionary server) caching to improve the search performance of a database or database management system.
[0020] FIGS. 15 and 16 are different drawings for explaining memory allocation of a process or thread for executing a server-side method or function associated with a requested URL mapping, illustrating a code area, a data area, and a heap area shared between different threads within the same process, and a stack area allocated for each different thread, and illustrating that the method or function of the process and thread is shared with each other in the code area.
[0021] FIG. 17 illustrates a diagram for explaining the state changes between a ready state, which is loaded into the processor and can be executed immediately according to the processor's scheduling, a run state, which is loaded into the processor and executed, and a blocked state, which is assigned to an I / O process that requires a relatively large amount of time without requiring a large amount of computational resources of the processor.
[0022] FIGS. 18 and 19 illustrate a diagram illustrating context switching according to processor scheduling between process A, which is loaded into the processor and is in a run state, and process B, which is in a ready state and is waiting to be loaded into the processor.
[0023] In order to solve the above problems and other problems, the backend server system for providing web or app services of different platform domains according to the present invention is,
[0024] A single backend server for providing web services for different platform domains includes a backend server that identifies the platform domain to which a URL is requested from a namespace configured on a URL requested to the backend server, and executes a server-side method or function associated with a URL mapping registered on each different platform domain.
[0025] For example, different URL mappings are registered for each platform domain on the backend server.
[0026] For example, the backend server may call server-side methods or functions registered on different platform domains from different URL mappings stored as sets of code with different files or different identifiers based on the namespace set on the URL.
[0027] For example, the above backend servers each include different MVC (model-view-controller) models for implementing different platform domains, and
[0028] Server-side methods or functions associated with URL mappings registered in controllers of different MVC models can be called from the namespace configured on the URL requested by the above backend server.
[0029] For example, the above backend server includes different MVT (model-view-template) models for implementing different platform domains, and
[0030] You can call server-side methods or functions associated with URL mappings registered in the URL conf of different MVT models from the namespace set on the URL requested to the above backend server.
[0031] For example, different MVC or MVT models for implementing different platform domains may share the same computing resources of the backend server and the same database or database management system connected to the backend server.
[0032] For example, the backend server may be implemented as a physically single server that shares the same computational resources, including a processor and memory, for the execution of server-side methods or functions associated with URL mappings registered on different platform domains.
[0033] For example, the single operating system of the above-mentioned backend server is,
[0034] To execute server-side methods or functions associated with URL mappings registered on different platform domains, independent processes or threads, or kernel objects for managing independent processes or threads, are created,
[0035] For the execution of a created process or thread, memory including at least the stack area among the code area, data area, heap area, and stack area can be independently allocated to each process or thread.
[0036] For example, the single operating system of the above-mentioned backend server is,
[0037] As processes or threads created for the execution of server-side methods or functions associated with URL mappings registered on different platform domains transition from the ready state to the run state according to processor scheduling, each process or thread can be loaded onto the processor to execute each process or thread independently for the execution of server-side methods or functions associated with URL mappings registered on different platform domains.
[0038] For example, the above backend server,
[0039] A URL parsing module for identifying namespaces from a URL requested to the backend server side; and
[0040] It may include a URL matching module that matches a requested URL with a URL mapping registered on each different platform domain according to a namespace identified by the above URL parsing module.
[0041] For example, the URL matching module can match the requested URL with the URL mapping registered on the controller of the identified platform domain or the URL mapping registered on the URL conf of the identified platform domain, as a URL mapping stored for the platform domain identified by the URL parsing module.
[0042] For example, the above backend server system,
[0043] A DB connection module for integration between the above-mentioned backend server and a database or database management system, and
[0044] It may further include a database or database management system that is linked to a backend server through the above DB linkage module.
[0045] For example, the above backend server includes different MVC (model-view-controller) models for implementing different platform domains, or different MVT (model-view-template) models for implementing the server side of different platform domains, and
[0046] The above DB integration module is,
[0047] Connects the model classes or object-oriented code of the above MVC or MVT model with tables in a relational database or SQL (structured query language) statements through ORM (object relational mapping),
[0048] The namespace identified from the above URL parsing module can be added to the name of the above model class so that tables regarding different platform domains can be identified from each other.
[0049] For example, the DB connection module can programmatically generate an SQL statement including CRUD (create, read, update, delete) queries for a specific table with a namespace identified by the URL parsing module attached, and transmit it to the database or the database management system.
[0050] For example, the above database or database management system can implement indexing of storage locations to improve the search performance of the database from a namespace added from the DB linkage module.
[0051] For example, the database or database management system may store data to which the namespace is attached at a location indexed by the hash value output from a hash function, using the namespace attached from the DB linkage module as input.
[0052] For example, depending on the namespace added from the above DB linkage module, data of different platform domains can be stored in different storage locations indexed according to the hash value output from a hash function with the namespace as input.
[0053] For example, the above server-side method or function may be stored in the above database or database management system.
[0054] For example, the above server-side method or function is,
[0055] Stored in a database or database management system as a stored procedure or stored function containing a sequence of SQL statements, or,
[0056] It can be stored in a database or database management system in the form of compiled binary code.
[0057] For example, methods, functions, or data of different platform domains can be identified from methods, functions, or data of different platform domains according to the namespace added from the above DB integration module.
[0058] For example, methods, functions, or data of the above different platforms may be stored in different storage locations indexed with different hash values โโor different index values โโthrough a hash function from a namespace added by the DB integration module.
[0059] For example, a namespace set on a URL requested to the backend server side may directly follow a host domain name or host IP address following the protocol of the URL, or directly follow a port number of a communication port following the host domain name or host IP address.
[0060] For example, the backend server system may further include a load balancer connected in parallel with different backend servers to implement traffic distribution for each backend server.
[0061] For example, the above load balancer,
[0062] Traffic allocated to each of the different backend servers can be distributed based on the utilization rate of the computational resources of each of the different backend servers.
[0063] For example, each of the different backend servers can identify the platform domain where the URL was requested from the namespace set on the URL assigned from the load balancer, and execute a server-side method or function associated with a URL mapping registered on each of the different platform domains.
[0064] For example, different backend servers connected in parallel with the load balancer can each provide web services of the same group of platform domains.
[0065] Hereinafter, with reference to the attached drawings, a backend server system for providing web or app services of different platform domains according to an embodiment of the present invention will be described.
[0066] FIG. 1 illustrates a diagram schematically describing a backend server system for providing web services for different platform domains in one embodiment of the present invention. Referring to FIG. 1, a backend server system according to an embodiment of the present invention may include a backend server provided as a single server sharing computational resources and a database or database management system linked with said backend server. It may also include a Multi-Tenant Routing Module and a Logical Layer for assigning multiple URL requests requested to the backend server provided as a single server to their respective corresponding platform domains, and for calling and executing business logic of each platform domain requested for execution through the URL requests. As described below, each Multi-Tenant Routing Module and Logical Layer may correspond to a URL parsing module and a URL matching module, respectively, or may correspond to a logical layer that performs the overall functions of these URL parsing modules and URL matching modules in cooperation. In other words, the Multi-Tenant Routing Module and Logical Layer may cooperate with each other to function as a combination of the URL parsing module and URL matching module described below. For example, each Multi-Tenant Routing Module and Logical Layer may function as a URL parsing module and a URL matching module, respectively, or the Multi-Tenant Routing Module and Logical Layer may cooperate with each other to... It can function as a combination of a parsing module and a URL matching module.In addition, the Data Management Layer, which is responsible for the integration between each different platform domain and the database, is responsible for the integration between the backend server and the database as described below. It can function as a DB integration module that includes an ORM function connecting model classes or object-oriented code with database tables or SQL statements, and a function that adds namespaces so that methods, functions, or data of each platform domain can be identified from one another.
[0067] FIG. 2 is a simplified model of the backend server system of the present invention illustrated in FIG. 1, illustrating that URL requests for different platform domains are assigned to each platform domain through the Multi-Tenant Routing Module and Logical Layer described above, and that CRUD (create, read, update, delete) operations on data of different platform domains stored in a single database or a single database management system are implemented by executing a server-side method or function according to the assigned URL request to implement interaction with the backend server.
[0068] FIG. 3 illustrates a comparative example that contrasts with the present invention, in which web services of different platform domains are implemented from a backend server provided in the form of a single server, and includes different servers for providing web services of each different platform domain (URL requests regarding each platform domain are transmitted to a server dedicated to each platform domain) and different databases or different database management systems linked to each of the different servers.
[0069] FIG. 4 is a diagram illustrating a scale-out according to an embodiment of the present invention, and illustrates a configuration of scale-out including a load balancer connected in parallel with different backend servers to implement traffic distribution for each backend server, wherein different backend servers connected in parallel with the load balancer each implement web services for the same group of platform domains (distributing and processing URL requests for the same group of platform domains). FIG. 4 illustrates a configuration of scale-out according to the present invention that can increase the utilization rate of computing resources and implement efficient operation of computing resources by including a single database linked with the different backend servers connected in parallel with the load balancer while each backend server connected in parallel with the load balancer implements web services for different platform domains.
[0070] FIG. 5 illustrates a comparative example that includes a dedicated server dedicated to web services for each platform domain and a dedicated database or dedicated database management system linked to the dedicated server, in which the utilization rate of computing resources is low and the waste of computing resources is caused by the inefficient operation of computing resources.
[0071] FIG. 6 is a diagram illustrating a scale-out of a comparative example that contrasts with the present invention. In a scale-out configuration that includes a load balancer connected in parallel with different servers to implement traffic distribution for each server, the diagram illustrates a form in which different backend servers connected in parallel with the load balancer all implement web services for the same single platform domain (distributing and processing URL requests for the same group of platform domains). The diagram illustrates a scale-out configuration of a comparative example in which different servers connected in parallel with the load balancer implement web services for the same single platform domain, resulting in a decrease in the utilization rate of computational resources (CPU, memory, network, etc.) and waste of computational resources due to inefficient operation of computational resources.
[0072] FIGS. 7 and FIGS. 8 each illustrate diagrams for explaining the differences between different hypervisor virtualization technologies and container virtualization technologies, respectively, in contrast to a backend server that implements web services for different platform domains in the form of a single server driven by a single operating system while sharing computing resources in one embodiment of the present invention.
[0073] Figure 9 illustrates a diagram for explaining the structure of a URL request transmitted to a backend server.
[0074] FIG. 10 is a diagram illustrating the structure of a URL request transmitted to a backend server, and illustrates the structure of a URL request in which a namespace is set to identify URL requests regarding different platform domains.
[0075] FIG. 11 illustrates a backend server system according to an embodiment of the present invention, comprising a URL parsing module for identifying a namespace from a URL requested to a backend server side in an embodiment of the present invention, and a URL matching module for connecting the requested URL to a URL mapping registered on a different platform domain according to the namespace identified by the URL parsing module, and calling a URL mapping registered on a controller of a different MVC (model-view-controller) model for implementing a different platform domain from a namespace set on a URL requested to the backend server.
[0076] FIG. 12 illustrates a backend server system according to an embodiment of the present invention, comprising a URL parsing module for identifying a namespace from a URL requested to a backend server side in an embodiment of the present invention, and a URL matching module for connecting the requested URL to a URL mapping registered on a different platform domain according to the namespace identified by the URL parsing module, and calling a URL mapping registered on a URL conf of a different MVT (model-view-template) model for implementing a different platform domain from a namespace set on a URL requested to the backend server.
[0077] Figure 13 illustrates a hash function that establishes a mapping relationship between data and an index regarding the storage location (bucket) of the data from a URL namespace, and a hash table generated from the hash function.
[0078] Figure 14 illustrates a diagram for explaining Redis (remote dictionary server) caching to improve the search performance of a database or database management system.
[0079] FIGS. 15 and 16 are different drawings for explaining memory allocation of a process or thread for executing a server-side method or function associated with a requested URL mapping, illustrating a code area, a data area, and a heap area shared between different threads within the same process, and a stack area allocated to each different thread, and illustrating that the methods or functions of the process and the thread are shared in the code area. For example, referring to FIGS. 15 and 16, the code area is shared between a process and a thread (A thread, B thread), and functions (add, minus, divide, multiple) stored in the code area can be called from the process's main function (main) and the thread's main function (A thread main, B thread main).
[0080] FIG. 17 illustrates a diagram for explaining the state changes between a ready state, which is loaded into the processor and can be executed immediately according to the processor's scheduling, a run state, which is loaded into the processor and executed, and a blocked state, which is assigned to an I / O process that requires a relatively large amount of time without requiring a large amount of computational resources of the processor.
[0081] FIGS. 18 and 19 illustrate a diagram illustrating context switching according to processor scheduling between process A, which is loaded into the processor and is in a run state, and process B, which is in a ready state and is waiting to be loaded into the processor.
[0082] Hereinafter, with reference to the attached drawings, a backend server or a backend server system including a backend server capable of providing web services for different platform domains or processing URL requests for different platform domains together will be described according to an embodiment of the present invention. In an embodiment of the present invention, a web service provided by a single backend server or a backend server system including a single backend server as a response to a URL request for multiple different platform domains from a web client may comprehensively refer to a web service or app service implemented through a web browser or a mobile app (browser app) as a subject requesting the service and as a subject rendering a web document received as a response from the backend server in a local area. For example, in an embodiment of the present invention, a web document received from a backend server or a backend server system in response to a URL requested by a web client or an app client may comprehensively refer to any form of document, code, etc. that is received from the backend server or the backend server system and can be rendered by the web client or the app client.
[0083] A backend server (or a backend server system including a backend server) according to one embodiment of the present invention can provide web services of different platform domains independently of each other, and can be implemented from a single backend server provided in the form of a single server that shares computing resources.
[0084] Throughout this specification, the term "platform" or "platform domain" may be interpreted in a broad sense as a system in which various actors participate in a network in a digital space, establish interconnected relationships, and create value. For example, in one embodiment of the present invention, different platforms or platform domains may broadly encompass business models that are operated and managed by different operators, and, for example, are operated and managed with independent business models or policies, and form interfaces with app clients, web clients, or users through apps or the web, such as various e-commerce platforms and search portals.
[0085] A backend server according to one embodiment of the present invention may provide web services of different platform domains together, and in response to a request for a web service of a different platform domain (e.g., a URL request for a different platform domain), it may transmit a web document for rendering an initial interface screen stored in the backend server (e.g., the storage of the backend server) as an HTTP response, such as a URL for a root URL or an index page (home page) as an HTTP request. In this case, the backend server may transmit a web document written in a markup language such as HTML as a resource identified from the corresponding URL by referencing the URL transmitted from the client as an HTTP request. Furthermore, a web browser (or browser app) as a client-side program may render the initial interface screen to the client side from the web document transmitted from the backend server.In one embodiment of the present invention, a web document transmitted from a backend server can be rendered as an interface screen through a web browser, and an application programming interface (API) for data transmission between the client side and the backend server side can be rendered in various forms on the interface screen, and an API that can be expressed in the form of various web components (app components), such as a window for inputting search terms or keywords or a button that can detect click events, such as an icon, can be rendered, and through the API expressed in the form of these various web components, a request from the client side, for example, a request from the client side including data such as member registration information (for example, member registration information expressed as a query string of a URL) or a request from the client side including data such as search keywords (for example, search keywords expressed as a query string of a URL), can be transmitted to the backend server side.
[0086] In one embodiment of the present invention, a web document transmitted from a backend server to a client side to render an interface screen (e.g., a JavaScript code area, on an HTML document) <script> ํญ ๋ด์ ์ฝ๋ ์์ญ) ์์๋ ํด๋น๋๋ ์น ๋ฌธ์๋ก๋ถํฐ ๋๋๋ง๋๋ ์ธํฐํ์ด์ค ํ๋ฉด ์์์ API๋ฅผ ํํํ๋ ์น ์ปดํฌ๋ํธ์ ์ด๋ฒคํธ์ ๋ฐ๋ผ ํธ์ถ๋๋ ํจ์(click) ๋ด์ง๋ ๋ฉ์๋๊ฐ ์คํ๋๋ฉด์ ๋ฐฑ์๋ ์๋ฒ์ ๋ฆฌ์์ค๋ฅผ ์๋ณํ๊ธฐ ์ํ ์ ๋ณด๋ก์, URL(uniform resource identifier)์ด ํฌํจ๋ ์ ์์ผ๋ฉฐ, ํด๋ผ์ด์ธํธ ์ธก์ URL ์์ฒญ์ ์ ์ํ ๋ฐฑ์๋ ์๋ฒ๋, URL ๋งคํ(URL mapping)์ ํตํ์ฌ ํด๋ผ์ด์ธํธ ์ธก์ผ๋ก๋ถํฐ ์์ฒญ๋ ๋ฉ์๋ ๋๋ ํจ์๋ฅผ ์คํํ ์ ์๋ค. ์๋ฅผ ๋ค์ด, URL ์์ฒญ์ ์ ์ํ ๋ฐฑ์๋ ์๋ฒ๋ ๊ฐ๊ฐ ์๋ก ๋ค๋ฅธ ํ๋ซํผ ๋๋ฉ์ธ์ ๊ตฌํํ๋ ์๋ก ๋ค๋ฅธ MVC(model-view-controller) ๋ชจ๋ธ์ ์ปจํธ๋กค๋ฌ(controller)์ ๋ฑ๋ก๋ URL ๋งคํ๊ณผ ์ฐ๊ฒฐ๋ ๋ฉ์๋ ๋ด์ง๋ ํจ์ ๋๋ ๊ฐ๊ฐ ์๋ก ๋ค๋ฅธ ํ๋ซํผ ๋๋ฉ์ธ์ ๊ตฌํํ๋ ์๋ก ๋ค๋ฅธ MVT(model-view-template) ๋ชจ๋ธ์ URL conf์ ๋ฑ๋ก๋ URL ๋งคํ๊ณผ ์ฐ๊ฒฐ๋ ๋ฉ์๋ ๋๋ ํจ์๋ฅผ ์คํํ ์ ์์ผ๋ฉฐ, URL ๋งคํ๊ณผ ์ฐ๊ฒฐ๋ ๋ฉ์๋ ๋ด์ง๋ ํจ์๋ ๋ฐฑ์๋ ์๋ฒ ๋๋ ์๋ฒ ์ธก์ ํ๋ก๊ทธ๋จ ๋๋ ์๋ฒ ์ธก์ script ์ธ์ด์ธ PHP(personal home page), AHP(active home page), JSP(java server page) ๋ฑ์ผ๋ก ์คํ๋ ์ ์์ผ๋ฉฐ, ์คํ๋ ๊ฒฐ๊ณผ๋ฅผ HTML ํํ์ ์น ๋ฌธ์๋ก ๊ฐ๊ณตํ์ฌ ํด๋ผ์ด์ธํธ ์ธก์ ๋ฐํํ ์ ์๊ณ , ๋ณธ ๋ฐ๋ช ์ ๋ค์ํ ์ค์ํํ์์, ์๊ธฐ ๋ฐฑ์๋ ์๋ฒ๋ URL ๋งคํ๊ณผ ์ฐ๊ฒฐ๋ ๋ฉ์๋ ๋๋ ํจ์์ ์คํ ๊ฒฐ๊ณผ๋ก์ ์คํ ๊ฒฐ๊ณผ ์์ฒด๋ฅผ HTML ํํ์ ์น ๋ฌธ์๋ก ๊ฐ๊ณตํ์ฌ ํด๋ผ์ด์ธํธ ์ธก์ ๋ฐํํด์ฃผ๊ฑฐ๋ ๋๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ด์ง๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ด๋ฆฌ ์์คํ (DBMS)๊ณผ์ ์ฐ๋์ ๊ตฌํํ์ฌ, ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ด์ง๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ด๋ฆฌ ์์คํ ์ ์ ๊ทผํ์ฌ SQL(structured query language)๋ก ์์ฑ๋ ์ฟผ๋ฆฌ๋ฅผ ์ ์กํ๊ณ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ด๋ฆฌ ์์คํ ์ ๊ฒ์ ๊ฒฐ๊ณผ ๋๋ ์ฒ๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ ์ ์ํ ์ ์์ผ๋ฉฐ, ์ ์๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ด์ง๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ด๋ฆฌ ์์คํ (DBMS)์ ๊ฒ์ ๊ฒฐ๊ณผ ๋๋ ์ฒ๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ HTML ํํ์ ์น ๋ฌธ์๋ก ๊ฐ๊ณตํ์ฌ ํด๋ผ์ด์ธํธ ์ธก์ ๋ฐํํ๊ฑฐ๋ ๋๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ด์ง๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ด๋ฆฌ ์์คํ (DBMS)์ผ๋ก๋ถํฐ์ ๊ฒ์ ๊ฒฐ๊ณผ๋ก๋ถํฐ ์ฐ์ฐ ์ฒ๋ฆฌ๋ฅผ ์ํํ๊ณ ์ฐ์ฐ ์ฒ๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ HTML ํํ์ ์น ๋ฌธ์๋ก ๊ฐ๊ณตํ์ฌ ํด๋ผ์ด์ธํธ ์ธก์ ๋ฐํํ ์ ์๋ค.
[0087] ๋ณธ ๋ฐ๋ช ์ ์ผ ์ค์ํํ์์ URL ๋งคํ๊ณผ ์ฐ๊ฒฐ๋ ์๋ฒ ์ธก์ ๋ฉ์๋(method)๋ ๋ฉ์๋์ ์คํ ๊ฒฐ๊ณผ๋ก์ ํน์ ํ ์ฐ์ฐ ๊ฒฐ๊ณผ์ ๊ฒฐ๊ณผ๊ฐ์ ๋ฐํ ํ๋ค๊ธฐ ๋ณด๋ค๋, ์๋ฅผ ๋ค์ด, SQL ๊ตฌ๋ฌธ์ ํ๋ก์์ (procedure) ๋๋ SQL ๊ตฌ๋ฌธ์ ํ๋ก์์ ์ ์ํ์ค๋ฅผ ํตํ์ฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ด์ง๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ด๋ฆฌ ์์คํ ์ ๋ํ CRUD(create, read, update, delete)๋ฅผ ๊ตฌํํ๋ ๋ฑ๊ณผ ๊ฐ์ ๋์์ ์ ์ํ ์ ์์ผ๋ฉฐ, ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ด์ง๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ด๋ฆฌ ์์คํ ์ ๋ํ read, write ๋์์ ๊ตฌํํ ์ ์๊ณ , ์ด์ ๋ฐ๋ผ ๋ฉ์๋์ ์คํ ๊ฒฐ๊ณผ๋ก์ ํน์ ํ ์ฐ์ฐ ๊ฒฐ๊ณผ์ ๊ฒฐ๊ณผ๊ฐ์ ๋ฐํํ์ง ์์ ์ ์์ผ๋ฉฐ(์คํ ๊ฒฐ๊ณผ์ ๋ฐํ์ด ํ์๊ฐ ์๋), ์ด์ ๋ฌ๋ฆฌ, ๋ณธ ๋ฐ๋ช ์ ์ผ ์ค์ํํ์์ URL ๋งคํ๊ณผ ์ฐ๊ฒฐ๋ ์๋ฒ ์ธก์ ํจ์๋ ํจ์์ ์คํ ๊ฒฐ๊ณผ๋ก์ ํน์ ํ ์ฐ์ฐ ์ฒ๋ฆฌ์ ๋ฐ๋ฅธ ๊ฒฐ๊ณผ๊ฐ์ ๋ฐํํ๋ ๊ฒ์ด ์๊ตฌ๋ ์ ์๋ค(์คํ ๊ฒฐ๊ณผ์ ๋ฐํ์ด ํ์์).
[0088] ๋ณธ ๋ฐ๋ช ์ ์ผ ์ค์ํํ์ ๋ฐ๋ฅธ ๋ฐฑ์๋ ์๋ฒ๋, ํด๋ผ์ด์ธํธ ์ธก์ผ๋ก๋ถํฐ ์ ์ก๋ http request๋ฅผ ์์ ํ๊ณ ํด๋ผ์ด์ธํธ ์ธก์ผ๋ก๋ถํฐ ์์ฒญ๋ URL์ ์ ์ฅ๋ HTML, CSS, JavaScript ๋ฑ์ผ๋ก ์์ฑ๋ ์น ๋ฌธ์๋ฅผ ํด๋ผ์ด์ธํธ ์ธก์ผ๋ก ์ ์กํ์ฌ ์ปจํ ์ธ (ํ ์คํธ, ์ด๋ฏธ์ง ๋ฑ)๊ฐ ํํ๋ ์ธํฐํ์ด์ค ํ๋ฉด์ ๊ตฌํํ๋ ๋ฑ๊ณผ ๊ฐ์ด ์ฃผ๋ก ์ ์ ์ธ ์น(static web) ๋๋ ์ ์ ์ธ ์น ํ๋ฉด์ ๊ตฌํํ๊ธฐ ์ํ ์น ์๋ฒ(HTML)์, ์๊ธฐ ์น ์๋ฒ๊ฐ ์ฒ๋ฆฌํ์ง ๋ชปํ๋ ๋์ ์ธ ์น(dynamic web) ๋๋ ๋์ ์ธ ์น ํ๋ฉด์ ๊ตฌํํ๊ธฐ ์ํ ๊ฒ์ผ๋ก, ๋ค์ํ business logic์ ์คํ๊ณผ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ์ฐ๋์ ๋ด๋นํ๋ ์๋ฒ ์ธก์ ํ๋ก๊ทธ๋จ ๋๋ ์๋ฒ ์ธก์ script ์ธ์ด๋ก์ PHP, AHP, JSP๋ก ์์ฑ๋ ๋ฉ์๋ ๋๋ ํจ์๋ฅผ ์คํํ๋ ์น ์ดํ๋ฆฌ์ผ์ด์ ์๋ฒ(WAS, Web Application Server, PHP, AHP, JSP)๋ฅผ ํฌํจํ ์ ์์ผ๋ฉฐ, ์๋ฅผ ๋ค์ด, ์๊ธฐ ์น ์ดํ๋ฆฌ์ผ์ด์ ์๋ฒ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ด์ง๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ด๋ฆฌ ์์คํ ๊ณผ์ ์ฐ๋(SQL ๊ตฌ๋ฌธ์ ํตํ ์ฐ๋ ๋๋ ํ์ ํ๋ ๋ฐ์ ๊ฐ์ด, ORM์ ํตํ ์ฐ๋)์ผ๋ก๋ถํฐ DDL(Data Definition Language), DML(Data Manipulation Language), TCL(Transaction Control Language) ๋ฑ์ SQL(Structured Query Language) ๊ตฌ๋ฌธ์ ํ๋ก๊ทธ๋จ์ ์ผ๋ก ์์ฑํ๊ณ ๊ด๋ จ๋ ๋ฐ์ดํฐ ์ฒ๋ฆฌ๋ฅผ ์ํํ๋๋ก ํ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ด์ง๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ด๋ฆฌ ์์คํ ์ ํด๋ผ์ด์ธํธ ์ธก์ ํ์ฑํ ์ ์๋ค.
[0089] ํ์ ํ๋ ๋ฐ์ ๊ฐ์ด, ๋ณธ ๋ฐ๋ช ์ ์ผ ์ค์ํํ์์, ์๊ธฐ ๋ฐฑ์๋ ์๋ฒ๋, ํด๋ผ์ด์ธํธ ์ธก์ URL ์์ฒญ์ผ๋ก๋ถํฐ URL์ ๋ค์ ์คํ์ด์ค์ ๊ธฐ๋ฐํ์ฌ, URL์ด ์์ฒญ๋ ํ๋ซํผ ๋๋ฉ์ธ์ ์๋ณํ ์ ์์ผ๋ฉฐ, ์๋ณ๋ ํ๋ซํผ ๋๋ฉ์ธ ์์ ์ ์ฅ๋ ์น ๋ฌธ์๋ฅผ ์ ์กํ์ฌ ์ ์ ์ธ ์น์ ๊ตฌํํ๊ฑฐ๋ ๋๋ ์๋ณ๋ ํ๋ซํผ ๋๋ฉ์ธ ์์์ URL ๋งคํ๊ณผ ์ฐ๊ฒฐ๋ ๋ฉ์๋ ๋๋ ํจ์๋ฅผ ์คํํ์ฌ ๋์ ์ธ ์น์ ๊ตฌํํ ์ ์์ผ๋ฉฐ, ๋ณธ ๋ฐ๋ช ์ ์ผ ์ค์ํํ์ ๋ฐ๋ฅธ ๋ฐฑ์๋ ์๋ฒ๋ ์ ์ ์ธ ์น ๋ฐ ๋์ ์ธ ์น์ ๊ตฌํํ๋ค๋ ์ ์์ ์น ์๋ฒ ๋ฐ ์น ์ดํ๋ฆฌ์ผ์ด์ ์๋ฒ๋ฅผ ํฌํจํ๋ค๊ณ ํ ์ ์๊ณ , ์ด๋ฌํ ๊ตฌ๋ถ์ ๋ฌผ๋ฆฌ์ ์ธ ๋ถ๋ฅ ๋ผ๊ธฐ ๋ณด๋ค๋ ๋ ผ๋ฆฌ์ ์ธ ๋ถ๋ฅ์ ํด๋น๋ ์ ์์ผ๋ฉฐ, ๋ณธ ๋ฐ๋ช ์ ์ผ ์ค์ํํ์์๋ URL ์์ ๋ค์ ์คํ์ด์ค๋ฅผ ์ค์ ํ๊ณ URL์ ๋ค์ ์คํ์ด์ค์ ๊ธฐ๋ฐํ์ฌ URL์ด ์์ฒญ๋ ํ๋ซํผ ๋๋ฉ์ธ์ ์๋ณํ๊ณ (URL ํ์ฑ ๋ชจ๋), ์๋ณ๋ ํ๋ซํผ ๋๋ฉ์ธ ์์ ์ ์ฅ๋ ์น ๋ฌธ์(HTML)๋ฅผ ์ ์กํ๊ฑฐ๋(์ ์ ์ธ ์น) ๋๋ ์๋ณ๋ ํ๋ซํผ ๋๋ฉ์ธ ์์ ์ค์ ๋ URL ๋งคํ์ ํธ์ถํ๊ณ (URL ๋งค์นญ ๋ชจ๋), URL ๋งคํ๊ณผ ์ฐ๊ฒฐ๋ ๋ฉ์๋ ๋๋ ํจ์๋ฅผ ์คํํ์ฌ ์คํ๋ ๊ฒฐ๊ณผ๋ฅผ ์น ๋ฌธ์(HTML)๋ก ๊ฐ๊ณตํ์ฌ ์ ์กํ๋ค๋ ์ (๋์ ์ธ ์น)์์, ํต์์ ์ผ๋ก ์น ์๋ฒ์ ์น ์ดํ๋ฆฌ์ผ์ด์ ์๋ฒ๋ฅผ ํฌํจํ๋ ์๋ฒ์ ๊ตฌ์ฑ๊ณผ๋ ๋ค๋ฅผ ์ ์๋ค.
[0090] ๋ณธ ๋ฐ๋ช ์ ์ผ ์ค์ํํ์ ์ํ๋ฉด, ์ฐ์ฐ ์์์ ๊ณต์ ํ๋ฉด์ ํ๋์ ๋จ์ผ ์ด์์ฒด์ ์ ์ํด ๊ตฌ๋๋๋ ํ๋์ ๋จ์ผ ๋ฐฑ์๋ ์๋ฒ๋ก๋ถํฐ ์๋ก ๋ค๋ฅธ ํ๋ซํผ์ ์น ์๋น์ค๋ฅผ ๊ตฌํํ ์ ์์ผ๋ฉฐ, ๋จ์ผ ๋ฐฑ์๋ ์๋ฒ๋ก๋ถํฐ ์๋ก ๋ค๋ฅธ ํ๋ซํผ ๋๋ฉ์ธ์ ๊ดํ URL ์์ฒญ์ ์ฒ๋ฆฌํ ์ ์๋ค. ๋ณธ ๋ฐ๋ช ์ ์ผ ์ค์ํํ์ ๋ฐ๋ฅธ ๋ฐฑ์๋ ์๋ฒ๋, ํ๋์ ์ด์ ์ฒด์ (OS, Operating system) ์์์ ๊ตฌ๋๋๋ ์ปดํจํ ์์์ ์๋ฏธํ ์ ์์ผ๋ฉฐ, ์ฌ๊ธฐ์ ์ด์ ์ฒด์ ๋ ๋ฐฑ์๋ ์๋ฒ์ ํ๋์จ์ด๋ก์, CPU, ๋ฉ๋ชจ๋ฆฌ, storage ๋ฑ๊ณผ, ์๊ธฐ ๋ฐฑ์๋ ์๋ฒ ์ธก ์์ฉ ํ๋ก๊ทธ๋จ(์ํํธ์จ์ด)์ ์คํํ๊ณ ์ ์ฒด์ ์ผ๋ก ๊ด๋ฆฌํ ์ ์์ผ๋ฉฐ, ์๋ฅผ ๋ค์ด, ์คํ ์ค์ธ ํ๋ก๊ทธ๋จ์ธ ํ๋ก์ธ์ค์ ๊ด๋ฆฌ(์ด๋ค ํ๋ก์ธ์ค๋ฅผ ๋จผ์ ์ฒ๋ฆฌํ ๊ฒ์ธ์ง์ ๊ดํ process scheduling, ํ๋ก์ธ์ค๋ฅผ ์ด๋ค CPU์ ํ ๋นํ ๊ฒ์ธ์ง์ ๊ดํ processor assignment), ๋ฉ๋ชจ๋ฆฌ์ ๊ด๋ฆฌ(๋ฉ๋ชจ๋ฆฌ์ ํ ๋น)์ ๊ฐ์ด ๋ฐฑ์๋ ์๋ฒ์ ํ๋์จ์ด ๋ฐ ์ํํธ์จ์ด๋ฅผ ์ ์ฒด์ ์ผ๋ก ๊ด๋ฆฌํด์ค ์ ์์ผ๋ฉฐ, ํ๋ก์ธ์ค๊ฐ ์์ฑ๋จ์ ๋ฐ๋ผ CPU์ ์์ ์ ์์ฒญํ๋ ์คํ ๋จ์๋ก์ ์ค๋ ๋(thread)๋ฅผ ์ ๋ฌํ๋ CPU ์ค์ผ์ค๋ง ๋ฑ์ ๋ด๋นํ ์ ์๋ค. ์๋ฅผ ๋ค์ด, ๋ณธ ๋ฐ๋ช ์ ์ผ ์ค์ํํ์์, ์๊ธฐ ์ด์ ์ฒด์ ๋, Linux, UNIX ๋ฑ์ด ์์๋ ์ ์๋ค.
[0091] ์ด์ ๊ฐ์ด, ๋ณธ ๋ฐ๋ช ์ ์ผ ์ค์ํํ์ ๋ฐ๋ฅธ ๋ฐฑ์๋ ์๋ฒ๋, ํ๋์ ์ด์ ์ฒด์ (OS, Operating system) ์์์ ๊ตฌ๋๋ ์ ์์ผ๋ฉฐ, ๋ 7์ ๋์๋ ๋ฐ์ ๊ฐ์ด, ๋ณธ ๋ฐ๋ช ๊ณผ ๋๋น๋๋ ๊ฐ์ํ ๊ธฐ์ (virtualization, ํ์ดํผ๋ฐ์ด์ ๊ฐ์ํ, ๊ฐ์๋จธ์ )์์๋ ํธ์คํธ ์ด์ ์ฒด์ (ํธ์คํธ OS, host operating system) ์์, ์๋ก ๋ค๋ฅธ ๊ฒ์คํธ ์ด์ ์ฒด์ (๊ฒ์คํธ OS, guest operating system)๊ฐ ๊ฐ๋๋๋ฉด์ ๋ค์์ ๊ฐ์ ๋จธ์ (virtual machine, VM)์ผ๋ก ๋ถํ ๋ ์ ์์ผ๋ฉฐ, ๊ฐ๊ฐ์ ๊ฐ์ ๋จธ์ (virtual machine)์ด ๋ณ๋์ ์๋ฒ์ธ ๊ฒ์ฒ๋ผ ๊ตฌ๋๋ ์ ์๋ ์ปดํจํ ํ๊ฒฝ์ ์ ๊ณตํ ์ ์๋ค. ์ด๋, ๋ค์์ ๊ฒ์คํธ ์ด์ ์ฒด์ (๊ฒ์คํธ OS, guest operating system)๋ ๋ค์์ ๊ฒ์คํธ ์ด์ ์ฒด์ ์ ํ์ํ ์ฐ์ฐ ์์์ ํธ์คํธ ํ๋์จ์ด(Hardware)์์ ํ ๋น๋ฐ์ ์ ๊ณตํด์ฃผ๋ ํ์ดํผ๋ฐ์ด์ (hypervisor)๋ฅผ ํ๋ซํผ์ผ๋ก ํ์ฌ, ํ์ดํผ๋ฐ์ด์ ์ ํ๋ซํผ ์์์ ์คํ๋ ์ ์์ผ๋ฉฐ, ์๊ธฐ ํ์ดํผ๋ฐ์ด์ ๋ CPU, GPU, RAM๊ณผ ๊ฐ์ ์ฐ์ฐ ์์์ ๋ํ ์๋ก ๋ค๋ฅธ ๊ฒ์คํธ ์ด์ ์ฒด์ ์ ์ ๊ทผ ๋ฐฉ๋ฒ์ ํต์ ํ ์ ์๋ค. ์๋ฅผ ๋ค์ด, ๊ฐ๊ฐ์ ๊ฐ์ ๋จธ์ (virtual machine, VM)์๋ ์ดํ๋ฆฌ์ผ์ด์ (๋๋ ํ๋ก๊ทธ๋จ)์ ๊ตฌ๋ ํ๊ฒฝ(runtime)์ ์ ๊ณตํ๋ ๊ฒ์คํธ ์ด์ ์ฒด์ (๊ฒ์คํธ OS, guest operating system)์, ๋ผ์ด๋ธ๋ฌ๋ฆฌ(library, Libs) ๋ฐ ๋ฐ์ด๋๋ฆฌ(binary, Bins)์ ๊ฐ์ด ์ดํ๋ฆฌ์ผ์ด์ (๋๋ ํ๋ก๊ทธ๋จ)์ ์คํ์ ์ํ ํ์ผ์ด ์ค์น๋ ์ ์๋ค. ์ด์ ๊ฐ์ด ๋ณธ ๋ฐ๋ช ๊ณผ ๋๋น๋๋ ๊ฐ์ํ ๊ธฐ์ ์์๋ ํ๋์ ํธ์คํธ ์ด์ ์ฒด์ (ํธ์คํธ OS, host operating system) ์์, ์๋ก ๋ค๋ฅธ ๊ฒ์คํธ ์ด์ ์ฒด์ (๊ฒ์คํธ OS, guest operating system)๊ฐ ๊ฐ๋๋๋ฉด์ ๋ค์์ ๊ฐ์ ๋จธ์ (virtual machine, VM)์ผ๋ก ๋ถํ ๋ ์ ์์ผ๋ฉฐ, ๋ณธ ๋ฐ๋ช ์ ์ผ ์ค์ํํ์์์ ๊ฐ์ด, ํ๋์ ์ด์ ์ฒด์ ์์ ๋ค์์ ์ดํ๋ฆฌ์ผ์ด์ (์๋ฒ ์ธก ์ดํ๋ฆฌ์ผ์ด์ )์ด ๊ตฌ๋๋๋ ๊ฒ๊ณผ๋ ์ฐจ์ด๊ฐ ์๋ค.
[0092] ๋ณธ ๋ฐ๋ช ๊ณผ ๋๋น๋๋ ๋ ๋ค๋ฅธ ๊ธฐ์ ๋ก์, ๋ 8์ ๋์๋ ๋ฐ์ ๊ฐ์ ์ปจํ ์ด๋ ๊ฐ์ํ(container virtualization)์์๋ ๊ฒ์คํธ ์ด์ ์ฒด์ (๊ฒ์คํธ OS, guest operating system)๋ฅผ ์ ์ธํ๊ณ , ์ดํ๋ฆฌ์ผ์ด์ (๋๋ ํ๋ก๊ทธ๋จ)๊ณผ ์ดํ๋ฆฌ์ผ์ด์ (๋๋ ํ๋ก๊ทธ๋จ)์ ์คํ์ ํ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ(library, Libs) ๋ฐ ๋ฐ์ด๋๋ฆฌ(binary, Bins), ๊ธฐํ ๊ตฌ์ฑ ํ์ผ ๋ฑ์ ํจํค์ง๋ก ๋ฌถ์ด ์ดํ๋ฆฌ์ผ์ด์ ์คํ์ ํ์ํ ๋ชจ๋ ํ์ผ๋ง์ ํจํค์งํ ๊ฒฉ๋ฆฌ๋ ์ปดํจํ ํ๊ฒฝ์ผ๋ก, ์ดํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ๋ํ๋ ํ๊ฒฝ์ ๊ฒฉ๋ฆฌํ ์ปจํ ์ด๋(C)๋ก ๋ชจ๋ํ๋ ์ ์๋ค(์ปจํ ์ด๋ ๊ฐ์ํ, container virtualization). ์ด๋, ํธ์คํธ ์ด์ ์ฒด์ (ํธ์คํธ OS, host operating system) ์์ ์ปจํ ์ด๋ ์์ง(Container Runtime)์ ์ค์นํ๊ณ ์๊ธฐ ์ปจํ ์ด๋ ์์ง ์์์ ๊ฐ๊ฐ ์ดํ๋ฆฌ์ผ์ด์ ์ ์คํ์ ํ์ํ ํ์ผ ๋ฑ์ ํ๋๋ก ๋ชจ์ ๋ ๋ฆฝ๋ ์คํ ํ๊ฒฝ์ ์ ๊ณตํ๋ ํ๋์ ๋จ์๋ก ์ปจํ ์ด๋(C, container)๊ฐ ๊ตฌ๋๋ ์ ์๋ค.
[0093] ์ด์ ๊ฐ์ด ๋ณธ ๋ฐ๋ช ๊ณผ ๋๋น๋๋ ์ปจํ ์ด๋ ๊ฐ์ํ ๊ธฐ์ ์ ์์ ๊ฒฉ๋ฆฌ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ๋ ๊ฐ์ํ ๋ฐฉ์์ผ๋ก์, ํ๋์ ํธ์คํธ ์ด์ ์ฒด์ (ํธ์คํธ OS, host operating system)์ ์์์ ๋ค์์ ์ปจํ ์ด๋(C) ๊ฐ์ ๋ถ๋ฆฌํ๊ณ ๊ฐ๊ฐ์ ์ปจํ ์ด๋(C)๊ฐ ๋ ๋ฆฝ์ ์ผ๋ก ์๋ํ ์ ์๊ฒ ํ ๊ฒ์ผ๋ก, ์ด๋ฅผ ํตํ์ฌ ์ปจํ ์ด๋(C)๋ ๋ณ๋์ ์คํ ํ๊ฒฝ์ ๊ฐ์ง ์ ์์ผ๋ฉฐ, ๋ค๋ฅธ ์ปจํ ์ด๋(C)์ ์๋์ ์ํฅ์ ์ฃผ๊ฑฐ๋ ๋ฐ์ง ์์ ์ ์๋ค. ์ด๋ฌํ ์ปจํ ์ด๋ ๊ฐ์ํ ๊ธฐ์ ์์ ์ปดํจํ ์์ ๋ด์ง๋ ์ฐ์ฐ ์์์ ๊ฐ๊ฐ์ ์๋ก ๋ค๋ฅธ ์ดํ๋ฆฌ์ผ์ด์ ๋๋ ์๋ก ๋ค๋ฅธ ํ๋ก๊ทธ๋จ์ด ๋ ๋ฆฝ์ ์ผ๋ก ๊ตฌ๋๋ ์ ์๋ ์ปดํจํ ํ๊ฒฝ์ ์ ๊ณตํ๋ ๊ฐ๊ฐ์ ๊ฐ์ ๋จธ์ ๋๋ ๊ฐ๊ฐ์ ์ปจํ ์ด๋(C)์ ํ ๋น๋ ์ฐ์ฐ ์์ ๋ด์ง๋ ๋ฆฌ์์ค๋ก์, CPU, GPU, RAM(memory), storage ๋ฑ์ ์ฐ์ฐ ์์์ ์๋ฏธํ ์ ์๋ค. ์ด๋ฌํ ์ค์ํํ์์์ ๋ฌ๋ฆฌ, ๋ณธ ๋ฐ๋ช ์ ์ผ ์ค์ํํ์์ ์๊ธฐ ๋ฐฑ์๋ ์๋ฒ๋ ๋ค์์ ์๋ฒ ์ธก ํ๋ก๊ทธ๋จ(์๋ฅผ ๋ค์ด, ์๋ก ๋ค๋ฅธ ํ๋ซํผ ๋๋ฉ์ธ ์์ ์ค์ ๋ ์๋ฒ ์ธก์ ๋ฉ์๋ ๋๋ ํจ์)์ด ํ๋์ ์ด์ ์ฒด์ ์์์ ๊ตฌ๋๋๋ฉด์ CPU, GPU, RAM ๋ฑ์ ์ปดํจํ ์์ ๋ด์ง๋ ์ฐ์ฐ ์์์ ๊ณต์ ํ ์ ์๋ค๋ ์ ์์, ์์ ์ค๋ช ๋ ๋ฐ์ ๊ฐ์ ํ์ดํผ๋ฐ์ด์ ๊ฐ์ํ ๊ธฐ์ (๋ 7 ์ฐธ์กฐ)์ด๋ ์ปจํ ์ด๋ ๊ฐ์ํ ๊ธฐ์ (๋ 8 ์ฐธ์กฐ)๊ณผ๋ ์ฐจ์ด๊ฐ ์์ ์ ์๋ค.
[0094] ๋ณธ ๋ฐ๋ช ์ ์ผ ์ค์ํํ์์, ์๊ธฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ด์ง๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ด๋ฆฌ ์์คํ ์ ๋ฐฑ์๋ ์๋ฒ๊ฐ ๊ตฌ์ถ๋ ๋ก์ปฌ ์์ญ์ ์ฐ๊ฒฐ๋๊ฑฐ๋ ๋๋ ๋ฌด์ ํต์ ๋ง์ ํตํ์ฌ ๋ฐฑ์๋ ์๋ฒ์ ํต์ ๊ฐ๋ฅํ๊ฒ ์ฐ๊ฒฐ๋ ์๋ ์๋ค. ๋ณธ ๋ฐ๋ช ์ ์ผ ์ค์ํํ์์, ์๊ธฐ ๋ฐฑ์๋ ์๋ฒ๋, ์๋ก ๋ค๋ฅธ ํ๋ซํผ ๋๋ฉ์ธ์ ์น ์๋น์ค๋ฅผ ๋จ์ผ ์๋ฒ๋ก๋ถํฐ ๊ตฌํํ ์ ์์ผ๋ฉฐ, ์๋ฅผ ๋ค์ด, ํ๋์ ์ด์ ์ฒด์ ์์์ ์๋ก ๋ค๋ฅธ ์ดํ๋ฆฌ์ผ์ด์ (๋๋ ํ๋ก๊ทธ๋จ, ๋๋ ์๋ก ๋ค๋ฅธ ํ๋ซํผ ๋๋ฉ์ธ ์์ ์ค์ ๋ ์๋ฒ ์ธก์ ๋ฉ์๋ ๋๋ ํจ์) ๋ฐ ๋ฐ์ดํฐ๊ฐ CPU, GPU, RAM(memory), storage ๋ฑ์ ์ฐ์ฐ ์์์ ๊ณต์ ํ๋ ๋จ์ผ ์๋ฒ๋ก ๊ตฌํ๋ ๋ฐฑ์๋ ์๋ฒ๋ฅผ ํตํ์ฌ ์คํ๋๊ฑฐ๋ ๋๋ ์ ์ฅ๋๋ฉด์, ๋ค์์ ํ๋ซํผ ๋๋ฉ์ธ์ ๋ํ ํด๋ผ์ด์ธํธ ์ธก์ ์์ฒญ(์๋ฅผ ๋ค์ด, ํด๋ผ์ด์ธํธ ์ธก์ผ๋ก๋ถํฐ ์ ์ก๋๋ URL ์์ฒญ)์ ์๋ณํ ํ์๊ฐ ์์ผ๋ฉฐ, ํด๋ผ์ด์ธํธ ์ธก์ผ๋ก๋ถํฐ ์ ๋ฌ๋๋ ํ๋ผ๋ฉํ(์๋ฅผ ๋ค์ด, ํด๋ผ์ด์ธํธ ์ธก์ผ๋ก๋ถํฐ ์ ์ก๋๋ URL์ ์ฟผ๋ฆฌ ์คํธ๋ง์ key-value์ ์)๋ก๋ถํฐ ๋ฐฑ์๋ ์๋ฒ ๋๋ ๋ฐฑ์๋ ์๋ฒ์ ์ฐ๊ฒฐ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ด๋ฆฌ ์์คํ ์ ์์ ๋ด์ง๋ ๊ฒ์์ ์ํ ๋ฐ์ดํฐ๋ฅผ ๊ฐ๊ฐ์ ํ๋ซํผ ๋๋ฉ์ธ์ ๊ดํ ๊ฒ์ผ๋ก ์๋ณํ ํ์๊ฐ ์๊ณ , ์๋ฅผ ๋ค์ด, ๊ฐ๊ฐ์ ํ๋ซํผ ๋๋ฉ์ธ์์ ์ ์ง ๊ด๋ฆฌํ ํ์๊ฐ ์๋ ์๋ก ๋ค๋ฅธ ๋ฐ์ดํฐ๋ฅผ ๋ ๋ฆฝ์ ์ผ๋ก ์ ์ฅ ๊ด๋ฆฌํ ํ์๊ฐ ์์ ์ ์๋ค.
[0095] ๋ณธ ๋ฐ๋ช ์ ์ผ ์ค์ํํ์์, ์ธํฐํ์ด์ค ํ๋ฉด์ ๋๋๋งํ๊ธฐ ์ํ์ฌ ๋ฐฑ์๋ ์๋ฒ๋ก๋ถํฐ ํด๋ผ์ด์ธํธ ์ธก์ผ๋ก ์ ์ก๋๋ ์น ๋ฌธ์(์๋ฅผ ๋ค์ด, JavaScript ์ฝ๋ ์์ญ, HTML ๋ฌธ์ ์์์ <script> ํญ ๋ด์ ์ฝ๋ ์์ญ) ์์๋ ํด๋น๋๋ ์น ๋ฌธ์๋ก๋ถํฐ ๋๋๋ง๋๋ ์ธํฐํ์ด์ค ํ๋ฉด ์์์ API๋ฅผ ํํํ๋ ์น ์ปดํฌ๋ํธ์ ์ด๋ฒคํธ์ ๋ฐ๋ผ ๋ฐฑ์๋ ์๋ฒ ์ธก์ผ๋ก ์์ฒญ๋๋ URL(๋ฐฑ์๋ ์๋ฒ ์ธก์ ์์ฒญํ๋ ๋ฆฌ์์ค์ ์ ์ ์ ๋ณด)์ ํฌํจํ๋ ์ฝ๋ ๋ด์ง๋ ์คํฌ๋ฆฝํธ๊ฐ ํฌํจ๋์ด ์์ ์ ์๋ค. ์๋ฅผ ๋ค์ด, ํด๋ผ์ด์ธํธ ์ธก์ ์ธํฐํ์ด์ค ํ๋ฉด ์์ ํํ๋ ์น ์ปดํฌ๋ํธ์ ์ด๋ฒคํธ์ ๋์ํ์ฌ ํธ์ถ๋๋ ํจ์(์๋ฅผ ๋ค์ด, click, ์๋ ์ฐฝ์ ํ ์คํธ ๋ณ๊ฒฝ ๋ฑ) ๋ด์ง๋ ๋ฉ์๋์๋ ์ด๋ฒคํธ์ ๋์ํ์ฌ ๋ฐฑ์๋ ์๋ฒ์ ์ ์ ์ฃผ์ ๋ด์ง๋ ๋ฐฑ์๋ ์๋ฒ์ ๋ฆฌ์์ค๋ฅผ ์๋ณํ๊ธฐ ์ํ ์ ๋ณด๋ก์, URL(uniform resource identifier)์ด ํฌํจ๋ ์ ์์ผ๋ฉฐ, ์๊ธฐ URL์๋ ํด๋ผ์ด์ธํธ ์ธก์ผ๋ก๋ถํฐ ์น ์๋น์ค๊ฐ ์์ฒญ๋ ํ๋ซํผ ๋๋ฉ์ธ์ ์๋ณํ๊ธฐ ์ํ ๋ค์ ์คํ์ด์ค๊ฐ ์ค์ ๋ ์ ์๋ค. ์๋ฅผ ๋ค์ด, ๋ณธ ๋ฐ๋ช ์ ์ผ ์ค์ํํ์์, ํด๋ผ์ด์ธํธ ์ธก์ ์ธํฐํ์ด์ค ํ๋ฉด ์์์ ๊ตฌํ๋๋ ๋ค์ํ ์น ์ปดํฌ๋ํธ๋ฅผ ๋๋๋งํ๊ธฐ ์ํ์ฌ ๋ฐฑ์๋ ์๋ฒ๋ก๋ถํฐ ํด๋ผ์ด์ธํธ ์ธก์ผ๋ก ์ ์ก๋๋ ์น ๋ฌธ์ ์์๋ ์น ์ปดํฌ๋ํธ์ ์ด๋ฒคํธ ๋ฐ์์์ ๋ฐฑ์๋ ์๋ฒ์ ๋ฆฌ์์ค๋ก ์ ๊ทผํ๊ธฐ ์ํ URL๋ก์ ๋ฐฑ์๋ ์๋ฒ์ ๋๋ฉ์ธ ๋ค์(๋๋ IP ์ฃผ์)์ ํฌํจํ์ฌ ์์ฒญ๋ ๋ฐฑ์๋ ์๋ฒ์ ๋ฆฌ์์ค๋ฅผ ํน์ ํ๊ธฐ ์ํ URL์ ํฌํจํ๋ ์ฝ๋ ๋๋ ์คํฌ๋ฆฝํธ๋ฅผ ํฌํจํ ์ ์๋ค. ๋ 9 ๋ฐ ๋ 10์ ์ฐธ์กฐํ๋ฉด, ์๊ธฐ URL์ http, https, ftp ๋ฑ๊ณผ ๊ฐ์ ํ๋กํ ์ฝ(protocol)๊ณผ, ๋ฃจํธ URL์ ํด๋น๋๋ ํธ์คํธ ๋๋ฉ์ธ ๋ค์(๋๋ IP ์ฃผ์, host)๊ณผ, ๋ฆฌ์์ค์ ๊ณ์ธต์ ์ธ ๊ฒฝ๋ก(resource path)๋ก์, ์๋ฅผ ๋ค์ด, ์๋ก ๋ค๋ฅธ ํ๋ซํผ ๋๋ฉ์ธ์ ์๋ณํ๊ธฐ ์ํ ๋ค์ ์คํ์ด์ค(๋ 10 ์ฐธ์กฐ)์, ๋ค์ ์คํ์ด์ค๋ก ์๋ณ๋ ๊ฐ๊ฐ์ ํ๋ซํผ ๋๋ฉ์ธ ์์์ ์ค์ ๋ URL ๋งคํ ์ ๋ณด, URL pattern)์, key-value์ ์์ผ๋ก ํํ๋๋ ์ฟผ๋ฆฌ ์คํธ๋ง(์ฟผ๋ฆฌ ๋ฌธ์์ด, query)์ ํฌํจํ ์ ์์ผ๋ฉฐ, ์ด๋, ์๊ธฐ URL์ ํฌํจ๋ ๋ฆฌ์์ค์ ๊ณ์ธต์ ์ธ ๊ฒฝ๋ก(resource path)๋ ์์ฒญ๋ URL๊ณผ ์๋ฒ ์ธก์ ์น ๋ฌธ์(HTML ํ์ผ, ์๋ฅผ ๋ค์ด, ์ ์ ์ธ ์น) ๋๋ ์์ฒญ๋ URL๊ณผ ์๋ฒ ์ธก์ ๋ฉ์๋ ๋๋ ํจ์(์๋ฅผ ๋ค์ด, ์๋ฒ ์ธก์ ๊ตฌํ๋ MVC ๋ชจ๋ธ์ controller ํจ์ ๋๋ MVT ๋ชจ๋ธ์์ view ํจ์, ์๋ฅผ ๋ค์ด, ๋์ ์ธ ์น) ์ฌ์ด์ URL ๋งคํ์ ์ํ ์ ๋ณด๋ฅผ ํฌํจํ ์ ์์ผ๋ฉฐ, ํนํ ๋ณธ ๋ฐ๋ช ์ ์ผ ์ค์ํํ์์ ์๊ธฐ ์์ฒญ๋ URL์ ์๋ก ๋ค๋ฅธ ํ๋ซํผ ๋๋ฉ์ธ์ผ๋ก ๋ถ๋ฅ ๋ฐ ํ ๋นํ๊ธฐ ์ํ ๋ค์ ์คํ์ด์ค(name space)๋ฅผ ํฌํจํ ์ ์๋ค. ์๋ฅผ ๋ค์ด, ๋ 10์ ๋์๋ ๋ฐ์ ๊ฐ์ด, ์๊ธฐ ๋ค์ ์คํ์ด์ค๋ ์์ฒญ๋ URL ์์์ ํ๋กํ ์ฝ ๋ฐ ํธ์คํธ ๋๋ฉ์ธ ๋ค์(๋๋ IP ์ฃผ์)์ ํํํ๋ ์ต์์์ ๋๋ ํ ๋ฆฌ์ ํํ๋ ์ ์์ผ๋ฉฐ, ์๋ฅผ ๋ค์ด, ์์ฒญ๋ URL๊ณผ ์๋ฒ ์ธก์ ์น ๋ฌธ์(HTML ํ์ผ) ์ฌ์ด์ URL ๋งคํ์ ์ํ ์ ๋ณด, ๋๋ ์์ฒญ๋ URL๊ณผ ์๋ฒ ์ธก์ ๋ฉ์๋ ๋๋ ํจ์(์๋ฅผ ๋ค์ด, ์๋ฒ ์ธก์ ๊ตฌํ๋ MVC ๋ชจ๋ธ์ controller ํจ์ ๋๋ MVT ๋ชจ๋ธ์์ view ํจ์) ์ฌ์ด์ URL ๋งคํ์ ์ํ ์ ๋ณด๋ฅผ ํฌํจํ๋ ๋ฆฌ์์ค์ ๊ณ์ธต์ ์ธ ๊ฒฝ๋ก(resource path) ์์์ ์ต์์์ ๋๋ ํ ๋ฆฌ์ ํํ๋ ์ ์๋ค.
[0096] ๋ค์ ๋งํ๋ฉด, ๋ณธ ๋ฐ๋ช ์ ์ผ ์ค์ํํ์์, ํด๋ผ์ด์ธํธ์ ๋ฐฑ์๋ ์๋ฒ ๊ฐ์ ๋ฐ์ดํฐ ํต์ ์ ์ํ API(application programming interface)๋ฅผ ํํํ๋ ์น ์ปดํฌ๋ํธ๋ฅผ ๋๋๋งํ๊ธฐ ์ํ ์น ๋ฌธ์ ์์๋ ์น ์ปดํฌ๋ํธ์ ์ด๋ฒคํธ ๋ฐ์์ ํธ์ถ๋๋ ๋ฉ์๋ ๋๋ ํจ์(์๋ฅผ ๋ค์ด, JavaScript ํจ์)์ ์คํ์ ํตํ์ฌ ๋ฐฑ์๋ ์๋ฒ ์ธก์ผ๋ก ์์ฒญ๋๋ ๋ฆฌ์์ค์ URL์ ํน์ ํ๊ธฐ ์ํ ์ฝ๋ ๋ด์ง๋ ์คํฌ๋ฆฝํธ๊ฐ ํฌํจ๋ ์ ์์ผ๋ฉฐ, ์ด๋, ์๊ธฐ URL์๋ ์์ฒญ๋ ๋ฆฌ์์ค๋ฅผ ์๋ก ๋ค๋ฅธ ํ๋ซํผ ๋๋ฉ์ธ์ ๋ฆฌ์์ค๋ก๋ถํฐ ์๋ณํ๊ธฐ ์ํ ๋ค์ ์คํ์ด์ค๊ฐ ์ค์ ๋ ์ ์๋ค(๋ 10 ์ฐธ์กฐ).
[0097] ๋ณธ ๋ฐ๋ช ์ ์ผ ์ค์ํํ์์, ๋ 11 ๋ฐ ๋ 12๋ฅผ ์ฐธ์กฐํ๋ฉด, ์๊ธฐ ๋ฐฑ์๋ ์๋ฒ๋ URL ํ์ฑ ๋ชจ๋์ ํฌํจํ ์ ์์ผ๋ฉฐ, ์๊ธฐ URL ํ์ฑ ๋ชจ๋์ ํด๋ผ์ด์ธํธ ์ธก์ผ๋ก๋ถํฐ ์์ฒญ๋ URL์ ๋ฐ๋ผ ํด๋น๋๋ URL์ ํฌํจ๋ ๋ค์ ์คํ์ด์ค๋ฅผ ๋ถ์ํ๊ณ ๋ถ์๋ ๊ฒฐ๊ณผ์ ๋ฐ๋ผ ํด๋น๋๋ ํ๋ซํผ ๋๋ฉ์ธ์ ์๋ณํ ์ ์๋ค. ๋ 9 ๋ฐ ๋ 10์ ์ฐธ์กฐํ๋ฉด, ์๊ธฐ ๋ฐฑ์๋ ์๋ฒ์ URL ํ์ฑ ๋ชจ๋์, ์์ฒญ๋ URL๋ก๋ถํฐ URL์ ๋ฌธ๋ฒ์ ๋ฐ๋ผ http, https, ftp์ ๊ฐ์ ํ๋กํ ์ฝ์ ํํํ๋ ์ธ๊ทธ๋จผํธ(protocol)์, ์๋ฒ์ ํธ์คํธ ๋ค์(๋๋ ์๋ฒ์ ๋๋ฉ์ธ ๋ค์, ์๋ฒ์ IP ์ฃผ์, ๋ฃจํธ URL)์ ํํํ๋ ์ธ๊ทธ๋จผํธ(host)์, ํต์ ํฌํธ๋ฅผ ํํํ๋ ์ธ๊ทธ๋จผํธ(์๋ต ๊ฐ๋ฅ)์, ์์ฒญ๋ ๋ฆฌ์์ค์ ๊ฒฝ๋ก๋ฅผ ๊ณ์ธต์ ์ผ๋ก ํํํ๋ ์ธ๊ทธ๋จผํธ(resource path)์, key-value์ ์์ ํฌํจํ๋ ์ฟผ๋ฆฌ ์คํธ๋ง์ ํํํ๋ ์ธ๊ทธ๋จผํธ(query)๋ฅผ ์ถ์ถํ ์ ์์ผ๋ฉฐ, ์ฌ๊ธฐ์ ์์ฒญ๋ ๋ฆฌ์์ค์ ๊ฒฝ๋ก๋ฅผ ๊ณ์ธต์ ์ผ๋ก ํํํ๋ ์ธ๊ทธ๋จผํธ(์๋ฅผ ๋ค์ด, ๋ฃจํธ URL์ ํํํ๋ ๋๋ ํ ๋ฆฌ ๋๋ ๋ฆฌ์์ค์ ๊ณ์ธต์ ์ธ ๊ฒฝ๋ก ์์์ ์ต์์์ ๋๋ ํ ๋ฆฌ, resource path)๋ก๋ถํฐ ๋ค์ ์คํ์ด์ค๋ฅผ ์ถ์ถํ๊ณ ์ถ์ถ๋ ๋ค์ ์คํ์ด์ค๋ก๋ถํฐ URL์ด ์์ฒญ๋ ํ๋ซํผ ๋๋ฉ์ธ์ ์๋ณํ ์ ์๋ค.
[0098] ๋ 11 ๋ฐ ๋ 12๋ฅผ ์ฐธ์กฐํ๋ฉด, ๋ณธ ๋ฐ๋ช ์ ์ผ ์ค์ํํ์ ๋ฐ๋ฅธ ๋ฐฑ์๋ ์๋ฒ๋ URL ๋งค์นญ ๋ชจ๋์ ํฌํจํ ์ ์์ผ๋ฉฐ, ์๊ธฐ URL ๋งค์นญ ๋ชจ๋์ URL(์๋ฅผ ๋ค์ด, URL์ ๊ณ์ธต์ ์ธ ๊ฒฝ๋ก ์์์ ์ต์์ ๊ฒฝ๋ก์ ๋ค์ ์คํ์ด์ค)๊ณผ, ์๊ธฐ URL ํ์ฑ ๋ชจ๋๋ก๋ถํฐ ์๋ณ๋ ํ๋ซํผ ๋๋ฉ์ธ ์์์ ์ ์๋ ๋ฉ์๋ ๋๋ ํจ์(๊ฐ๊ฐ์ ํ๋ซํผ ๋๋ฉ์ธ์ ๊ตฌํํ๋ MVC ๋ชจ๋ธ- Spring์ ์น ํ๋ก๊ทธ๋๋ฐ ํ๋ ์์ํฌ-์์ controller ํจ์ ๋๋ ๊ฐ๊ฐ์ ํ๋ซํผ ๋๋ฉ์ธ์ ๊ตฌํํ๋ MVT ๋ชจ๋ธ-Django์ ์น ํ๋ก๊ทธ๋๋ฐ ํ๋ ์์ํฌ-์์ view ํจ์) ๊ฐ์ URL ๋งคํ, ์๋ฅผ ๋ค์ด, ์์ฒญ๋ URL๊ณผ ์๋ฒ ์ธก์ ๋ฉ์๋ ๋๋ ํจ์ ๊ฐ์ ๋งคํ ๊ด๊ณ๋ฅผ ์ค์ ํ URL ๋งคํ(์๋ฅผ ๋ค์ด, ์น ํ๋ก๊ทธ๋๋ฐ ํ๋ ์์ํฌ์ธ Spring์์ ์ปจํธ๋กค๋ฌ์ ๋ฑ๋ก๋ URL ๋งคํ ๋๋ Django์์ URL conf ์ ๋ฑ๋ก๋ URL ๋งคํ)์ ํธ์ถํ ์ ์๋ค. ์๋ฅผ ๋ค์ด, ๋ณธ ๋ฐ๋ช ์ ์ผ ์ค์ํํ์ ๋ฐ๋ฅธ ๋ฐฑ์ค๋ ์๋ฒ ์ธก์๋ ๊ฐ๊ฐ์ ํ๋ซํผ ๋๋ฉ์ธ ๋ง๋ค ๊ณ ์ ํ URL ๋งคํ์ด ์ค์ ๋ ์ ์์ผ๋ฉฐ, ์๊ธฐ ๋ฐฑ์๋ ์๋ฒ ์ธก์๋ ๊ฐ๊ฐ์ ํ๋ซํผ ๋๋ฉ์ธ ๋ง๋ค ์๋ก ๋ค๋ฅธ URL ๋งคํ(์น ํ๋ก๊ทธ๋๋ฐ ํ๋ ์์ํฌ์ธ Spring์์ ์ปจํธ๋กค๋ฌ์ ๋ฑ๋ก๋ URL ๋งคํ ๋๋ Django์์ URL conf ์ ๋ฑ๋ก๋ URL ๋งคํ)์ด ์ ์ฅ๋์ด ์์ ์ ์๊ณ , ๋ณธ ๋ฐ๋ช ์ ๋ค์ํ ์ค์ํํ์์, ๊ฐ๊ฐ์ ํ๋ซํผ ๋๋ฉ์ธ ์์ ์ค์ ๋ ์๋ก ๋ค๋ฅธ URL ๋งคํ์ ์๋ก ๋ค๋ฅธ ํ์ผ(์๋ฅผ ๋ค์ด, ์๋ก ๋ค๋ฅธ ํ๋ก์ ํธ์ ํ์ผ ๋๋ ์๋ก ๋ค๋ฅธ ์๋ณ์๋ฅผ ๊ฐ๋ ์ฝ๋์ ์งํฉ)๋ก ์ ์ฅ๋์ด ์์ ์ ์๋ค. ์๋ฅผ ๋ค์ด, ๋ณธ ๋ฐ๋ช ์ ๋ค์ํ ์ค์ํํ์์, ์๊ธฐ ๋ฐฑ์๋ ์๋ฒ ์ธก์๋ ๊ฐ๊ฐ์ ํ๋ซํผ ๋๋ฉ์ธ ๋ง๋ค ์ค์ ๋ ์๋ก ๋ค๋ฅธ URL ๋งคํ์ด ์๋ก ๋ค๋ฅธ ํ์ผ(ํ๋ก์ ํธ ๋ ๋ฒจ)๋ก ์ ์ฅ๋์ด ์์ ์ ์์ผ๋ฉฐ, ์๊ธฐ ๋ฐฑ์๋ ์๋ฒ์ URL ๋งค์นญ ๋ชจ๋์ URL ํ์ฑ ๋ชจ๋๋ก๋ถํฐ ์๋ณ๋ ํ๋ซํผ ๋๋ฉ์ธ์ ๊ดํ์ฌ ์ ์ฅ๋ URL ๋งคํ(์๋ฅผ ๋ค์ด, ์๋ณ๋ ํ๋ซํผ ๋๋ฉ์ธ์ ์ปจํธ๋กค๋ฌ ์์ ๋ฑ๋ก๋ URL ๋งคํ ๋๋ ์๋ณ๋ ํ๋ซํผ ๋๋ฉ์ธ์ URL conf ์์ ๋ฑ๋ก๋ URL ๋งคํ)์ ํธ์ถํ ์ ์๋ค. ์๋ฅผ ๋ค์ด, ๋ณธ ๋ฐ๋ช ์ ์ผ ์ค์ํํ์์ URL์ ํฌํจ๋ ๋ค์ ์คํ์ด์ค๋ ์๋ก ๋ค๋ฅธ ํ๋ซํผ ๋๋ฉ์ธ์ ๋ํ ๊ณต๊ฐ์ ์ธ ๊ฒฉ๋ฆฌ๋ฅผ ์ ๊ณตํ๋ค๊ธฐ ๋ณด๋ค๋ ๋ ผ๋ฆฌ์ ์ธ ๊ฒฉ๋ฆฌ๋ฅผ ์ ๊ณตํ ์ ์์ผ๋ฉฐ, ์๋ฅผ ๋ค์ด, URL์ ํฌํจ๋ ๋ค์ ์คํ์ด์ค ์์ฒด๋ก๋ถํฐ ๊ฐ๊ฐ์ ํ๋ซํผ ๋๋ฉ์ธ ์์์ ์ค์ ๋ URL ๋งคํ์ด ์๋ณ๋๋ค๊ธฐ ๋ณด๋ค๋(์๋ฅผ ๋ค์ด, URL์ ๋ค์ ์คํ์ด์ค๋ ๋ฆฌ์์ค๊ฐ ์ ์ฅ๋ ๋ฌผ๋ฆฌ์ ์ธ ํด๋๋ฅผ ๋ํ๋ด๋ context path์๋ ๋ค๋ฆ), URL์ ํ์ฑ(parsing, URL ํ์ฑ ๋ชจ๋)์ ํตํ์ฌ ๊ฐ๊ฐ์ ํ๋ซํผ ๋๋ฉ์ธ ์์์ ์ค์ ๋ URL ๋งคํ์ด ์๋ณ๋๋ ๊ฒ์ด๋ฉฐ, ์๋ฅผ ๋ค์ด, ํด๋ผ์ด์ธํธ ์ธก์ผ๋ก๋ถํฐ ์์ฒญ๋ URL ์์ฒด๋ก๋ถํฐ URL ๋งคํ์ ๊ตฌํํ ์ ์๋, ์๋ฅผ ๋ค์ด, ๋จ์ผ ํ๋ซํผ ๋๋ฉ์ธ์ ์น ์๋น์ค๋ฅผ ๋จ์ผ ์๋ฒ๋ก๋ถํฐ ๊ตฌํํ๋ ๋น๊ต์์์๋ ์ธํฐํ์ด์ค ํ๋ฉด ์์ ํํ๋ ๊ฐ๊ฐ์ ์น ์ปดํฌ๋ํธ์ ์ด๋ฒคํธ ๋ฐ์์ ๋์ํ๋ ์๋ก ๋ค๋ฅธ URL๋ก๋ถํฐ ๊ฐ๊ฐ์ ์๋ฒ ์ธก์ ๋ฉ์๋ ๋๋ ํจ์๋ฅผ ๋งคํ์ํฌ ์ ์์ผ๋ฏ๋ก, ํ๋์ ํ์ผ ๋๋ ํ๋์ ์๋ณ์๋ฅผ ๊ฐ๋ ์ฝ๋์ ์งํฉ์ ํํ๋ก URL ๋งคํ์ด ์ ์ฅ๋ ์ ์์ผ๋, ๊ฐ๊ฐ ๋ ๋ฆฝ์ ์ผ๋ก ์ด์ฉ ๋ฐ ๊ด๋ฆฌ๋๋ ์๋ก ๋ค๋ฅธ ํ๋ซํผ ๋๋ฉ์ธ ์์์ ์๋ก ์ถฉ๋๋ ์ ์๋ URL ์์ ๋ค์ ์คํ์ด์ค๋ฅผ ์ค์ ํ๊ณ URL์ ๋ค์ ์คํ์ด์ค๋ก๋ถํฐ ๊ฐ๊ฐ์ ์๋ก ๋ค๋ฅธ ํ๋ซํผ ๋๋ฉ์ธ ์์ ์ค์ ๋ URL ๋งคํ์ ํธ์ถํ๋ ๋ณธ ๋ฐ๋ช ์ ์ผ ์ค์ํํ์์๋, ๊ฐ๊ฐ์ ํ๋ซํผ ๋๋ฉ์ธ ๋ง๋ค ์๋ก ๋ค๋ฅธ ํ์ผ(ํ๋ก์ ํธ ๋ ๋ฒจ) ๋๋ ์๋ก ๋ค๋ฅธ ์๋ณ์๊ฐ ๋ถ์ฌ๋ ์ฝ๋์ ์งํฉ์ ํํ๋ก URL ๋งคํ์ด ์ ์ฅ๋ ์ ์๋ค. ๋ 9 ๋ฐ ๋ 10์ ์ฐธ์กฐํ๋ฉด, ๋ณธ ๋ฐ๋ช ์ ์ผ ์ค์ํํ์์, URL ์ค์์ http, https, ftp์ ๊ฐ์ ํ๋กํ ์ฝ์ ํํํ๋ ์ธ๊ทธ๋จผํธ(protocol)์, ํธ์คํธ ๋ค์(๋๋ ๋๋ฉ์ธ ๋ค์, IP ์ฃผ์, ๋ฃจํธ URL)์ ํํํ๋ ์ธ๊ทธ๋จผํธ(host)์, ํต์ ํฌํธ๋ฅผ ํํํ๋ ์ธ๊ทธ๋จผํธ(์๋ต ๊ฐ๋ฅ)๋ ๋จ์ผ ๋ฐฑ์๋ ์๋ฒ๋ก๋ถํฐ ์น ์๋น์ค๊ฐ ๊ตฌํ๋๋ ๋ค์์ ํ๋ซํผ ๋๋ฉ์ธ์ ๋ํด ๊ณต์ ๋ ์ ์์ผ๋ฉฐ, ๋ฆฌ์์ค์ ๊ณ์ธต์ ์ธ ๊ฒฝ๋ก๋ฅผ ํํํ๋ ์ธ๊ทธ๋จผํธ(resource path)๋ ์๋ก ๋ค๋ฅธ ๊ฐ๋ฐ์(์๋ก ๋ค๋ฅธ ํ๋ซํผ ๋๋ฉ์ธ์ ๊ฐ๋ฐ์)๋ก๋ถํฐ ์ค์ ๋ ์ ์๋ URL ๋งคํ์ผ๋ก๋ถํฐ ์๋ก ์ถฉ๋๋ ๊ฐ์ฐ์ฑ์ด ์์ผ๋ฏ๋ก, URL์ ๋ค์ ์คํ์ด์ค๋ฅผ ์ค์ ํ๊ณ , ์์ฒญ๋ URL์ ๋ถ์ฌ๋ ๋ค์ ์คํ์ด์ค์ ๋ฐ๋ผ ๊ฐ๊ฐ์ ์๋ก ๋ค๋ฅธ ํ๋ซํผ ๋๋ฉ์ธ ์์์ ์ค์ ๋ URL ๋งคํ์ ํธ์ถํ ์ ์๋ค. ํํธ, ๋ณธ ๋ฐ๋ช ์ ์ผ ์ค์ํํ์์, ์๊ธฐ URL ๋งคํ๊ณผ ์ฐ๊ฒฐ๋ ์๋ฒ ์ธก์ ๋ฉ์๋ ๋๋ ํจ์(๊ฐ๊ฐ์ ํ๋ซํผ ๋๋ฉ์ธ์ ๊ตฌํํ๋ MVC ๋ชจ๋ธ์์ controller ํจ์ ๋๋ ๊ฐ๊ฐ์ ํ๋ซํผ ๋๋ฉ์ธ์ ๊ตฌํํ๋ MVT ๋ชจ๋ธ์์ view ํจ์)๋ URL์ ์ฟผ๋ฆฌ ์คํธ๋ง(query, ๋ 9 ๋ฐ ๋ 10 ์ฐธ์กฐ)์ key-value์ ์์ ์ ๋ฌ ์ธ์๋ก ํ์ฌ, ์ด๋ค ์ ๋ฌ ์ธ์๋ฅผ ์ ๋ ฅ์ผ๋ก ํ์ฌ ์คํ๋ ์ ์๋ค.
[0099] ๋ 11์ ์ฐธ์กฐํ๋ฉด, ๋ณธ ๋ฐ๋ช ์ ์ผ ์ค์ํํ์์, ์๊ธฐ ๋ฐฑ์๋ ์๋ฒ๋, ๊ฐ๊ฐ์ ์๋ก ๋ค๋ฅธ ํ๋ซํผ ๋๋ฉ์ธ ๋ง๋ค ์๋ก ๋ค๋ฅธ MVC(model-view-controller) ์ํคํ ์ฒ(๋๋ MVC ๋ชจ๋ธ)๋ก ์ค๊ณ๋ ์ ์์ผ๋ฉฐ, Spring์ ์น ํ๋ก๊ทธ๋๋ฐ ํ๋ ์์ํฌ์ ์๋ก ๋ค๋ฅธ MVC(model-view-controller) ์ํคํ ์ฒ(๋๋ MVC ๋ชจ๋ธ)๋ก ์ค๊ณ๋ ์ ์๋ค. ์์ ์ค๋ช ๋ ๋ฐ์ ๊ฐ์ด, ์๊ธฐ ๋ฐฑ์๋ ์๋ฒ๋ ํด๋ผ์ด์ธํธ ์ธก์ผ๋ก๋ถํฐ ์์ฒญ๋ URL์ ๋ค์ ์คํ์ด์ค๋ฅผ ๋ถ์ํ๊ณ ๋ถ์ ๊ฒฐ๊ณผ์ ๋ฐ๋ผ URL์ด ์์ฒญ๋ ํ๋ซํผ ๋๋ฉ์ธ์ ์๋ณํ๊ธฐ ์ํ URL ํ์ฑ ๋ชจ๋๊ณผ, ์๋ณ๋ ํ๋ซํผ ๋๋ฉ์ธ ์์์ ์ค์ ๋ URL ๋งคํ์ ํธ์ถํ๊ธฐ ์ํ URL ๋งค์นญ ๋ชจ๋์ ํฌํจํ ์ ์์ผ๋ฉฐ, ์๊ธฐ URL ํ์ฑ ๋ชจ๋ ๋ฐ URL ๋งค์นญ ๋ชจ๋์ ํตํ์ฌ ๋ฐฑ์ค๋ ์๋ฒ ์ธก์ผ๋ก ์์ฒญ๋ ๊ฐ๊ฐ์ URL์ ์๋ก ๋ค๋ฅธ MVC ๋ชจ๋ธ๋ก ๊ตฌํ๋ ์๋ก ๋ค๋ฅธ ํ๋ซํผ ๋๋ฉ์ธ์ผ๋ก ๋ถ๋ฅํ์ฌ ๊ฐ๊ฐ์ ํด๋น๋๋ ํ๋ซํผ ๋๋ฉ์ธ ์์์ URL ๋งคํ์ด ์ค์ ๋ ์ปจํธ๋กค๋ฌ(๊ฐ๊ฐ์ ์๋ก ๋ค๋ฅธ ํ๋ซํผ ๋๋ฉ์ธ์ ๊ตฌํํ๋ ์๋ก ๋ค๋ฅธ MVC ๋ชจ๋ธ์ controller)๋ก ํ ๋นํด์ค ์ ์๋ค. ์ด์ ๊ฐ์ด, ๋ฐฑ์๋ ์๋ฒ ์ธก์ผ๋ก ์์ฒญ๋ URL์ ๋ค์ ์คํ์ด์ค๋ก๋ถํฐ URL์ด ์์ฒญ๋ ํ๋ซํผ ๋๋ฉ์ธ์ ์๋ณํด๋ด๊ณ (URL ํ์ฑ ๋ชจ๋), ๊ฐ๊ฐ์ URL ์์ฒญ์ URL ํ์ฑ ๋ชจ๋๋ก๋ถํฐ ์๋ณ๋ ํ๋ซํผ ๋๋ฉ์ธ์ ์ปจํธ๋กค๋ฌ๋ก ํ ๋นํด์ค ์ ์๊ณ (URL ๋งค์นญ ๋ชจ๋), ๊ฐ๊ฐ์ ํ๋ซํผ ๋๋ฉ์ธ์ ๊ตฌํํ๋ MVC ๋ชจ๋ธ์ controller์ ๋ฑ๋ก๋ URL ๋งคํ๊ณผ ์ฐ๊ฒฐ๋ ์๋ฒ ์ธก์ ๋ฉ์๋ ๋๋ ํจ์๋, ํด๋ผ์ด์ธํธ ์ธก์ ์ธํฐํ์ด์ค ํ๋ฉด์ ๊ตฌํํ๊ธฐ ์ํ view์ ํด๋น๋๋ ์ถ๋ ฅ์ ์์ฑํ ์ ์๊ณ , view์ ์ถ๋ ฅ์ HTML ํ์ผ์ ํํ๋ก ๊ฐ๊ณต๋์ด ํด๋ผ์ด์ธํธ ์ธก์ ์ ๋ฌ๋ ์ ์๋ค. ํํธ, ์๊ธฐ model์ view์ ํ์๋๊ธฐ ์ํด ํ์ํ ๋ฐ์ดํฐ๋ฅผ ๋ด๋นํ ์ ์์ผ๋ฉฐ, ์๋ฅผ ๋ค์ด, URL์ ์ฟผ๋ฆฌ ์คํธ๋ง์ key-value์ ์์ ๊ฒ์์ ํค์๋๋ก ํ์ฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ก๋ถํฐ ๊ฒ์๋ ๋ฐ์ดํฐ๋ฅผ view์ ์ ๋ฌํ๊ฑฐ๋ ๋๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ก๋ถํฐ ๊ฒ์๋ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌ ์ธ์๋ก ํ๋ business logic์ ์ฒ๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ view์ ์ ๋ฌํ ์ ์๋ค. ์ฐธ๊ณ ๋ก, ์น ํ๋ก๊ทธ๋๋ฐ์ ๊ฐ๋ฐ ํ๊ฒฝ์ servlet-JSP-MVC-MVC frame work(Spring)์ผ๋ก ๋ณํ๋ ๊ฒ์ผ๋ก ์ดํด๋ ์ ์๋ค. ํํธ, ๋ณธ ๋ฐ๋ช ์ ์ผ ์ค์ํํ์์, ์๊ธฐ URL์ ๋ค์ ์คํ์ด์ค๋ฅผ ์๋ณํ๊ธฐ ์ํ URL ํ์ฑ ๋ชจ๋์ ์๋ณ ๊ฒฐ๊ณผ๋, ์์ ์ค๋ช ๋ ๋ฐ์ ๊ฐ์ด, URL ๋งค์นญ ๋ชจ๋๋ก ์ ๋ ฅ๋์ด, ์๋ณ๋ ํ๋ซํผ ๋๋ฉ์ธ ์์ ์ค์ ๋ URL ๋งคํ๊ณผ ์ฐ๊ฒฐ๋ ์๋ฒ ์ธก์ ๋ฉ์๋ ๋๋ ํจ์๊ฐ ํธ์ถ๋ ์ ์์ผ๋ฉฐ, ํธ์ถ๋ ํจ์๋ ์ปจํธ๋กค๋ฌ๋ก๋ถํฐ model์ ํตํ์ฌ ์คํ๋ ์ ์๋ค.
[0100] ๋ 12๋ฅผ ์ฐธ์กฐํ๋ฉด, ๋ณธ ๋ฐ๋ช ์ ์ผ ์ค์ํํ์์, ์๊ธฐ ๋ฐฑ์๋ ์๋ฒ๋, ๊ฐ๊ฐ์ ์๋ก ๋ค๋ฅธ ํ๋ซํผ ๋๋ฉ์ธ ๋ง๋ค ์๋ก ๋ค๋ฅธ MVT(model-view-template) ์ํคํ ์ฒ(๋๋ MVT ๋ชจ๋ธ)๋ก ์ค๊ณ๋ ์ ์์ผ๋ฉฐ, Django์ ์น ํ๋ก๊ทธ๋๋ฐ ํ๋ ์์ํฌ์ ์๋ก ๋ค๋ฅธ MVT(model-view-template) ์ํคํ ์ฒ(MVT ๋ชจ๋ธ)๋ก ์ค๊ณ๋ ์ ์๋ค. ์์ ์ค๋ช ๋ ๋ฐ์ ๊ฐ์ด, ์๊ธฐ ๋ฐฑ์๋ ์๋ฒ๋ ํด๋ผ์ด์ธํธ ์ธก์ผ๋ก๋ถํฐ ์์ฒญ๋ URL์ ๋ค์ ์คํ์ด์ค๋ฅผ ๋ถ์ํ๊ณ ๋ถ์ ๊ฒฐ๊ณผ์ ๋ฐ๋ผ URL์ด ์์ฒญ๋ ํ๋ซํผ ๋๋ฉ์ธ์ ์๋ณํ๊ธฐ ์ํ URL ํ์ฑ ๋ชจ๋๊ณผ, ์๋ณ๋ ํ๋ซํผ ๋๋ฉ์ธ ์์์ ์ค์ ๋ URL ๋งคํ์ ํธ์ถํ๊ธฐ ์ํ URL ๋งค์นญ ๋ชจ๋์ ํฌํจํ ์ ์์ผ๋ฉฐ, ์๊ธฐ URL ํ์ฑ ๋ชจ๋ ๋ฐ URL ๋งค์นญ ๋ชจ๋์ ํตํ์ฌ ๋ฐฑ์ค๋ ์๋ฒ ์ธก์ผ๋ก ์์ฒญ๋ ๊ฐ๊ฐ์ URL์ ์๋ก ๋ค๋ฅธ MVT ๋ชจ๋ธ๋ก ๊ตฌํ๋ ์๋ก ๋ค๋ฅธ ํ๋ซํผ ๋๋ฉ์ธ์ผ๋ก ๋ถ๋ฅํ์ฌ ๊ฐ๊ฐ์ ํด๋น๋๋ ํ๋ซํผ ๋๋ฉ์ธ ์์์ URL ๋งคํ์ด ์ค์ ๋ URL conf(๊ฐ๊ฐ์ ์๋ก ๋ค๋ฅธ ํ๋ซํผ ๋๋ฉ์ธ์ ๊ตฌํํ๋ ์๋ก ๋ค๋ฅธ MVC ๋ชจ๋ธ์ URL conf)๋ก ํ ๋นํด์ค ์ ์๋ค. ์ด์ ๊ฐ์ด, ๋ฐฑ์๋ ์๋ฒ ์ธก์ผ๋ก ์์ฒญ๋ URL์ ๋ค์ ์คํ์ด์ค๋ก๋ถํฐ URL์ด ์์ฒญ๋ ํ๋ซํผ ๋๋ฉ์ธ์ ์๋ณํด๋ด๊ณ (URL ํ์ฑ ๋ชจ๋), ๊ฐ๊ฐ์ URL ์์ฒญ์ URL ํ์ฑ ๋ชจ๋๋ก๋ถํฐ ์๋ณ๋ ํ๋ซํผ ๋๋ฉ์ธ์ URL conf๋ก ํ ๋นํด์ค ์ ์๊ณ (URL ๋งค์นญ ๋ชจ๋), ๊ฐ๊ฐ์ ํ๋ซํผ ๋๋ฉ์ธ์ ๊ตฌํํ๋ MVT ๋ชจ๋ธ์ URL conf์ ๋ฑ๋ก๋ URL ๋งคํ๊ณผ ์ฐ๊ฒฐ๋ ์๋ฒ ์ธก์ ๋ฉ์๋ ๋๋ ํจ์(view ํจ์)๋, ํด๋ผ์ด์ธํธ ์ธก์ ์ธํฐํ์ด์ค ํ๋ฉด์ ๊ตฌํํ๊ธฐ ์ํ ์ถ๋ ฅ์ ์์ฑํ ์ ์๊ณ , template์ ํตํ์ฌ HTML ํ์ผ์ ํํ๋ก ๊ฐ๊ณต๋์ด ํด๋ผ์ด์ธํธ ์ธก์ ์ ๋ฌ๋ ์ ์๋ค. ์๋ฅผ ๋ค์ด, ์๊ธฐ view๋ business logic์ ์ฒ๋ฆฌํ๋ฉด์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ด์ง๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ด๋ฆฌ ์์คํ ๊ณผ์ ์ฐ๋์ด ํ์ํ๋ฉด model์ ํตํ์ฌ ์ฒ๋ฆฌํ๊ณ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ด์ง๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ด๋ฆฌ ์์คํ ์ ํตํ์ฌ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํ ๋ฐ์ ์ ์์ผ๋ฉฐ, ์๋ฅผ ๋ค์ด, ์๊ธฐ view๋ URL์ ์ฟผ๋ฆฌ ์คํธ๋ง์ key-value์ ์์ ๊ฒ์์ ํค์๋๋ก ํ์ฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ก๋ถํฐ ๊ฒ์๋ ๋ฐ์ดํฐ ๋๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ก๋ถํฐ ๊ฒ์๋ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌ ์ธ์๋ก ํ๋ business logic์ ์คํ ๊ฒฐ๊ณผ๋ฅผ template์ ํตํ์ฌ HTML ํ์ผ๋ก ์์ฑํ์ฌ ํด๋ผ์ด์ธํธ ์ธก์ ์ ์กํด์ค ์ ์๋ค. ์ฐธ๊ณ ๋ก, ์น ํ๋ก๊ทธ๋๋ฐ์ ๊ฐ๋ฐ ํ๊ฒฝ์ servlet-JSP-MVC-MVC frame work(Spring)-MVT frame work(Django)์ผ๋ก ๋ณํ๋ ๊ฒ์ผ๋ก ์ดํด๋ ์ ์๋ค.
[0101] ๋ 11 ๋ฐ ๋ 12๋ฅผ ์ฐธ์กฐํ๋ฉด, ๋ณธ ๋ฐ๋ช ์ ์ผ ์ค์ํํ์์ ์๊ธฐ model์ ๊ฐ์ฒด(ํด๋์ค์ ์ธ์คํด์ค)์ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค(๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ด๋ฆฌ ์์คํ , RDBMS) ์ฌ์ด๋ฅผ ์ฐ๊ฒฐํด์ฃผ๋ ORM(object relational mapping) ๊ฐ์ฒด์ ํด๋น๋ ์ ์์ผ๋ฉฐ, ์๋ฅผ ๋ค์ด, ๊ฐ์ฒด(model ํด๋์ค) ๋๋ ๊ฐ์ฒด ์งํฅ์ ์ธ ์ฝ๋์ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ํ ์ด๋ธ ๋๋ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ SQL(structured query language) ๊ตฌ๋ฌธ ์ฌ์ด๋ฅผ ์ฐ๊ฒฐํด์ฃผ๋ ORM(object relational mapping)์ ํตํ์ฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ์ฐ๋์ ๊ตฌํํ ์ ์์ผ๋ฉฐ, ๋ณธ ๋ฐ๋ช ์ ์ผ ์ค์ํํ์์, ์๊ธฐ ORM์ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค(๋๋ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ด๋ฆฌ ์์คํ , RDBMS)์ ํ ์ด๋ธ๊ณผ ๋งคํ๋๋ ๋งคํ ๊ฐ์ฒด(mapping object, model ํด๋์ค)๋ฅผ ํตํ์ฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ์ฐ๋์ ๊ตฌํํ ์ ์๊ณ , ๊ฐ์ฒด(model ํด๋์ค์ ์ธ์คํด์ค)๋ฅผ ์์ฑํ์ฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ๊ทผํ์ฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ CRUD(create, read, update, delete)๋ฅผ ๊ตฌํํ ์ ์๋ค. ์๋ฅผ ๋ค์ด, ORM์์ model ํด๋์ค(๊ฐ๊ฐ์ ํ๋ซํผ ๋๋ฉ์ธ์ ๊ตฌํํ๋ MVC ๋ชจ๋ธ ๋๋ MVT ๋ชจ๋ธ์ model ํด๋์ค)๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ํ๋์ ํ ์ด๋ธ์ ํด๋น๋ ์ ์์ผ๋ฉฐ, ORM์์ model ํด๋์ค๋ฅผ ํตํ์ฌ ์์ฑ๋ ์ธ์คํด์ค๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ํ ์ด๋ธ์ ํ๋์ ๋ ์ฝ๋์ ํด๋น๋ ์ ์๋ค.
[0102] ๋ 11 ๋ฐ ๋ 12๋ฅผ ์ฐธ์กฐํ๋ฉด, ๋ณธ ๋ฐ๋ช ์ ์ผ ์ค์ํํ์์ ์๊ธฐ ๋ฐฑ์๋ ์๋ฒ๋ DB ์ฐ๋ ๋ชจ๋์ ํฌํจํ ์ ์์ผ๋ฉฐ, ์๊ธฐ DB ์ฐ๋ ๋ชจ๋์ ORM์ ํตํ์ฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ด๋ฆฌ ์์คํ (DBMS)๊ณผ์ ์ฐ๋์ ๊ตฌํํ ์ ์๊ณ , ์๋ฅผ ๋ค์ด, model ํด๋์ค์ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ํ ์ด๋ธ์ ์๋ก ๋งคํ ์ํฌ ์ ์์ผ๋ฉฐ, model ํด๋์ค๋ฅผ ํตํ์ฌ ์์ฑ๋ ์ธ์คํด์ค์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ํ ์ด๋ธ์ ๋ ์ฝ๋๋ฅผ ์๋ก ๋งคํ ์ํฌ ์ ์๊ณ , ๊ฐ์ฒด ์งํฅ์ ์ธ ์ฝ๋๋ก๋ถํฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ํ SQL ๊ตฌ๋ฌธ์ ์ฟผ๋ฆฌ๋ฅผ ์์ฑํ๊ณ ์์ฑ๋ ์ฟผ๋ฆฌ์ ๋ํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๊ฒ์ ๊ฒฐ๊ณผ๋ฅผ ์์ ํ ์ ์์ผ๋ฉฐ, ๊ฒ์ ๊ฒฐ๊ณผ๋ก์ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ํ ์ด๋ธ ๋๋ ๋ ์ฝ๋๋ฅผ, model ํด๋์ค ๋๋ model ํด๋์ค์ ์ธ์คํด์ค์ ํํ๋ก ์ถ๋ ฅํด์ค ์ ์๋ค.
[0103] ๋ 11 ๋ฐ ๋ 12๋ฅผ ์ฐธ์กฐํ๋ฉด, ๋ณธ ๋ฐ๋ช ์ ์ผ ์ค์ํํ์์, ์๊ธฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ด๋ฆฌ ์์คํ ๊ณผ์ ์ฐ๋์ ๊ตฌํํ๋ DB ์ฐ๋ ๋ชจ๋์, ์๊ธฐ URL์ ๋ค์ ์คํ์ด์ค์ ๊ธฐ๋ฐํ URL ํ์ฑ ๋ชจ๋์ ์๋ณ ๊ฒฐ๊ณผ์ ๋ฐ๋ผ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ด๋ฆฌ ์์คํ ์ ์์ฒญํ๋ ์ฟผ๋ฆฌ ๊ตฌ๋ฌธ์ ๋ค์ ์คํ์ด์ค๋ฅผ ๋ถ๊ฐํ ์ ์์ผ๋ฉฐ, ์๋ฅผ ๋ค์ด, ์๊ธฐ DB ์ฐ๋ ๋ชจ๋์, URL์ ๋ค์ ์คํ์ด์ค๋ก๋ถํฐ ๋ถ๋ฅ๋ ํ๋ซํผ ๋๋ฉ์ธ์ ์๋ณํ๊ธฐ ์ํ ๋ค์ ์คํ์ด์ค๋ฅผ model ํด๋์ค์ ์ด๋ฆ์ ๋ถ๊ฐํ์ฌ, ์๋ฅผ ๋ค์ด, ๋ค์ ์คํ์ด์ค๊ฐ ๋ถ์ฌ๋ ํ ์ด๋ธ ์ด๋ฆ์ ํตํ์ฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ก๋ถํฐ์ ๊ฒ์ ๋์์ด ํน์ ๋ ์ ์๋๋ก ํ ์ ์๋ค.
[0104] ์ด์ ๊ฐ์ด, ๋ณธ ๋ฐ๋ช ์ ์ผ ์ค์ํํ์ ๋ฐ๋ฅธ ๋ฐฑ์๋ ์๋ฒ๋, URL์ ๋ค์ ์คํ์ด์ค์ ๊ธฐ๋ฐํ์ฌ ๊ฐ๊ฐ์ URL์ ์๋ก ๋ค๋ฅธ ํ๋ซํผ ๋๋ฉ์ธ์ ๋ํ ์์ฒญ์ผ๋ก ๋ถ๋ฅํ๊ณ , ๋ถ๋ฅ๋ ํ๋ซํผ ๋๋ฉ์ธ ์์์ ์ค์ ๋ ์๋ก ๋ค๋ฅธ URL ๋งคํ(์น ํ๋ก๊ทธ๋๋ฐ ํ๋ ์์ํฌ์ธ Spring์์ ์ปจํธ๋กค๋ฌ์ ๋ฑ๋ก๋ URL ๋งคํ ๋๋ Django์์ URL.conf์์ ๋ฑ๋ก๋ URL ๋งคํ)๊ณผ ์ฐ๊ฒฐ๋ ์๋ฒ ์ธก์ ๋ฉ์๋ ๋๋ ํจ์(์๋ฅผ ๋ค์ด, ์๋ฒ ์ธก์ ๊ตฌํ๋ MVC ๋ชจ๋ธ์ controller ํจ์ ๋๋ MVT ๋ชจ๋ธ์ view ํจ์)๋ฅผ ํธ์ถํ๋ ํํธ์ผ๋ก, ๊ฐ์ฒด(MVC ๋ชจ๋ธ ๋๋ MVT ๋ชจ๋ธ์ model ํด๋์ค) ๋๋ ๊ฐ์ฒด ์งํฅ์ ์ธ ์ฝ๋์ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ํ ์ด๋ธ ๋๋ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ SQL ๊ตฌ๋ฌธ ์ฌ์ด๋ฅผ ์ฐ๊ฒฐํด์ฃผ๋ ORM(object relational mapping)์ ํตํ์ฌ ์๊ธฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ด๋ฆฌ ์์คํ ์ผ๋ก ์ ๋ฌ๋๋๋ก ํ๋ก๊ทธ๋จ์ ์ผ๋ก ์์ฑ๋๋ ์ฟผ๋ฆฌ ๊ตฌ๋ฌธ์ ๋์ ํ ์ด๋ธ์ ์ด๋ฆ์ ๋ํด, ์๊ธฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ํ ์ด๋ธ์ ํด๋น๋๋ model ํด๋์ค์ ์ด๋ฆ์ ๋ถ๊ฐ์ ์ผ๋ก ํด๋น๋๋ ํ๋ซํผ ๋๋ฉ์ธ์ ์ง์ํ๋ ๋ค์ ์คํ์ด์ค๋ฅผ ๋ถ๊ฐํ์ฌ, ๋ค์ ์คํ์ด์ค๊ฐ ๋ถ์ฌ๋ ํ ์ด๋ธ ์ด๋ฆ์ผ๋ก๋ถํฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ด๋ฆฌ ์์คํ ์ ๊ฒ์ ๋์์ด ํน์ ๋ ์ ์๋๋ก ํ ์ ์์ผ๋ฉฐ, ์ด์ ๊ฐ์ด ๋ค์ ์คํ์ด์ค๊ฐ ๋ถ๊ฐ๋ ํน์ ๋ ํ ์ด๋ธ์ ๋ํ delete ์ฟผ๋ฆฌ, update ์ฟผ๋ฆฌ ๋๋ ํน์ ๋ ํ ์ด๋ธ์ ๋ํ select ์ฟผ๋ฆฌ, fetch ์ฟผ๋ฆฌ ๋ฑ์ SQL ๊ตฌ๋ฌธ์ ์ ์กํ ์ ์๋ค.
[0105] ๋ 11 ๋ฐ ๋ 12๋ฅผ ์ฐธ์กฐํ๋ฉด, ๋ณธ ๋ฐ๋ช ์ ์ผ ์ค์ํํ์์, ์๊ธฐ DB ์ฐ๋ ๋ชจ๋์ ORM์ ํตํ์ฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ด๋ฆฌ ์์คํ ๊ณผ์ ์ฐ๋์ ๊ตฌํํ ์ ์์ผ๋ฉฐ, ์๋ฅผ ๋ค์ด, ๋ฐฑ์๋ ์๋ฒ์ ๊ตฌํ๋(์๋ฅผ ๋ค์ด, ๋ฐฑ์๋ ์๋ฒ์ ๊ฐ๊ฐ์ ํ๋ซํผ ๋๋ฉ์ธ์ ๊ตฌํํ๋) MVC ๋ชจ๋ธ ๋๋ MVT ๋ชจ๋ธ์์ model ํด๋์ค ๋๋ ๊ฐ์ฒด ์งํฅ์ ์ธ ์ฝ๋์, ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ํ ์ด๋ธ ๋๋ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ SQL ๊ตฌ๋ฌธ์ ์๋ก ์ฐ๊ฒฐํด์ค ์ ์์ผ๋ฉฐ, ์๊ธฐ DB ์ฐ๋ ๋ชจ๋์ URL์ ๋ค์ ์คํ์ด์ค๋ก๋ถํฐ ๋ถ๋ฅ๋ ํ๋ซํผ ๋๋ฉ์ธ์ ์๋ณํ๊ธฐ ์ํ ๋ค์ ์คํ์ด์ค(๋๋ ๋ค์ ์คํ์ด์ค์ ์ฐ๊ณ๋ ๋ ๋ค๋ฅธ ๋ค์ ์คํ์ด์ค)๋ฅผ model ํด๋์ค์ ์ด๋ฆ์ ๋ถ๊ฐํ์ฌ, ๋ค์ ์คํ์ด์ค๊ฐ ๋ถ์ฌ๋ ํ ์ด๋ธ ์ด๋ฆ์ ํตํ์ฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ก๋ถํฐ ๋ค์ ์คํ์ด์ค๋ก๋ถํฐ ์๋ณ๋๋ ์๋ก ๋ค๋ฅธ ํ๋ซํผ ๋๋ฉ์ธ์ ๊ดํ ํ ์ด๋ธ์ ์๋ณํ์ฌ ํน์ ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ํ ์ด๋ธ์ ๋ํ CRUD(create, read, update, delete)๋ฅผ ๊ตฌํํ ์ ์๋ค.
[0106] ๋ 13์ ์ฐธ์กฐํ๋ฉด, ๋ณธ ๋ฐ๋ช ์ ์ผ ์ค์ํํ์์, ์๊ธฐ DB ์ฐ๋ ๋ชจ๋์, URL์ ๋ค์ ์คํ์ด์ค๋ก๋ถํฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๊ฒ์ ์ฑ๋ฅ(๊ฒ์ ์๋)์ ๋์ด๊ธฐ ์ํ ์ ์ฅ ์์น์ ์ธ๋ฑ์ฑ(indexing)์ ๊ตฌํํ ์ ์์ผ๋ฉฐ, ์๋ฅผ ๋ค์ด, URL์ ๋ค์ ์คํ์ด์ค๋ก๋ถํฐ ๋ฐ์ดํฐ์ ๋ฐ์ดํฐ์ ์ ์ฅ ์์น์ ๊ดํ ์ธ๋ฑ์ค ์ฌ์ด์ ๋งคํ ๊ด๊ณ์ ๊ดํ ํด์ ํ ์ด๋ธ์ ์์ฑํ ์ ์๋ค. ๋ณธ ๋ฐ๋ช ์ ์ผ ์ค์ํํ์์, ์๊ธฐ ํด์ ํ ์ด๋ธ์ URL์ ๋ค์ ์คํ์ด์ค๋ฅผ ํด์ ํจ์์ ์ ๋ ฅ์ผ๋ก ํ์ฌ ํด์ ํจ์๋ก๋ถํฐ ์ถ๋ ฅ๋๋ ํด์ ๊ฐ์ ์ธ๋ฑ์ค๋ก ํ์ฌ, ํด๋น๋๋ ์ธ๋ฑ์ค ์์น์ ๋ฐ์ดํฐ๊ฐ ์ ์ฅ๋ ์ ์์ผ๋ฉฐ(ํด๋น๋๋ ์ธ๋ฑ์ค๋ก ์ธ๋ฑ์ฑ๋ ๋ฐ์ดํฐ ์ ์ฅ์ bucket slot), ์๋ฅผ ๋ค์ด, ๋ณธ ๋ฐ๋ช ์ ์ผ ์ค์ํํ์์, URL์ ๋ค์ ์คํ์ด์ค๋ ์๋ก ๋ค๋ฅธ ํ๋ซํผ ๋๋ฉ์ธ์ ์๋ณํ๊ธฐ ์ํ ๊ฒ์ผ๋ก, ์๋ก ๋ค๋ฅธ ํ๋ซํผ ๋๋ฉ์ธ์ ํํํ๊ธฐ ์ํ ๋ค์ ์คํ์ด์ค๋ฅผ ์ ๋ ฅ์ผ๋ก ํ๋ ํด์ ํจ์๋ก๋ถํฐ ์ถ๋ ฅ๋๋ ํด์ ๊ฐ์ ์๋ก ๋ค๋ฅผ ์ ์์ผ๋ฉฐ(ํด์ ํจ์์ ์ถฉ๋ ์ ํญ์ฑ), ์๋ก ๋ค๋ฅธ ํด์ ๊ฐ์ผ๋ก ์ธ๋ฑ์ฑ๋ ์ ์ฅ ์์น๋ก๋ถํฐ ๋ค์ ์คํ์ด์ค๋ก๋ถํฐ ์๋ณ๋๋ ํ๋ซํผ ๋๋ฉ์ธ์ ๊ดํ ๋ฐ์ดํฐ๊ฐ ๋น ๋ฅธ ์๋๋ก ๊ฒ์๋ ์ ์๋ค. ์๋ฅผ ๋ค์ด, ์๊ธฐ DB ์ฐ๋ ๋ชจ๋์ ORM์ ํตํ์ฌ model ํด๋์ค์ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ํ ์ด๋ธ์ ์๋ก ์ฐ๊ฒฐ์ํค๋ฉด์, URL์ ๋ค์ ์คํ์ด์ค๋ก๋ถํฐ ์ธ์๋ ํ๋ซํผ ๋๋ฉ์ธ์ ์๋ณํ๊ธฐ ์ํ ๋ค์ ์คํ์ด์ค๋ฅผ model ํด๋์ค์ ์ด๋ฆ์ ๋ถ๊ฐํ์ฌ, ๋ค์ ์คํ์ด์ค๊ฐ ๋ถ์ฌ๋ ํ ์ด๋ธ์ ์ด๋ฆ์ ํตํ์ฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ก๋ถํฐ ๊ฒ์ ๋์์ ํ ์ด๋ธ์ด ํน์ ๋ ์ ์์ผ๋ฉฐ, ์๋ฅผ ๋ค์ด, model ํด๋์ค์ ๊ฐ์ฒด ์งํฅ์ ์ธ ์ฝ๋๋ฅผ ์ ๋ ฅ์ผ๋ก ํ์ฌ DB ์ฐ๋ ๋ชจ๋๋ก๋ถํฐ ํ๋ก๊ทธ๋จ์ ์ผ๋ก ์์ฑ๋๋ SQL ๊ตฌ๋ฌธ์ ๋์ ํ ์ด๋ธ์ ๋ํ ์ ๊ทผ์ ์ํ์ฌ, ์๊ธฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ด๋ฆฌ ์์คํ ์, DB ์ฐ๋ ๋ชจ๋๋ก๋ถํฐ ๋ถ์ฌ๋ ๋ค์ ์คํ์ด์ค๋ก๋ถํฐ ์ธ๋ฑ์ฑ๋ ์ ์ฅ ์์น์ ์ ์ฅ๋ ๋ฐ์ดํฐ์ ๋ํด ๋ฐ๋ก ์ ๊ทผํ ์ ์๊ณ , ์๋ฅผ ๋ค์ด, SQL ๊ตฌ๋ฌธ์ ๋์ ํ ์ด๋ธ์ ๋ํ ์ ๊ทผ์ ์ํ์ฌ, ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฅ๋ ์ผ๊ตฐ์ ๋ฐ์ดํฐ๋ฅผ ์ค๋ฆ ์์ฐจ ๋ด์ง๋ ๋ด๋ฆผ ์์ฐจ์ ๊ฐ์ด ์ ๋ ฌํ ํ ์ผ์ผ์ด ํ์ํ์ง ์๊ณ ๋(์ ์ด ํ์), ์๋ฅผ ๋ค์ด, DB ์ฐ๋ ๋ชจ๋๋ก๋ถํฐ ๋ถ์ฌ๋ ๋ค์ ์คํ์ด์ค๋ฅผ ์ ๋ ฅ์ผ๋ก ํ์ฌ ํด์ ํจ์๋ก๋ถํฐ ์ถ๋ ฅ๋๋ ํด์ ๊ฐ์ผ๋ก๋ถํฐ ํด๋น๋๋ ๋ค์ ์คํ์ด์ค๋ก ์๋ณ๋๋ ํ๋ซํผ ๋๋ฉ์ธ์ ๋ฐ์ดํฐ๊ฐ ์ ์ฅ๋ ์์น์ ๊ดํ ์ธ๋ฑ์ค ๊ฐ์ ์ฐ์ถํ ์ ์์ผ๋ฉฐ, ์ฐ์ถ๋ ์ธ๋ฑ์ค ๊ฐ์ผ๋ก ์ธ๋ฑ์ฑ๋ ์ ์ฅ ์์น(bucket slot)๋ก๋ถํฐ ํด๋น๋๋ ํ๋ซํผ ๋๋ฉ์ธ์ ๋ฐ์ดํฐ์ ๋ํ ์ ๊ทผ์ด ๊ฐ๋ฅํ๋ฏ๋ก, ๋ณธ ๋ฐ๋ช ์ ์ผ ์ค์ํํ์์, ์๊ธฐ DB ์ฐ๋ ๋ชจ๋์ ์๋ก ๋ค๋ฅธ ํ๋ซํผ ๋๋ฉ์ธ์ ์๋ณํ๊ธฐ ์ํ URL์ ๋ค์ ์คํ์ด์ค๊ฐ ๋ถ์ฌ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ํ ์ด๋ธ์ ์ด๋ฆ์ผ๋ก๋ถํฐ SQL ๊ตฌ๋ฌธ์ ๋์ ํ ์ด๋ธ์ ํน์ ํ ์ ์์ผ๋ฉฐ, ๋ํ ๋ค์ ์คํ์ด์ค๋ก๋ถํฐ ์๋ณ๋๋ ํ๋ซํผ ๋๋ฉ์ธ์ ๊ดํ ๋ฐ์ดํฐ๊ฐ ์ ์ฅ๋ ์ ์ฅ ์์น(bucket slot)์ ๊ดํ ์ธ๋ฑ์ฑ์ ํตํ์ฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๊ฒ์ ์๋๋ฅผ ๋์ผ ์ ์๋ค.
[0107] ๋ 11 ๋ฐ ๋ 12๋ฅผ ์ฐธ์กฐํ๋ฉด, ๋ณธ ๋ฐ๋ช ์ ์ผ ์ค์ํํ์์, URL์ ๋ค์ ์คํ์ด์ค์ ๊ธฐ๋ฐํ์ฌ ๊ฐ๊ฐ์ URL์ ์๋ก ๋ค๋ฅธ ํ๋ซํผ ๋๋ฉ์ธ์ ๋ํ ์์ฒญ์ผ๋ก ๋ถ๋ฅํ๊ณ , ๋ถ๋ฅ๋ ํ๋ซํผ ๋๋ฉ์ธ ์์์ ์ค์ ๋ ์๋ก ๋ค๋ฅธ URL ๋งคํ(์น ํ๋ก๊ทธ๋๋ฐ ํ๋ ์์ํฌ์ธ Spring์์ ์ปจํธ๋กค๋ฌ ์์ ๋ฑ๋ก๋ URL ๋งคํ ๋๋ Django์์ URL conf ์์ ๋ฑ๋ก๋ URL ๋งคํ)๊ณผ ์ฐ๊ฒฐ๋ ์๋ฒ ์ธก์ ๋ฉ์๋ ๋๋ ํจ์(์๋ฅผ ๋ค์ด, ์๋ฒ ์ธก์ ๊ตฌํ๋ MVC ๋ชจ๋ธ์ controller ํจ์ ๋๋ MVT ๋ชจ๋ธ์ view ํจ์)๋ฅผ ํธ์ถํ ์ ์๋ค.
[0108] ๋ณธ ๋ฐ๋ช ์ ์ผ ์ค์ํํ์์, ์๊ธฐ URL ๋งคํ๊ณผ ์ฐ๊ฒฐ๋ ์๋ฒ ์ธก์ ๋ฉ์๋ ๋๋ ํจ์๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฅ๋ ์ ์๊ณ , ์๋ฅผ ๋ค์ด, SQL ๊ตฌ๋ฌธ์ ์ํ์ค ํํ์ ์ ์ฅ ํ๋ก์์ (stored procedure) ๋๋ ์ ์ฅ ํจ์(stored function)์ ํํ๋ก ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฅ๋๊ฑฐ๋ ๋๋ ์ปดํ์ผ๋ ์ฝ๋ ํํ(๋ฐ์ด๋๋ฆฌ ์ฝ๋)๋ก ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฅ๋ ์ ์๋ค. ์ด๋, ์๊ธฐ DB ์ฐ๋ ๋ชจ๋๋ก๋ถํฐ ์๋ก ๋ค๋ฅธ ํ๋ซํผ ๋๋ฉ์ธ์ ์๋ณํ๊ธฐ ์ํ URL์ ๋ค์ ์คํ์ด์ค๊ฐ ๋ถ์ฌ๋ ๋ฉ์๋ ๋๋ ํจ์์ ์ด๋ฆ์ผ๋ก๋ถํฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฅ๋ ์๋ก ๋ค๋ฅธ ํ๋ซํผ ๋๋ฉ์ธ์ ๋ฉ์๋ ๋๋ ํจ์๊ฐ ์๋ณ๋ ์ ์์ผ๋ฉฐ, ๊ฐ๊ฐ์ ์๋ก ๋ค๋ฅธ ํ๋ซํผ ๋๋ฉ์ธ ์์์ ์ ์๋ ๋ฉ์๋ ๋๋ ํจ์๋ ๋ค์ ์คํ์ด์ค๋ฅผ ์ ๋ ฅ์ผ๋ก ํ๋ ํด์ ํจ์์ ์ถ๋ ฅ์ ๋ฐ๋ผ ์ธ๋ฑ์ฑ๋ ์๋ก ๋ค๋ฅธ ์ ์ฅ ์์น์ ์ ์ฅ๋ ์ ์๋ค. ์ด์ ๊ฐ์ด ๋ณธ ๋ฐ๋ช ์ ์ํ๋ฉด, ์๋ก ๋ค๋ฅธ ํ๋ซํผ ๋๋ฉ์ธ์ ๋ฉ์๋, ํจ์, ๋ฐ์ดํฐ์ ๋ํด, ์๋ก ๋ค๋ฅธ ํ๋ซํผ ๋๋ฉ์ธ์ ์๋ณํ๊ธฐ ์ํ ๋ค์ ์คํ์ด์ค๊ฐ ๋ถ์ฌ๋๋ฉด์, ์ด๋ค ์๋ก ๋ค๋ฅธ ํ๋ซํผ ๋๋ฉ์ธ์ ๋ฉ์๋, ํจ์, ๋ฐ์ดํฐ๊ฐ ์๋ก๋ก๋ถํฐ ์๋ณ๋ ์ ์์ผ๋ฉฐ, ๋ํ, ์๋ก ๋ค๋ฅธ ํ๋ซํผ ๋๋ฉ์ธ์ ์๋ณํ๊ธฐ ์ํ ๋ค์ ์คํ์ด์ค๋ฅผ ์ ๋ ฅ์ผ๋ก ํ์ฌ ํด์ ํจ์๋ก๋ถํฐ ์ถ๋ ฅ๋๋ ํด์ ๊ฐ์ ๋ฐ๋ผ ์ธ๋ฑ์ฑ๋ ์ ์ฅ ์์น(bucket slot)์ ์ ์ฅ๋๋ฉด์(์๋ก ๋ค๋ฅธ ๋ค์ ์คํ์ด์ค๋ก๋ถํฐ ํด์ ํจ์๋ฅผ ํตํ์ฌ ์๋ก ๋ค๋ฅธ ํด์ ๊ฐ ๋ด์ง๋ ์๋ก ๋ค๋ฅธ ์ธ๋ฑ์ค ๊ฐ์ด ์ฐ์ถ๋จ, ํด์ ํจ์์ ์ถฉ๋ ์ ํญ์ฑ), ์๋ก ๋ค๋ฅธ ํ๋ซํผ ๋๋ฉ์ธ์ ๋ฉ์๋, ํจ์, ๋ฐ์ดํฐ์ ๋ํ ์ ๊ทผ ์๋๋ฅผ ๋์ผ ์ ์๋ค. ์ด๋, ์๊ธฐ ๋ฐฑ์๋ ์๋ฒ๋, ์๋ก ๋ค๋ฅธ ํ๋ซํผ ๋๋ฉ์ธ ์์์ ์ค์ ๋ ๋ฉ์๋ ๋๋ ํจ์(์๋ฅผ ๋ค์ด, ์๋ก ๋ค๋ฅธ ํ๋ซํผ ๋๋ฉ์ธ ์์ ์ค์ ๋ ์๋ก ๋ค๋ฅธ ๋น์ฆ๋์ค ๋ก์ง)๋ฅผ ์คํํ๋๋ก ์๋ก ๋ ๋ฆฝ์ ์ธ ํ๋ก์ธ์ค๋ฅผ ์์ฑํ ์ ์์ผ๋ฉฐ, ์ด์์ฒด์ (๋๋ ์ด์์ฒด์ ์์์ ๊ตฌ๋๋๋ ISO ๋ชจ๋, integrated service operation module, ๋ 1 ์ฐธ์กฐ)๋ ํ๋ก์ธ์ค์ ๊ด๋ฆฌ(์๋ฅผ ๋ค์ด, ํ๋ก์ธ์ค์ ์ค์ผ์ค๋ง)ํ๊ธฐ ์ํ ์ปค๋ ๊ฐ์ฒด(kernel object)์ ๊ฐ์ ๋ฐ์ดํฐ ๋ธ๋ก์ ๊ตฌ์กฐ์ฒด๋ฅผ ์์ฑํ ์ ์๊ณ , ํ๋ก์ธ์ค์ ์คํ์ ์ํ์ฌ code ์์ญ, data ์์ญ, heap ์์ญ, stack ์์ญ์ ํฌํจํ๋ ๋ฉ๋ชจ๋ฆฌ(๋ 15 ๋ฐ ๋ 16 ์ฐธ์กฐ)๋ฅผ ๊ฐ๊ฐ์ ํ๋ก์ธ์ค์ ๋ํด ๋ ๋ฆฝ์ ์ผ๋ก ํ ๋นํด์ค ์ ์๋ค. ๊ทธ๋ฆฌ๊ณ ์์ฑ๋ ํ๋ก์ธ์ค๋ ready ์ํ(๋ 17 ์ฐธ์กฐ, CPU์ ๋ก๋ฉ๋๋ฉด ๋ฐ๋ก ์คํ ๊ฐ๋ฅํ ์ํ)๋ก๋ถํฐ CPU ์ค์ผ์ค๋ง์ ๋ฐ๋ผ run ์ํ(๋ 17 ์ฐธ์กฐ, CPU์ ๋ก๋ฉ๋์ด ์คํ ์ค์ธ ์ํ)๋ก ์ํ ์ฒ์ด๋ ์ ์์ผ๋ฉฐ, ์๋ก ๋ค๋ฅธ ํ๋ซํผ ๋๋ฉ์ธ์ ๋ฉ์๋ ๋๋ ํจ์๋ฅผ ์คํํ๋๋ก ์์ฑ๋ ๊ฐ๊ฐ์ ํ๋ก์ธ์ค๋ CPU ์ค์ผ์ค๋ง์ ๋ฐ๋ผ ์๋ก ๋ ๋ฆฝ์ ์ธ ์คํ ํ๊ฒฝ์์ ์คํ๋ ์ ์๋ค.
[0109] ๋ณธ ๋ฐ๋ช ์ ์ผ ์ค์ํํ์์, ์๊ธฐ DB ์ฐ๋ ๋ชจ๋์ ORM์ ํตํ์ฌ model ํด๋์ค์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ํ ์ด๋ธ์ ์๋ก ์ฐ๊ฒฐ์ํฌ ์ ์์ผ๋ฉฐ, ์ด๋, ์๊ธฐ DB ์ฐ๋ ๋ชจ๋์ model ํด๋์ค(์๋กญ๊ฒ ์ ์๋ model ํด๋์ค)์ ๊ฐ ์์ฑ์ ๊ดํ ๋ฐ์ดํฐ ํ์ (string, integer, number, boolean ๋ฑ)์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ migration ์ํด์ผ๋ก์จ, ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ด๋ฆฌ ์์คํ ์ผ๋ก ํ์ฌ๊ธ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์คํค๋ง(schema)๋ฅผ ๋ณ๊ฒฝํ๋๋ก ํ ์ ์๊ณ , ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์คํค๋ง์ ๋ฐ๋ผ ์์ฒญ ๋ฐ์ดํฐ ๋ฐ ์๋ต ๋ฐ์ดํฐ๋ฅผ ๊ฒ์ฆํ ์ ์๋ค. ์๋ฅผ ๋ค์ด, DB ์ฐ๋ ๋ชจ๋์ ์ํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ migration์ด๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์๋ก์ด ํ ์ด๋ธ์ ์ถ๊ฐํ๊ฑฐ๋ ๋๋ ์์ฑ์ ์ด๋ฆ์ ๋ณ๊ฒฝํ๋ ๋ฑ๊ณผ ๊ฐ์ด ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์คํค๋ง(schema)๋ฅผ ๋ณ๊ฒฝํ๋ ๊ฒ์ ์๋ฏธํ ์ ์์ผ๋ฉฐ, ์๋ก์ด ํ ์ด๋ธ ๋ด์ง๋ ์๋ก์ด ํ ์ด๋ธ์ ์์ฑ์ ๋ํ ๋ฐ์ดํฐ ํ์ ์ ๊ดํ ์ ์ฝ ์ฌํญ์ ๋ถ๊ฐํ ์ ์์ผ๋ฉฐ, ์๋ฅผ ๋ค์ด, ๋ฐ์ดํฐ๋ฒ ์ด์ค์ migration ๋ JSON ์คํค๋ง(JSON schema, JSON: ํค-๊ฐ์ผ๋ก ๊ตฌ์กฐํ๋ ๋ฐ์ดํฐ)๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ํ ์์ฒญ ๋ฐ์ดํฐ ๋ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ก๋ถํฐ์ ์๋ต ๋ฐ์ดํฐ๊ฐ ๋ฐ์ดํฐ ํ์ (string, integer, number, boolean ๋ฑ)์ ๋ถํฉํ๋์ง, ํค-๊ฐ์ ์์ ๋ฐ์ดํฐ ๊ตฌ์กฐ์ ๋ถํฉํ๋์ง ๋ฑ์ ๊ดํ ๊ฒ์ฆ์ ์ํํ ์ ์๋ค. ์๋ฅผ ๋ค์ด, ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์คํค๋ง(schema)๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๊ตฌ์กฐ, ๊ฐ์ฒด, ์์ฑ, ์ ์ฝ ์กฐ๊ฑด, ๊ฐ์ฒด ๊ฐ์ ๊ด๊ณ๋ฅผ ์ ์ํ ๋ฉํ ๋ฐ์ดํฐ๋ฅผ ์๋ฏธํ ์ ์๋ค.
[0110] ๋ 14๋ฅผ ์ฐธ์กฐํ๋ฉด, ๋ณธ ๋ฐ๋ช ์ ์ผ ์ค์ํํ์์๋ Redis(remote dictionary server, ํค-๊ฐ ๊ตฌ์กฐ์ ๋น์ ํ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ณ ๊ด๋ฆฌํ๋ NoSQL ๋ฐ์ดํฐ๋ฒ ์ด์ค) ์บ์ฑ(caching)์ ํตํ์ฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๊ฒ์ ์๋๋ฅผ ๋์ด๊ณ ๋ฆฌ์์ค์ ํจ์จ์ฑ์ ๋์ผ ์ ์์ผ๋ฉฐ, ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ก๋ถํฐ ๋ฐ์ดํฐ ์กฐํ ์์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ํ ์ ๊ทผ ์๋๊ฐ ์๋์ ์ผ๋ก ๋น ๋ฅธ Redis์ ์์ ์ ์ฅํด๋๋ cache aside์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ฐ์ดํฐ ์ ์ฅ ์์ Redis์ ์ ์ฅํ์ง ์๊ณ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฅํ๋ write around ์ ์ฑ ์ ์ ์ฉํ ์ ์๋ค. ๋ณธ ๋ฐ๋ช ์ ์ผ ์ค์ํํ์์๋, ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ํ ๊ฒ์ ์์ฒญ์ ๋์ํ์ฌ, Redis ์บ์์ ์ ์ฅ๋ ๋ฐ์ดํฐ๋ฅผ ๋ฐํํ๊ฑฐ๋(cache hit), ๋๋ Redis ์บ์๋ก๋ถํฐ ๋ฐ์ดํฐ๊ฐ ๊ฒ์๋์ง ์์ผ๋ฉด(cache miss) ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๊ฒ์ํ ์ ์์ผ๋ฉฐ, Redis ์บ์์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ณ๋ ฌ ์ฒ๋ฆฌ๋ฅผ ํตํ์ฌ ๊ฒ์ ์๋๋ฅผ ๊ฐ์ ํ ์ ์๋ค.
[0111] ๋ณธ ๋ฐ๋ช ์ ์ผ ์ค์ํํ์์, ์๊ธฐ ๋ฐฑ์๋ ์๋ฒ๋ URL์ ๋ค์ ์คํ์ด์ค์ ๊ธฐ๋ฐํ์ฌ URL์ด ์์ฒญ๋ ํ๋ซํผ ๋๋ฉ์ธ์ ์๋ณํ ์ ์์ผ๋ฉฐ, ์๋ณ๋ ํ๋ซํผ ๋๋ฉ์ธ ์์์ ์ค์ ๋ URL ๋งคํ๊ณผ ์ฐ๊ฒฐ๋ ์๋ฒ ์ธก์ ๋ฉ์๋ ๋๋ ํจ์๋ฅผ ์คํํ ์ ์๋ค. ์๋ฅผ ๋ค์ด, ์๊ธฐ ๋ฐฑ์๋ ์๋ฒ๋ URL ๋งคํ๊ณผ ์ฐ๊ฒฐ๋ ๋ฉ์๋ ๋๋ ํจ์๋ฅผ ์คํํ๊ธฐ ์ํ ํ๋ก์ธ์ค๋ฅผ ์์ฑํ ์ ์์ผ๋ฉฐ(์๋ฅผ ๋ค์ด, ํ๋ก์ธ์ค์ ์์ฑ์ ์ํ CreateProcess์ ๋ฐ๋ผ), ์ด์์ฒด์ ๋๋ ์ด์์ฒด์ ์์์ ๊ตฌ๋๋๋ ISO ๋ชจ๋(Integrated Service Operation Module, ๋ 1 ์ฐธ์กฐ)์ ํ๋ก์ธ์ค๋ฅผ ๊ด๋ฆฌ(์๋ฅผ ๋ค์ด, ํ๋ก์ธ์ค์ ์ค์ผ์ค๋ง)ํ๊ธฐ ์ํ ์ปค๋ ๊ฐ์ฒด(kernel object)์ ๊ฐ์ ๋ฐ์ดํฐ ๋ธ๋ก์ ๊ตฌ์กฐ์ฒด๋ฅผ ์์ฑํ ์ ์๊ณ , ํ๋ก์ธ์ค์ ์คํ์ ์ํ์ฌ code ์์ญ, data ์์ญ, heap ์์ญ, stack ์์ญ์ ํฌํจํ๋ ๋ฉ๋ชจ๋ฆฌ(๋ 15 ๋ฐ ๋ 16 ์ฐธ์กฐ)๋ฅผ ํ ๋นํ ์ ์์ผ๋ฉฐ, ์์ฑ๋ ํ๋ก์ธ์ค๋ ready ์ํ(CPU์ ๋ก๋ฉ๋๋ฉด ๋ฐ๋ก ์คํ ๊ฐ๋ฅํ ์ํ, ๋ 17 ์ฐธ์กฐ)๋ก๋ถํฐ CPU ์ค์ผ์ค๋ง์ ๋ฐ๋ผ run ์ํ(CPU์ ๋ก๋ฉ๋์ด ์คํ ์ค์ธ ์ํ, ๋ 17 ์ฐธ์กฐ)๋ก ์ํ ์ฒ์ด๋ ์ ์๋ค. ๋ณธ ๋ฐ๋ช ์ ๋ค์ํ ์ค์ํํ์์๋ ํ๋ก์ธ์ค์ code ์์ญ, data ์์ญ, heap ์์ญ์ ๊ณต์ ํ๋ฉด์ ์ฃผ๋ก ํจ์ ์คํ์ ์ํ์ฌ ์ค์ ๋๋ stack ์์ญ์ ๋ํด์๋ ๊ฐ๋ณ์ ์ผ๋ก ํ ๋น๋์ด context switching์ ํจ์จ์ ๋์ผ ์ ์๋๋ก ์ค๋ ๋(thread) ๋จ์๋ก ์ค์ผ์ค๋ง์ด ๊ตฌํ๋ ์๋ ์์ผ๋ฉฐ(๋ฉํฐ ํ๋ก์ธ์ค ๋ผ๊ธฐ ๋ณด๋ค๋ ๋ฉํฐ ์ค๋ ๋, ๋ 18 ๋ฐ ๋ 19 ์ฐธ์กฐ), ์ด๋, ์๊ธฐ ๋ฐฑ์๋ ์๋ฒ๋, URL์ ์ฟผ๋ฆฌ ์คํธ๋ง์ key-value์ ์์ ์ ๋ฌ ์ธ์๋ก ํ์ฌ ์๊ธฐ URL ๋งคํ๊ณผ ์ฐ๊ฒฐ๋ ์๋ฒ ์ธก์ ๋ฉ์๋ ๋๋ ํจ์๋ฅผ ์คํํ ์ ์์ผ๋ฉฐ, ์๋ฒ ์ธก์ ๋ฉ์๋ ๋๋ ํจ์๋ฅผ ์คํํ๊ธฐ ์ํ ์ค๋ ๋๋ฅผ ์์ฑํ ์ ์์ผ๋ฉฐ(์๋ฅผ ๋ค์ด, ์ค๋ ๋์ ์์ฑ์ ์ํ CreateThread์ ๋ฐ๋ผ), ์ด์์ฒด์ ๋๋ ์ด์์ฒด์ ์์์ ๊ตฌ๋๋๋ ISO ๋ชจ๋(Integrated Service Operation Module)์ ์ด์์ฒด์ ๊ฐ ๊ด๋ฆฌํ๋ ๋ฆฌ์์ค๋ก์ ์ค๋ ๋๋ฅผ ๊ด๋ฆฌ(์๋ฅผ ๋ค์ด, ์ค๋ ๋์ ์ค์ผ์ค๋ง)ํ๊ธฐ ์ํ ์ปค๋ ๊ฐ์ฒด(kernel object)์ ๊ฐ์ ๋ฐ์ดํฐ ๋ธ๋ก์ ๊ตฌ์กฐ์ฒด๋ฅผ ์์ฑํ ์ ์์ผ๋ฉฐ, ํ๋์ ํ๋ก์ธ์ค์ ์ค๋ ๋์ ๋ํด ๊ณต์ ๋๋ code ์์ญ, data ์์ญ, heap ์์ญ๊ณผ ๊ฐ๊ฐ์ ์ค๋ ๋์ ๋ํ ๊ฐ๋ณ์ ์ธ stack ์์ญ์ ํฌํจํ๋ ๋ฉ๋ชจ๋ฆฌ(๋ 15 ๋ฐ ๋ 16 ์ฐธ์กฐ)๋ฅผ ํ ๋นํ ์ ์๊ณ , ์์ฑ๋ ์ค๋ ๋๋ ready ์ํ(CPU์ ๋ก๋ฉ๋๋ฉด ๋ฐ๋ก ์คํ ๊ฐ๋ฅํ ์ํ)๋ก๋ถํฐ CPU ์ค์ผ์ค๋ง์ ๋ฐ๋ผ run ์ํ(CPU์ ๋ก๋ฉ๋์ด ์คํ ์ค์ธ ์ํ)๋ก ์ํ ์ฒ์ด๋ ์ ์๋ค.
[0112] ๋ณธ ๋ฐ๋ช ์ ์ผ ์ค์ํํ์์, ์๋ฒ ์ธก์ ๋ฉ์๋ ๋๋ ํจ์๋, ํด๋น๋๋ ๋ฉ์๋ ๋๋ ํจ์๊ฐ ํธ์ถ๋๋ URL ๋งคํ์ ๋ฐ๋ผ ํ๋ก์ธ์ค ๋ฐ / ๋๋ ์ค๋ ๋๊ฐ ์์ฑ๋๋ฉด์ CPU์ ์ค์ผ์ค๋ง์ ๋ฐ๋ผ CPU ์์ผ๋ก ๋ก๋ฉ๋์ด ์คํ๋ ์ ์์ผ๋ฉฐ, ๋ค์ ๋งํ๋ฉด, ๋ค์์ ํ๋ซํผ ๋๋ฉ์ธ ์์์ ์ค์ ๋ URL ๋งคํ๊ณผ ์ฐ๊ฒฐ๋ ๋ฉ์๋ ๋๋ ํจ์๋ ๊ฐ๊ฐ์ URL ์์ฒญ์ ๋์ํ์ฌ ํ๋ก์ธ์ค ๋๋ ์ค๋ ๋๋ก ์์ฑ๋ ์ ์์ผ๋ฉฐ, ์ฐ์ฐ ์์์ ํจ์จ์ ์ธ ๋ฐฐ๋ถ์ ์ํ์ฌ ๊ฐ๊ฐ์ URL ์์ฒญ์ ๋์ํ์ฌ ์น ์๋น์ค๊ฐ ์์ฒญ๋ ํ๋ซํผ ๋๋ฉ์ธ์ ์๋ณํ๊ณ ์๋ณ๋ ํ๋ซํผ ๋๋ฉ์ธ ์์ ์ค์ ๋ URL ๋งคํ๊ณผ ์ฐ๊ฒฐ๋ ๋ฉ์๋ ๋๋ ํจ์๊ฐ ํธ์ถ๋๋ ์์ ์์ ํ๋ก์ธ์ค ๋ฐ / ๋๋ ์ค๋ ๋๊ฐ ์์ฑ๋ ์ ์์ผ๋ฉฐ, ์ด์ ๊ฐ์ด ํ๋ก์ธ์ค ๋ฐ / ๋๋ ์ค๋ ๋์ ์์ฑ์ ๋ฐ๋ผ ๋ฉ๋ชจ๋ฆฌ์ ๊ฐ์ ์ฐ์ฐ ์์์ ํ ๋น์ด ๋น๋ก์ ์ด๋ฃจ์ด์ง ์ ์๋ค.
[0113] ๋ 2 ๋ด์ง ๋ 6์ ์ฐธ์กฐํ๋ฉด, ๋ณธ ๋ฐ๋ช ์ ์ผ ์ค์ํํ(๋ 2 ์ฐธ์กฐ)์์๋, ์๋ก ๋ค๋ฅธ ํ๋ซํผ ๋๋ฉ์ธ์ ์น ์๋น์ค(์๋ก ๋ค๋ฅธ ํ๋ซํผ ๋๋ฉ์ธ์ ๋ํ URL ์ฒ๋ฆฌ)๋ฅผ ๋จ์ผ์ ๋ฐฑ์๋ ์๋ฒ๋ก๋ถํฐ ์ ๊ณตํจ์ผ๋ก์จ, ๊ฐ๊ฐ์ ํ๋ซํผ ๋๋ฉ์ธ์ ์น ์๋น์ค๋ฅผ ๊ฐ๊ฐ์ ์๋ฒ๋ก๋ถํฐ ์ ๊ณตํ๋ ๋น๊ต์(๋ 3 ์ฐธ์กฐ)์ ๋๋นํ์ฌ, ๋ฐฑ์๋ ์๋ฒ์ ์ฐ์ฐ ์์์ ๊ฐ๋์จ์ ๋์ผ ์ ์๊ณ ์ฐ์ฐ ์์์ ๋ญ๋น๊ฐ ์์ด ํจ์จ์ ์ธ ์ฐ์ฐ ์์์ ๊ฐ๋์ด ๊ฐ๋ฅํ๋ฉฐ, ๋ค์ ๋งํ๋ฉด, ๋์ผํ ์ฐ์ฐ ์์์ผ๋ก๋ถํฐ ๋ ๋ง์ ์น ์๋น์ค์ ์์ฒญ ๋ด์ง๋ ๋ ๋ง์ ํธ๋ํฝ์ ์ฒ๋ฆฌํ ์ ์์ผ๋ฉฐ, ๋์ผํ ์์ ์น ์๋ฒ์ค์ ์์ฒญ ๋ด์ง๋ ๋์ผํ ์์ ํธ๋ํฝ์ ์ฒ๋ฆฌํ๊ธฐ ์ํ ์ฐ์ฐ ์์์ ์ฑ๋ฅ์ ๋ฎ์ถ ์ ์๋ค. ์๋ฅผ ๋ค์ด, ๋ณธ ๋ฐ๋ช ์ ์ผ ์ค์ํํ์์์ ๊ฐ์ด, ๋ค์์ ํ๋ซํผ ๋๋ฉ์ธ์ ์น ์๋น์ค๋ฅผ ๋จ์ผ ๋ฐฑ์๋ ์๋ฒ๋ก๋ถํฐ ์ ๊ณตํ๊ฑฐ๋(๋ 2 ์ฐธ์กฐ) ๋๋ ๋น๊ต์(๋ 3 ์ฐธ์กฐ)์์์ ๊ฐ์ด ๊ฐ๊ฐ์ ํ๋ซํผ ๋๋ฉ์ธ์ ์น ์๋น์ค๋ฅผ ๊ฐ๊ฐ์ ๋ฐฑ์๋ ์๋ฒ๋ก๋ถํฐ ์ ๊ณตํ๊ฑฐ๋(๋ 3 ์ฐธ์กฐ), ์ด๋ ๊ฒฝ์ฐ์๋, ๊ฐ๊ฐ์ ๋ฐฑ์๋ ์๋ฒ์ ์ฐ์ฐ ์์(์๋ฅผ ๋ค์ด, CPU, memory, ๋คํธ์ํฌ N / T)์ ๋๋ต 10~30% ์ ๋๋ง ๊ฐ๋๋๊ณ ์์ผ๋ฉฐ, ์ฐ์ฐ ์์์ ๋๋ต 70% ์ ๋๋ ๊ฐ๋๋์ง ์๊ณ ์์ผ๋ฉฐ, ์๋ฅผ ๋ค์ด, ์๋ฒ์ ์ฑ๋ฅ ์ ํ๋ฅผ ๋ง๊ธฐ ์ํ์ฌ ๋๋ ํผํฌ ํธ๋ํฝ์ ์ฒ๋ฆฌ๋ฅผ ์ํ์ฌ ๋๋ ํธ๋ํฝ์ ํญ์ฃผ์ ๋ฐ๋ฅธ ์์คํ ์ ๋ค์ด ๋ฑ์ ๋ง๊ธฐ ์ํ์ฌ ๋ค์์ ์ฌ์ ์ฉ๋์ ํ๋ณดํ๊ณ ๊ฐ๋๋๋ ๊ฒ์ด ๋ฐ๋์งํ ์ ์๋ค.
[0114] ๊ฐ๊ฐ์ ํ๋ซํผ ๋๋ฉ์ธ์ ์น ์๋น์ค๊ฐ ๊ฐ๊ฐ ๋ณ๊ฐ์ ์๋ฒ๋ก๋ถํฐ ์ ๊ณต๋๋ ๋น๊ต์(๋ 3 ๋ฐ ๋ 5 ์ฐธ์กฐ)์์๋, ๊ฐ๊ฐ์ ์๋ฒ ๋ฐ๋ค ์ฌ์ ์ฉ๋์ ํ๋ณดํ๋๋ก ํต์์ ์ธ ํธ๋ํฝ์ ์ฒ๋ฆฌ๋ฅผ ์ด๊ณผํ๋ ์ฐ์ฐ ์์์ ๊ฐ๊ฐ ๊ตฌ๋นํ ํ์๊ฐ ์์ผ๋ฉฐ, ์ด์ ๋ฐ๋ผ ๊ฐ๊ฐ์ ์๋ฒ ๋ง๋ค ์ฌ์ ์ฉ๋์ ๋ํ ์ ์ฒด ์ ํด ์ฐ์ฐ ์์์ ์ฉ๋์ด ์ฆ๊ฐํ ์ ์์ผ๋, ์๋ก ๋ค๋ฅธ ํ๋ซํผ์ ์น ์๋น์ค๊ฐ ๋จ์ผ์ ๋ฐฑ์๋ ์๋ฒ๋ก๋ถํฐ ์ ๊ณต๋๋ ๋ณธ ๋ฐ๋ช ์ ์ค์ํํ(๋ 2 ์ฐธ์กฐ)์์๋ ํ๋์ ๋ฐฑ์๋ ์๋ฒ์ ์ฌ์ ์ฉ๋์ ํด๋น๋๋ ์ ํด ์ฐ์ฐ ์์์ ์ฉ๋์ด, ์์ ์ค๋ช ๋ ๋น๊ต์(๋ 3 ๋ฐ ๋ 5 ์ฐธ์กฐ)์์ ๋ณด๋ค ๊ฐ์ํ ์ ์๊ณ , ๋ค์ ๋งํ๋ฉด, ๋จ์ผ ๋ฐฑ์๋ ์๋ฒ๋ก๋ถํฐ ๋ค์์ ํ๋ซํผ์ ์น ์๋น์ค๋ฅผ ์ ๊ณตํ๋ ๋ณธ ๋ฐ๋ช (๋ 2 ์ฐธ์กฐ)์์์ ์ ํด ์ฐ์ฐ ์์์ ์ฉ๋์ด, ๊ฐ๊ฐ์ ๋ฐฑ์๋ ์๋ฒ๋ก๋ถํฐ ๊ฐ๊ฐ์ ํ๋ซํผ์ ์น ์๋น์ค๋ฅผ ์ ๊ณตํ๋ ๋น๊ต์(๋ 3 ์ฐธ์กฐ)์์์ ์ ํด ์ฐ์ฐ ์์์ ์ฉ๋ ๋ณด๋ค ์์ ์ ์๊ณ , ๋ค์ ๋งํ๋ฉด, ๋์ผํ ์ฐ์ฐ ์์์ ์ฉ๋์ผ๋ก๋ถํฐ ๋ ๋ง์ ์น ์๋น์ค ๋ด์ง๋ ํธ๋ํฝ์ ์ฒ๋ฆฌํ ์ ์์ผ๋ฉฐ, ๋์ผํ ์น ์๋น์ค ๋ด์ง๋ ํธ๋ํฝ์ ์ฒ๋ฆฌํ๊ธฐ ์ํ ์ฐ์ฐ ์์์ ์ฉ๋์ ์ค์ผ ์ ์๋ค.
[0115] ์๋ฅผ ๋ค์ด, ๋ค์์ ํ๋ซํผ ์ค์์ ์ผ๋ถ์ ํ๋ซํผ์ ๋ํ ์๋น์ค ์์ฒญ ๋ด์ง๋ ํธ๋ํฝ์ด ์ง์ค๋๋ฉด์, ์๋ฒ์ ์ฒ๋ฆฌ ์ฑ๋ฅ์ ๋์ผ ํ์๊ฐ ์์ ๋, ๋จ์ผ ๋ฐฑ์๋ ์๋ฒ๋ก๋ถํฐ ๋ค์์ ํ๋ซํผ์ ์น ์๋น์ค๋ฅผ ์ ๊ณตํ๋ ๋ณธ ๋ฐ๋ช (๋ 2 ์ฐธ์กฐ)์์๋ ์๋์ ์ผ๋ก ์๋ฒ์ ์ฒ๋ฆฌ ์ฑ๋ฅ์ ๋์ด๋๋ฐ ์๋์ ์ผ๋ก ์ ๋ฆฌํ ์์คํ ์ ์ ๊ณตํ๋๋ฐ ๋ฐํ์ฌ, ๊ฐ๊ฐ์ ์๋ฒ๋ก๋ถํฐ ๊ฐ๊ฐ์ ํ๋ซํผ์ ์น ์๋น์ค๋ฅผ ์ ๊ณตํ๋ ๋น๊ต์(๋ 3 ์ฐธ์กฐ)์์๋ ์๋ฒ์ ์ฒ๋ฆฌ ์ฑ๋ฅ์ ๋์ด๋๋ฐ ์๋์ ์ผ๋ก ๋ถ๋ฆฌํ ์ ์์ผ๋ฉฐ, ์๋ฅผ ๋ค์ด, ๋น๊ต์(๋ 3 ์ฐธ์กฐ)์์๋ ์๋ฒ์ ์ฒ๋ฆฌ ์ฑ๋ฅ์ ๋์ด๊ธฐ ์ํด ์๋ฒ ๊ฐ๊ฐ์ ์ฒ๋ฆฌ ์ฑ๋ฅ์ ๋์ด๊ธฐ ์ํ ์ค์ผ์ผ-์ (scale-up)์ด๋ ๋๋ ์๋ฒ์ ๋์๋ฅผ ์ฆ๊ฐ์ํค๋ฉด์ ํธ๋ํฝ์ ๋ถ์ฐ์ํค๋ ์ค์ผ์ผ-์์(scale-out)์ด ์๊ตฌ๋๋ฉด์ ๋น์ฉ ์ฆ๊ฐ๊ฐ ๋ถ๊ฐํผํ ์ ์์ผ๋, ๋ค์์ ํ๋ซํผ์ ์น ์๋น์ค๋ฅผ ๋จ์ผ์ ๋ฐฑ์๋ ์๋ฒ๋ก๋ถํฐ ์ ๊ณตํ๋ ๋ณธ ๋ฐ๋ช (๋ 2 ์ฐธ์กฐ)์์๋, ๋ค์์ ํ๋ซํผ ์ค์์ ์ด๋ ์ผ๋ถ์ ํ๋ซํผ์ ๋ํ ์น ์๋น์ค์ ์์ฒญ ๋ด์ง๋ ํธ๋ํฝ์ด ์ง์ค๋๋ค๊ณ ํ๋๋ผ๋, ๋๋จธ์ง ๋ค๋ฅธ ํ๋ซํผ์ ๋ํ ์น ์๋น์ค์ ์์ฒญ ๋ด์ง๋ ํธ๋ํฝ์ด ํจ๊ป ์ฆ๊ฐํ์ง ์๊ฑฐ๋ ๋๋ ์คํ๋ ค ๊ฐ์ํ๋ค๋ฉด, ๋จ์ผ ๋ฐฑ์๋ ์๋ฒ์ ์ ์ฒด ์ฒ๋ฆฌ ์ฉ๋์ ์ธก๋ฉด์์๋ ์ฆ๊ฐ ํญ์ด ์๊ฑฐ๋ ๋๋ ๋๋ฑํ ์์ค์ผ๋ก ์ ์ง๋ ์ ์๊ธฐ ๋๋ฌธ์, ๋จ์ผ ๋ฐฑ์๋ ์๋ฒ์ ์ฒ๋ฆฌ ์ฑ๋ฅ์ ๋์ด์ง ์๊ณ ๋ ์ฆ๊ฐ๋ ์ผ๋ถ ํ๋ซํผ์ ๋ํ ์น ์๋น์ค์ ์์ฒญ ๋ด์ง๋ ํธ๋ํฝ์ ์ฆ๊ฐ๋ฅผ ํก์ํ ์ ์๋ค.
[0116] ๋ณธ ๋ฐ๋ช (๋ 2 ์ฐธ์กฐ)์ ์ผ ์ค์ํํ์์๋, ๋ค์์ ํ๋ซํผ์ ์น ์๋น์ค๋ฅผ ํ๋์ ๋ฐฑ์๋ ์๋ฒ๋ก๋ถํฐ ์ ๊ณตํ๋ฉด์, ์ฐ์ฐ ์์์ ๊ณต์ ํ๋ ๋ค์์ ํ๋ซํผ์ ๋ํ ๊ณผ๊ธ ์ฒด๊ณ๋ฅผ ์ฐ์ฐ ์์์ ์ฌ์ฉ๋ ๋๋ ํธ๋ํฝ์ ์์ ๊ธฐ๋ฐํ๋ ์ ์ฑ (policy)์ ํตํ์ฌ ๊ฐ๊ฐ์ ํ๋ซํผ์ ์ด์์๋ก์๋ ํฉ๋ฆฌ์ ์ธ ๊ณผ๊ธ ์ฒด๊ณ๋ฅผ ํตํ์ฌ ์ผ์ ํ ์ฃผ๊ธฐ ๋์์ ์ฌ์ฉํ ์ ๋งํผ๋ง ๋น์ฉ์ ๋ถ๋ดํ ์ ์์ผ๋ฉฐ, ์๋ฅผ ๋ค์ด, ์ค์ ์ฌ์ฉํ์ง ์์ ์ ํด์ ์ฐ์ฐ ์์์ ๊ตฌ๋น ๋ด์ง๋ ์ ์งํ๊ธฐ ์ํ ๋น์ฉ์ ๋ถ๋ด์ ์ ๊ฑฐํ์ฌ(์์ ์ค๋ช ๋ ๋น๊ต์ ์ฐธ์กฐ) ์๋์ ์ผ๋ก ํ๋ซํผ์ ์ด์ ๋น์ฉ์ ์ ๊ฐํ ์ ์๋ค.
[0117] ๋ 4๋ฅผ ์ฐธ์กฐํ๋ฉด, ๋ณธ ๋ฐ๋ช ์ ์ผ ์ค์ํํ์์, ๋ค์์ ํ๋ซํผ์ ์น ์๋น์ค๋ฅผ ํจ๊ป ์ง์ํ๋ ๋ฐฑ์๋ ์๋ฒ์ ์ฑ๋ฅ์ ๋์ด๊ธฐ ์ํด์๋ ๋จ์ผ ๋ฐฑ์๋ ์๋ฒ์ ์ฐ์ฐ ์์(CPU, memory, network)์ ์ฑ๋ฅ์ ๋์ด๋ ์ค์ผ์ผ-์ (scale-up)๊ณผ ํจ๊ป, ๋ฐฑ์๋ ์๋ฒ์ ๋์๋ฅผ ๋๋ฆผ์ผ๋ก์จ ๊ฐ๊ฐ์ ๋ฐฑ์๋ ์๋ฒ๊ฐ ๋ด๋นํ๋ ํธ๋ํฝ์ ๋ถ์ฐ์ํค๋ ์ค์ผ์ผ-์์(scale-out)์ ๊ณ ๋ คํ ์ ์๋ค. ๋ 4๋ฅผ ์ฐธ์กฐํ๋ฉด, ๋ณธ ๋ฐ๋ช ์ ์ผ ์ค์ํํ์์๋ ๊ฐ๊ฐ ๋ค์์ ํ๋ซํผ์ ๋ํ ์น ์๋น์ค ์์ฒญ ๋ด์ง๋ ํธ๋ํฝ์ ์ฒ๋ฆฌํ๋ ๋จ์ผ ๋ฐฑ์๋ ์๋ฒ๋ฅผ ๋ณ๋ ฌ์ ์ผ๋ก ์ถ๊ฐํ์ฌ, ๋ฐฑ์๋ ์๋ฒ์ ๋์๋ฅผ ์ฆ๊ฐ์ํค๋ ์ค์ผ์ผ-์์์ ๊ตฌํํ ์ ์์ผ๋ฉฐ, ์๋ฅผ ๋ค์ด, ๋ณธ ๋ฐ๋ช ์ ์ผ ์ค์ํํ์์, ๋ ๋์ ๋ฐฑ์๋ ์๋ฒ์ ๋ณ๋ ฌ์ ์ผ๋ก ์ฐ๊ฒฐ๋ ๋ก๋ ๋ฐธ๋ฐ์(load balancer)๋ฅผ ํตํ์ฌ ๊ฐ๊ฐ์ ๋ฐฑ์๋ ์๋ฒ์ ๋ํ ํธ๋ํฝ์ ๋ถ์ฐ์ ๊ตฌํํ ์ ์๋ค.
[0118] ์๋ฅผ ๋ค์ด, ์๊ธฐ ๋ก๋ ๋ฐธ๋ฐ์๋ ๋ฐฑ์๋ ์๋ฒ๋ก ์์ฒญ๋๋ ์น ์๋น์ค ๋ด์ง๋ ํธ๋ํฝ์ ๋ณ๋ ฌ์ ์ผ๋ก ์ฐ๊ฒฐ๋ ์๋ก ๋ค๋ฅธ ๋ฐฑ์๋ ์๋ฒ์ ๋ํด ๊ท ํ์ ์ผ๋ก ๋ถ์ฐ์์ผ์ ๊ฐ๊ฐ์ ๋ฐฑ์๋ ์๋ฒ๊ฐ ๊ท ๋ฑํ๊ฒ ๋ถํ๋ฅผ ๋ถ๋ดํ๊ณ ๊ฐ๊ฐ์ ๋ฐฑ์๋ ์๋ฒ๊ฐ ํจ์จ์ ์ผ๋ก ์๋ํ๋๋ก ํ ์ ์๋ค. ์๊ธฐ ๋ก๋ ๋ฐธ๋ฐ์๋ ํธ๋ํฝ์ ๋ถ์ฐ์ ์ํ ๊ฒ์ผ๋ก, ๋ก๋ ๋ฐธ๋ฐ์์ ๋ณ๋ ฌ์ ์ผ๋ก ์ฐ๊ฒฐ๋ ์๋ก ๋ค๋ฅธ ๋ฐฑ์๋ ์๋ฒ์ ์ฐ์ฐ ์์(CPU, memory, network)์ ๊ฐ๋์จ์ ์ฐธ๊ณ ํ์ฌ ํด๋น๋๋ ๋ฐฑ์๋ ์๋ฒ๋ก ๋ถ์ฐ๋๋ ํธ๋ํฝ์ ์์ ๋ถ์ฐ์ํฌ ์ ์๋ค.
[0119] ๋ณธ ๋ฐ๋ช ์ ์ผ ์ค์ํํ์์, ์๊ธฐ ๋ก๋ ๋ฐธ๋ฐ์์ ๋ณ๋ ฌ์ ์ผ๋ก ์ฐ๊ฒฐ๋ ์๋ก ๋ค๋ฅธ ๋ฐฑ์๋ ์๋ฒ ๊ฐ๊ฐ์ ์ค์ง์ ์ผ๋ก ์์ ์ค๋ช ๋ ๋ฐ์ ๊ฐ์ ๊ตฌ์ฑ์ ํฌํจํ ์ ์์ผ๋ฉฐ, ์๋ฅผ ๋ค์ด, ๊ฐ๊ฐ์ ๋ฐฑ์๋ ์๋ฒ๋, ํด๋ผ์ด์ธํธ ์ธก์ผ๋ก๋ถํฐ ์์ฒญ๋ URL์ ๋ค์ ์คํ์ด์ค๋ฅผ ๋ถ์ํ๊ณ ๋ถ์ ๊ฒฐ๊ณผ์ ๋ฐ๋ผ URL์ด ์์ฒญ๋ ํ๋ซํผ ๋๋ฉ์ธ์ ์๋ณํ๊ธฐ ์ํ URL ํ์ฑ ๋ชจ๋(๋ 11 ๋ฐ ๋ 12 ์ฐธ์กฐ)๊ณผ, ์๋ณ๋ ํ๋ซํผ ๋๋ฉ์ธ ์์์ ์ค์ ๋ URL ๋งคํ์ ํธ์ถํ๊ธฐ ์ํ URL ๋งค์นญ ๋ชจ๋(๋ 11 ๋ฐ ๋ 12 ์ฐธ์กฐ)๊ณผ, ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ด๋ฆฌ ์์คํ ๊ณผ์ ์ฐ๋์ ๊ตฌํํ๋ฉด์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ด๋ฆฌ ์์คํ ์ ์ ๋ ฅ๋๋ ์ฟผ๋ฆฌ ๊ตฌ๋ฌธ ์์์ ์๋ณ๋ ํ๋ซํผ ๋๋ฉ์ธ์ ๋ํ ์๋ณ์ ์ ๊ณตํ๊ธฐ ์ํ DB ์ฐ๋ ๋ชจ๋(๋ 11 ๋ฐ ๋ 12 ์ฐธ์กฐ)์ ๊ฐ๊ฐ ํฌํจํ ์ ์๋ค. ๊ทธ๋ฆฌ๊ณ , ๋ก๋ ๋ฐธ๋ฐ์์ ๋ณ๋ ฌ์ ์ผ๋ก ์ฐ๊ฒฐ๋ ๊ฐ๊ฐ์ ๋ฐฑ์๋ ์๋ฒ๋, ์๋ก ๋ค๋ฅธ ๋์ผํ ์ผ๊ตฐ์ ํ๋ซํผ ๋๋ฉ์ธ์ ์น ์๋น์ค๋ฅผ ์ ๊ณตํ ์ ์์ผ๋ฉฐ, ์๋ฅผ ๋ค์ด, ์๊ธฐ ๋ก๋ ๋ฐธ๋ฐ์์ ๋ณ๋ ฌ์ ์ผ๋ก ์ฐ๊ฒฐ๋ ์๋ก ๋ค๋ฅธ ์ 1, ์ 2 ๋ฐฑ์๋ ์๋ฒ(Machine 1, Machine 2)๋, ๊ฐ๊ฐ ๋์ผํ ์ 1 ๋ด์ง ์ 3 ํ๋ซํผ ๋๋ฉ์ธ์ ์น ์๋น์ค๋ฅผ ์ ๊ณตํ ์ ์๋ค.
[0120] ๋ 2 ๋ฐ ๋ 6์ ๋์๋ ๋ฐ์ ๊ฐ์ด, ๊ฐ๊ฐ์ ํ๋ซํผ ๋๋ฉ์ธ์ ์น ์๋น์ค๋ฅผ ๊ฐ๊ฐ ์๋ก ๋ค๋ฅธ ์๋ฒ๋ก๋ถํฐ ๊ตฌํํ๋ ๋น๊ต์์์๋, ๊ฐ๊ฐ์ ํ๋ซํผ ๋๋ฉ์ธ์ ๋ํ ์๋น์ค ์์ฒญ ๋ด์ง๋ ํธ๋ํฝ์ด ์ง์ค๋๋ฉด, ์๋ฒ์ ๋์๋ฅผ ๋๋ฆผ์ผ๋ก์จ, ๊ฐ๊ฐ์ ์๋ฒ๊ฐ ๋ด๋นํ๋ ํธ๋ํฝ์ ๋ถ์ฐ์ํค๋ ์ค์ผ์ผ-์์(scale-out)์ ๊ณ ๋ คํ ์ ์์ผ๋ฉฐ, ํ๋ซํผ ๋๋ฉ์ธ์ ๋ํ ์น ์๋น์ค ์์ฒญ ๋ด์ง๋ ํธ๋ํฝ์ ์ฒ๋ฆฌํ๋ ๋จ์ผ ๋ฐฑ์๋ ์๋ฒ๋ฅผ ๋ณ๋ ฌ์ ์ผ๋ก ์ถ๊ฐํ๊ณ , ๋ ๋์ ์๋ฒ์ ๋ณ๋ ฌ์ ์ผ๋ก ์ฐ๊ฒฐ๋ ๋ก๋ ๋ฐธ๋ฐ์๋ฅผ ํตํ์ฌ ๊ฐ๊ฐ์ ๋ฐฑ์๋ ์๋ฒ์ ๋ํ ํธ๋ํฝ์ ๋ถ์ฐ์ํฌ ์ ์๋ค. ์ด๋, ๋ก๋ ๋ฐธ๋ฐ์์ ๋ณ๋ ฌ์ ์ผ๋ก ์ฐ๊ฒฐ๋ ์๋ก ๋ค๋ฅธ ์๋ฒ๋, ๋์ผํ ๋จ์ผ ํ๋ซํผ ๋๋ฉ์ธ์ ๋ํ ์น ์๋น์ค๋ฅผ ๊ตฌํํ ์ ์์ผ๋ฉฐ, ์๋ฅผ ๋ค์ด, ๋ก๋ ๋ฐธ๋ฐ์์ ๋ณ๋ ฌ์ ์ผ๋ก ์ฐ๊ฒฐ๋ ์๋ก ๋ค๋ฅธ ์ 1, ์ 2 ์๋ฒ(Machine 1, Machine 2)๋ ๊ฐ๊ฐ ๋์ผํ ๋จ์ผ ํ๋ซํผ ๋๋ฉ์ธ์ ์น ์๋น์ค๋ฅผ ์ ๊ณตํ ์ ์๋ค. ์ด์ ๊ฐ์ด ๊ฐ๊ฐ ๋์ผํ ๋จ์ผ ํ๋ซํผ ๋๋ฉ์ธ์ ์น ์๋น์ค๋ฅผ ์ ๊ณตํ๋ ์๋ก ๋ค๋ฅธ ์ 1, ์ 2 ์๋ฒ๋ฅผ ํตํ์ฌ ํธ๋ํฝ์ ๋ถ์ฐ์ํค๋ ๋น๊ต์์์๋ ๊ฐ๊ฐ์ ์๋ฒ ๋ง๋ค ์ฐ์ฐ ์์์ ์ฌ์ ์ฉ๋์ ํ๋ณดํ๋๋ก ํต์์ ์ธ ํธ๋ํฝ์ ์ฒ๋ฆฌ๋ฅผ ์ด๊ณผํ๋ ์ฐ์ฐ ์์์ ๊ฐ๊ฐ ๊ตฌ๋นํ ํ์๊ฐ ์๊ธฐ ๋๋ฌธ์, ๊ฐ๊ฐ์ ์๋ฒ ๋ง๋ค ์ฌ์ ์ฉ๋์ ๋ํ ์ ์ฒด ์ ํด ์ฐ์ฐ ์์์ ์ฉ๋์ด ์ฆ๊ฐํ ์ ์์ผ๋ฉฐ, ์ด์ ๋ฐ๋ผ ์ฐ์ฐ ์์์ ๊ฐ๋์จ์ด ๋ฎ์์ง๊ณ ์ฐ์ฐ ์์์ ๋ญ๋น๊ฐ ์ผ๊ธฐ๋ ์ ์๋ค.
[0121] ๋ณธ ๋ฐ๋ช ์ ์ฒจ๋ถ๋ ๋๋ฉด์ ๋์๋ ์ค์์๋ฅผ ์ฐธ๊ณ ๋ก ์ค๋ช ๋์์ผ๋, ์ด๋ ์์์ ์ธ ๊ฒ์ ๋ถ๊ณผํ๋ฉฐ, ๋ณธ ๋ฐ๋ช ์ด ์ํ๋ ๊ธฐ์ ๋ถ์ผ์์ ํต์์ ์ง์์ ๊ฐ์ง ์๋ผ๋ฉด ์ด๋ก๋ถํฐ ๋ค์ํ ๋ณํ ๋ฐ ๊ท ๋ฑํ ํ ์ค์์๊ฐ ๊ฐ๋ฅํ๋ค๋ ์ ์ ์ดํดํ ์ ์์ ๊ฒ์ด๋ค.
[0122] ๋ณธ ๋ฐ๋ช ์ ์น ๋๋ ์ฑ ์๋น์ค๋ฅผ ์ ๊ณตํ๊ธฐ ์ํ ๋ฐฑ์๋ ์๋ฒ ๋ฐ ๋ฐฑ์๋ ์๋ฒ ์์คํ ์ด ์ ์ฉ๋๋ ์ฐ์ ๋ถ์ผ์์ ํ์ฉ๋ ์ ์๋ค.< / script>
Claims
1. A backend server system comprising a single backend server for providing web services for different platform domains, which identifies the platform domain to which a URL is requested from a namespace configured on a URL requested to the backend server, and executes a server-side method or function associated with a URL mapping registered on each different platform domain.
2. In Paragraph 1, A backend server system characterized by having different URL mappings registered for each platform domain.
3. In Paragraph 1, A backend server system characterized by calling a server-side method or function registered on a different platform domain from different URL mappings stored as a set of codes having different files or different identifiers, based on a namespace set on the above URL.
4. In Paragraph 1, The above backend servers each include different MVC (model-view-controller) models for implementing different platform domains, and A backend server system characterized by calling a server-side method or function associated with a URL mapping registered in a controller of a different MVC model from a namespace configured on a URL requested by the backend server.
5. In Paragraph 1, The above backend server includes different MVT (model-view-template) models for implementing different platform domains, and A backend server system characterized by calling a server-side method or function associated with a URL mapping registered in the URL conf of a different MVT model from a namespace configured on a URL requested by the backend server.
6. In Paragraph 4 or 5, A backend server system characterized by different MVC models or MVT models for implementing different platform domains, each sharing the same computing resources of the backend server and the same database or database management system linked with the backend server.
7. In Paragraph 1, A backend server system characterized in that the above-described backend server is implemented as a physically single server that shares the same computational resources, including a processor and memory, for the execution of server-side methods or functions connected to URL mappings registered on different platform domains.
8. In Paragraph 1, The single operating system of the above-mentioned backend server is, To execute server-side methods or functions associated with URL mappings registered on different platform domains, independent processes or threads, or kernel objects for managing independent processes or threads, are created, A backend server system characterized by independently allocating memory to each process or thread for the execution of the generated process or thread, including at least a stack area among a code area, a data area, a heap area, and a stack area.
9. In Paragraph 1, The single operating system of the above-mentioned backend server is, A backend server system characterized by loading each process or thread onto a processor as the process or thread created for the execution of a server-side method or function associated with a URL mapping registered on each different platform domain transitions from a ready state to a run state according to processor scheduling, thereby independently executing each process or thread for the execution of a server-side method or function associated with a URL mapping registered on each different platform domain.
10. In Paragraph 1, A URL parsing module for identifying namespaces from a URL requested to the backend server side; and A backend server system characterized by including a URL matching module that matches a requested URL with a URL mapping registered on each different platform domain according to a namespace identified by the above URL parsing module.
11. In Paragraph 10, A backend server system characterized in that the above URL matching module matches a requested URL with a URL mapping stored regarding a platform domain identified by the above URL parsing module, wherein the URL mapping registered on the controller of the identified platform domain or the URL mapping registered on the URL conf of the identified platform domain is matched with the requested URL.
12. In Paragraph 1, A DB connection module for integration between the above-mentioned backend server and a database or database management system, and A backend server system characterized by further including a database or database management system that is linked to a backend server through the above-mentioned DB linkage module.
13. In Paragraph 12, The above backend server includes different MVC (model-view-controller) models for implementing different platform domains, or different MVT (model-view-template) models for implementing the server side of different platform domains, and The above DB integration module is, Connects the model classes or object-oriented code of the above MVC or MVT model with tables in a relational database or SQL (structured query language) statements through ORM (object relational mapping), A backend server system characterized by adding a namespace identified from the above URL parsing module to the name of the above model class so that tables regarding different platform domains are identified from each other.
14. In Paragraph 13, A backend server system characterized in that the above DB connection module programmatically generates an SQL statement including a CRUD (create, read, update, delete) query for a specified table with a namespace identified by the above URL parsing module attached, and transmits it to the above database or the above database management system.
15. In Paragraph 13, A backend server system characterized by the above database or database management system implementing indexing of storage locations to improve the search performance of the database from a namespace added from the DB linkage module.
16. In Paragraph 15, A backend server system characterized by the above database or database management system storing data to which the namespace is added at a location indexed by a hash value output from a hash function, using the namespace added from the DB linkage module as input.
17. In Paragraph 16, A backend server system characterized by the fact that, according to the namespace added from the above DB linkage module, data of different platform domains are stored in different storage locations indexed according to the hash value output from a hash function with the namespace as input.
18. In Paragraph 12, A backend server system characterized in that the above-mentioned server-side method or function is stored in the above-mentioned database or database management system.
19. In Paragraph 18, The above server-side method or function is, Stored in a database or database management system as a stored procedure or stored function containing a sequence of SQL statements, or, A backend server system characterized by being stored in a database or database management system in the form of compiled binary code.
20. In Paragraph 12, A backend server system characterized by methods, functions, or data of different platform domains being identified from methods, functions, or data of different platform domains according to a namespace added from the above DB linkage module.
21. In Paragraph 20, A backend server system characterized in that methods, functions, or data of the above-mentioned different platforms are stored in different storage locations indexed with different hash values โโor different index values โโthrough a hash function from a namespace added by a DB connection module.
22. In Paragraph 1, A backend server characterized in that the namespace set on the URL requested to the backend server side is directly followed by a host domain name or host IP address following the protocol of the URL, or directly followed by a port number of a communication port following the host domain name or host IP address.
23. In Paragraph 1, A backend server system characterized by further including a load balancer connected in parallel with different backend servers to implement traffic distribution for each backend server.
24. In Paragraph 23, The above load balancer is, A backend server system characterized by distributing traffic allocated to each of the different backend servers based on the utilization rate of the computational resources of each of the different backend servers.
25. In Paragraph 23, A backend server system characterized in that each of the different backend servers identifies the platform domain to which the URL was requested from a namespace configured on a URL allocated from the load balancer, and executes a server-side method or function associated with a URL mapping registered on each of the different platform domains.
26. In Paragraph 23, A backend server system characterized in that different backend servers connected in parallel with the load balancer each provide web services of the same group of platform domains.