[Spring] MVC 1νΈ (1) - μΉ μ ν리μΌμ΄μ μ΄ν΄
π μΉ μλ² (Web Server)
- HTTP κΈ°λ°μΌλ‘ λμνλ€.
- μ μ 리μμ€ μ 곡 + κΈ°ν λΆκ°κΈ°λ₯
- μ μ HTML, CSS, JS, μ΄λ―Έμ§, μμ λ±μ μ£Όκ³ λ°μ μ μμ
- e.g. NGINX, APACHE
π μΉ μ ν리μΌμ΄μ μλ² (WAS - Web Application Server)
- HTTP κΈ°λ°μΌλ‘ λμνλ€.
- μΉμλ²μ κΈ°λ₯ + @ (μ μ 리μμ€ μ 곡 κ°λ₯)
- νλ‘κ·Έλ¨ μ½λλ₯Ό μ€νν΄μ μ ν리μΌμ΄μ μ λ‘μ§μ μνν μ μμ
- λμ HTML, HTTP API (JSON)
- μλΈλ¦Ώ, JSP, μ€νλ§ MVC κΈ°μ μ¬μ©
- e.g. Tomcat, Jetty, Undertow
→ μ°¨μ΄λ μΉ μλ²λ μ μ 리μμ€(νμΌ)μ μ λ¬νκ³ , WASλ μ ν리μΌμ΄μ λ‘μ§μ μννλ€λ κ²μ΄λ€.
π μΌλ°μ μΈ μΉ μμ€ν κ΅¬μ± - Web Server, WAS, DB
- μ μ 리μμ€λ μΉ μλ²κ° μ²λ¦¬ (μμ μμΉ)
- μΉ μλ²λ μ ν리μΌμ΄μ λ‘μ§κ°μ λμ μΈ μ²λ¦¬κ° νμνλ©΄ WASμ μμ²μ μμ
- WASλ μ€μν μ ν리μΌμ΄μ λ‘μ§μ μ λ΄ν μ μμ
β WEB, WAS ꡬμ±μ μ₯μ
- μ΄λ¬ν μμ€ν ꡬμ±μ μ μ 리μμ€κ° λ§μ΄ μ¬μ©λλ©΄ μΉ μλ²λ₯Ό μ¦μ€νκ³ , μ ν리μΌμ΄μ 리μμ€κ° λ§μ΄ μ¬μ©λλ©΄ WASλ₯Ό μ¦μ€νλ μμΌλ‘ κ°κ° κ΄λ¦¬ν μ μλ€.
- μ μ 리μμ€λ§ μ 곡νλ μΉ μλ²λ μ μ£½μ§ μκ³ , λ‘μ§μ΄ λμνλ WAS μλ²λ μ μ£½λλ° μ΄λ WAS, DB μ₯μ μ μΉ μλ²κ° μ€λ₯νλ©΄μ μ 곡ν΄μ€ μ μμ
π μλΈλ¦Ώ (Servlet)
- μμΌ μ°κ²°, HTTP κΈ°λ°μΌλ‘ λ€μ΄μ¨ λ°μ΄ν°λ₯Ό νμ±, μλ΅ λ©μΈμ§λ‘ μ λ¬ν΄μ£Όλ λ±μ μν μ νλ€
- κ°λ°μλ λΉμ¦λμ€ λ‘μ§ λΆλΆλ§ μμ±ν΄μ£Όλ©΄ λλ€.
β HTTP μμ², μλ΅ νλ¦
- WASλ Request, Response κ°μ²΄λ₯Ό μλ‘ λ§λ€μ΄μ μλΈλ¦Ώ κ°μ²΄λ₯Ό νΈμΆνλ€.
- κ°λ°μλ Request, Response κ°μ²΄λ₯Ό μ¬μ©ν΄ HTTP μμ² μ 보λ₯Ό νΈλ¦¬νκ² μ¬μ©νκ³ , μλ΅ μ 보λ₯Ό μ λ ₯ν μ μλ€.
- WASλ Response κ°μ²΄μ λ΄κ²¨μλ λ΄μ©μΌλ‘ HTTP μλ΅ μ 보λ₯Ό μμ±ν΄μ μΉ λΈλΌμ°μ λ‘ λ΄λ €μ€λ€.
β μλΈλ¦Ώ 컨ν μ΄λ
- μλΈλ¦Ώμ μ§μνλ WAS
- μλΈλ¦Ώ 컨ν μ΄λλ μλΈλ¦Ώ κ°μ²΄λ₯Ό μμ±, μ΄κΈ°ν, νΈμΆ, μ’ λ£νλ μλͺ μ£ΌκΈ° κ΄λ¦¬ μν
- μλΈλ¦Ώ κ°μ²΄λ μ±κΈν€μΌλ‘ κ΄λ¦¬λ¨ (곡μ λ³μ μ¬μ© μ£Όμ!)
- JSPλ μλΈλ¦ΏμΌλ‘ λ³νλμ΄ μ¬μ©
- λμ μμ²μ μν λ©ν° μ°λ λ μ§μ
π λμ μμ² - λ©ν° μ°λ λ
β μ°λ λ (Thread)
- μ ν리μΌμ΄μ μ½λλ₯Ό νλνλ μμ°¨μ μΌλ‘ μ€ννλ κ²
- e.g. μλ°μ λ©μΈ λ©μλλ₯Ό μ²μ μ€ννλ©΄ mainμ΄λΌλ μ΄λ¦μ μ°λ λκ° μ€νλ¨
- μ°λ λλ νλ²μ νλμ μ½λ λΌμΈλ§ μννκ³ μ°λ λκ° μλ€λ©΄ μλ° μ ν리μΌμ΄μ μ μ€νν μ μμ
- λμ μ²λ¦¬κ° νμνλ©΄ μ°λ λλ₯Ό μΆκ°λ‘ μμ±
β μμ²λ§λ€ μ°λ λλ₯Ό μμ±νλ κ²½μ°
- μ₯μ
- λμ μμ²μ μ²λ¦¬ν μ μμ
- 리μμ€(CPU, λ©λͺ¨λ¦¬)κ° νμ©ν λκΉμ§ μ²λ¦¬ κ°λ₯
- νλμ μ°λ λκ° μ§μ°λμ΄λ λλ¨Έμ§ μ°λ λλ μ μ λμ
- λ¨μ
- μ°λ λ μμ±λΉμ©μ λ§€μ° λΉμ
- μ°λ λλ 컨ν μ€νΈ μ€μμΉ(μ°λ λ κ° κ΅μ²΄) λΉμ©μ΄ λ°μν¨
- μ°λ λ μμ±μ μ νμ΄ μμ΄ μμ²μ΄ λ무 λ§μ΄ μ€λ©΄ CPU, λ©λͺ¨λ¦¬ μκ³μ μ λμ΄μ μλ²κ° μ£½μ μ μμ
β μ°λ λ ν
- μ°λ λ νμ μ΄λ₯Ό 보μνμ¬ μ°λ λμ μ΅λμΉλ₯Ό μ ν΄λκ³ νμν μ°λ λλ₯Ό 보κ΄νκ³ κ΄λ¦¬νλ€.
- μ°λ λκ° νμνλ©΄ μ΄λ―Έ μμ±λμ΄ μλ μ°λ λλ₯Ό κΊΌλ΄ μ¬μ©νκ³ μ¬μ© μ’ λ£ μ μ°λ λ νμ λ°λ©νλ€.
- λͺ¨λ μ°λ λκ° μ¬μ©μ€μ΄λ©΄ κΈ°λ€λ¦¬λ μμ²μ κ±°μ νκ±°λ νΉμ μ«μλ§νΌλ§ λκΈ°νλλ‘ μ€μ ν μ μλ€.
- μ°λ λ νμ μ¬μ©νλ©΄ μ°λ λκ° λ―Έλ¦¬ μμ±λμ΄ μμΌλ―λ‘ μ°λ λλ₯Ό μμ±νκ³ μ’ λ£νλ λΉμ©(CPU)μ΄ μ μ½λκ³ , μλ΅μκ°μ΄ λΉ λ₯΄λ€λ μ₯μ μ΄ μλ€.
- λν μμ± κ°λ₯ν μ°λ λμ μ΅λμΉκ° μμΌλ―λ‘ λ§μ μμ²μ΄ λ€μ΄μλ κΈ°μ‘΄ μμ²μ μμ νκ² μ²λ¦¬ν μ μλ€.
- μ°λ λ νμ μ μ μ«μλ μ ν리μΌμ΄μ λ‘μ§μ 볡μ‘λ, CPU, λ©λͺ¨λ¦¬, IO리μμ€ μν©μ λ°λΌ λͺ¨λ λ€λ₯΄λ―λ‘ μ±λ₯ ν μ€νΈλ₯Ό νλ©΄μ μ°Ύλ κ²μ΄ μ’λ€.
→ λ©ν° μ°λ λμ λν λΆλΆμ WASκ° μ²λ¦¬ν΄μ£Όλ―λ‘ κ°λ°μλ μ°λ λμ μ΅λμΉλ§ μ€μ ν΄μ£Όλ©΄ λλ€.
π HTML, HTTP API, CSR, SSR
β μ μ 리μμ€
- κ³ μ λ HTML νμΌ, CSS, JS, μ΄λ―Έμ§, μμ λ± μ 곡
- μ£Όλ‘ μΉ λΈλΌμ°μ λ₯Ό ν΅ν΄ μ 곡λ¨
β HTML νμ΄μ§
- λμ μΌλ‘ νμν HTML νμΌμ μμ±ν΄μ μ λ¬
- JSP, νμ리νμ κ°μ λ·° ν νλ¦Ώμ μ΄μ©ν΄μ λμ μΌλ‘ HTMLμ μμ±νλ€.
- μΉ λΈλΌμ°μ λ HTMLμ ν΄μν΄μ νλ©΄μ λμ
β HTTP API
- HTMLμ΄ μλλΌ λ°μ΄ν°λ₯Ό μ λ¬
- μ£Όλ‘ JSON νμμ μ¬μ©ν¨ (κ±°μ νμ€)
- HTMLμ μ£Όκ³ λ°λ μ μ‘μ μ μΈν λͺ¨λ κ³³μμ λ°μ΄ν°λ₯Ό μ£Όκ³ λ°κ³ , νλ‘μΈμ€λ₯Ό νΈμΆνλλ° μ¬μ©
- λ€μν μμ€ν
μμ νΈμΆ
- μ± ν΄λΌμ΄μΈνΈ (ios, μλλ‘μ΄λ, PC μ±)
- μΉ λΈλΌμ°μ μμ μλ°μ€ν¬λ¦½νΈλ₯Ό ν΅ν HTTP API νΈμΆ
- React, Vue.jsκ°μ μΉ ν΄λΌμ΄μΈνΈ
- μλ² to μλ² (e.g. μ£Όλ¬Έ μλ² -> κ²°μ μλ²)
β SSR, CSR
π» SSR - μλ² μ¬μ΄λ λ λλ§ (λ°±μλ κ°λ°μ)
- HTML μ΅μ’ κ²°κ³Όλ₯Ό μλ²μμ λ§λ€μ΄μ μΉ λΈλΌμ°μ μ μ λ¬
- μ£Όλ‘ μ μ μΈ νλ©΄μ μ¬μ©
- JSP, νμ리ν
π» CSR - ν΄λΌμ΄μΈνΈ μ¬μ΄λ λ λλ§ (νλ‘ νΈμλ κ°λ°μ)
- HTML κ²°κ³Όλ₯Ό μλ°μ€ν¬λ¦½νΈλ₯Ό μ¬μ©ν΄ μΉ λΈλΌμ°μ μμ λμ μΌλ‘ μμ±ν΄μ μ μ©
- μ£Όλ‘ λμ μΈ νλ©΄μ μ¬μ©, μΉ νκ²½μ μ±μ²λΌ λΆλΆλΆλΆ λ³κ²½ν μ μμ
- React, Vue.js
κ°μ λ§ν¬
μ€νλ§ MVC 1νΈ - λ°±μλ μΉ κ°λ° ν΅μ¬ κΈ°μ - μΈνλ° | κ°μ
μΉ μ ν리μΌμ΄μ μ κ°λ°ν λ νμν λͺ¨λ μΉ κΈ°μ μ κΈ°μ΄λΆν° μ΄ν΄νκ³ , μμ±ν μ μμ΅λλ€. μ€νλ§ MVCμ ν΅μ¬ μ리μ ꡬ쑰λ₯Ό μ΄ν΄νκ³ , λ κΉμ΄μλ λ°±μλ κ°λ°μλ‘ μ±μ₯ν μ μμ΅λλ€., -
www.inflearn.com