μΉμλ² (Web Server)
μΉ κ°λ°μ νλ€λ³΄λ©΄ ν΄λΌμ΄μΈνΈμ μμ²μ λ°μ μΉμ¬μ΄νΈμ μ½ν
μΈ λ₯Ό λ°ννλ λͺ¨λ λμμ μλ²λ‘ ν΅μΌν΄μ λΆλ₯΄λ κ²½μ°κ° λ§λ€. μ©μ΄μ νλ¦° κ²μ μλμ§λ§ λλ‘λ βSpring μλ²β, βFastAPI μλ²β μ²λΌ νλ μμν¬λ₯Ό μλ²λ‘ λΆλ₯΄λ κ²½μ°κ° μκΈ°κΈ°λ νκ³ κ³Όκ±°μ λ¬λ¦¬ λ°±μλ μλ²μ νλ‘ νΈμλ μλ²λ₯Ό κ°κ° λΆλ¦¬νκΈ°λ νλ νμ¬, μΉμλ²μ μ μλ₯Ό λ€μ μ 리ν΄λ³Έλ€.
μΉμλ²μ μ μ
μΌλ¨ μΉμλ²μ μ μλ₯Ό κ²μνλ©΄ βν΄λΌμ΄μΈνΈμ μμ²μ λ°λΌ μΉμ¬μ΄νΈμ μ½ν
μΈ (ν
μ€νΈ, μ΄λ―Έμ§, HTML νμΌ λ±)λ₯Ό μ μ₯νκ³ μ 곡νλ νλμ¨μ΄ λλ μννΈμ¨μ΄βλΌκ³ λμ¨λ€. μ¬κΈ°μμ βνλμ¨μ΄ λλ μννΈμ¨μ΄βλΌλ μ μ μ£Όλͺ©ν΄μΌνλλ°, νλμ¨μ΄ κ΄μ κ³Ό μννΈμ¨μ΄ κ΄μ μ λ°λΌ λ»μ΄ λ¬λΌμ§κΈ° λλ¬Έμ΄λ€.
μννΈμ¨μ΄ κ΄μ μμ μΉμλ²λ μ¬μ©μμκ² νμν μ½ν
μΈ λ₯Ό μ 곡νλ νλ‘κ·Έλ¨μΌλ‘ μμ²μ λ°κ³ μμ² λ΄μ©μ λ°λΌ μ½ν
μΈ λ₯Ό λ°ννλ μΌλ ¨μ κ³Όμ μ μ²λ¦¬νλ€.
κ·Έλ°λ° νλμ¨μ΄ κ΄μ μμλ μμ λ§ν μΉμλ² νλ‘κ·Έλ¨μ ν¬ν¨νμ¬ μΉμ¬μ΄νΈμ μ»΄ν¬λνΈ νμΌλ€μ 물리μ μΌλ‘ μ μ₯νκ³ μΈν°λ·μ μ°κ²°λμ΄ ν΅μ μ ν μ μλ κΈ°κΈ°μ κ°λ
μΌλ‘ νμ₯λλ€. βμ¨νλ λ―Έμ€ μλ²βλ βν΄λΌμ°λ μλ²β κ°μ κ°λ
μ νλμ¨μ΄ κ΄μ μμ μλ²μ 물리μ μμΉμ λ°λΌ λλ κ²μ΄λΌκ³ λ³Ό μ μλ€.
μ΄ ν¬μ€νΈμμ κ³μ μ€λͺ
ν λ΄μ©λ€μ μννΈμ¨μ΄ κ΄μ μμμ μΉμλ²μ μ°κ΄λ λ΄μ©μ΄λΌκ³ 보면 λλ€.
μΉμλ²μ μν
(μννΈμ¨μ΄λ‘μ) μΉμλ²λ ν΄λΌμ΄μΈνΈ(μ£Όλ‘ μΉ λΈλΌμ°μ )λ‘λΆν° HTTP μμ²μ λ°μ μ μ μ½ν
μΈ (Static Content)λ₯Ό κ·Έλλ‘ μλ΅νλ νλ‘κ·Έλ¨μ΄λ€. μ¦, λΈλΌμ°μ κ° μμ²ν νμΌμ βκ·Έλλ‘β λλ €μ£Όλ μν μ νλ κ²μΌλ‘ HTML, CSS, JavaScript νμΌ λ° μ΄λ―Έμ§, ν°νΈ, λμμ λ±μ μ 곡νλ€.
λνμ μΌλ‘λ Nginxμ Apacheκ° μΉμλ²λ‘ λ§μ΄ μ¬μ©λλ€.
μ¬κΈ°μ μ£Όμν κ²μ μΉμλ²λ ν΄λΌμ΄μΈνΈμ μμ²μ λ°λΌ λ΄μ©μ΄ λ¬λΌμ§λ λμ μ½ν
μΈ μ μ²λ¦¬λ₯Ό νμ§λ μλλ€λ κ²μ΄λ€. λμ μ½ν
μΈ μ μμ±μ WAS(Web Application Server)μ μν λ‘ μΉμλ²μ WASλ μλ‘ λ€λ₯΄λ€.
νΉμ§ μμ½
- μ²λ¦¬ λμ: μ μ νμΌ (HTML, CSS, JS λ±)
- μ€ν λ°©μ: μμ² λ°μ νμΌμ κ·Έλλ‘ μλ΅
- μλ: λ§€μ° λΉ λ¦ (I/O μ€μ¬, CPU λΆλ΄ μ μ)
- μμ: Nginx, Apache
μΉμλ² μν μ νμ₯
κ·Έλ°λ°, μλ¬Έμ΄ νλ λ λ€. μΉμ¬μ΄νΈμ μ μ μ½ν
μΈ λ§ μλΉνλ κ³Όκ±°μ λ¬λ¦¬ νμ¬λ λμ μ½ν
μΈ μ μ λ¬μ΄ μ€μν΄μ§κ³ μΉμλΉμ€μ 볡μ‘λκ° λμμ§λ©΄μ νλ‘ νΈμλ μλ²μ λ°±μλ μλ²λ₯Ό λΆλ¦¬ν΄μ μ¬μ©νλ κ²½μ°κ° λ§λ€.
λ¨Όμ μ€λͺ
νλλ‘ μΉμλ²μ μν μ΄ μ μ μ½ν
μΈ λ₯Ό μ λ¬νλ κ²μ΄λΌλ©΄ λ μ΄μ μ§μ html, css, js λ±μ λ€λ£¨μ§ μλ λ°±μλ API ꡬμ±μ nginx, apacheκ° ν¬ν¨λ νμκ° μλ€. κ·ΈλΌμλ μΉμλ²λ λ°λμ WASμ ν¨κ» μ¬μ©νλλ°, κ·Έ μ΄μ λ λ€μκ³Ό κ°λ€.
κ²μ΄νΈμ¨μ΄λ‘μμ μΉμλ²
κ²μ΄νΈμ¨μ΄λ λ€νΈμν¬λ μμ€ν
μ€κ³μμ λ κ°μ μλ‘ λ€λ₯Έ νκ²½μ μ°κ²°νλ κ΄λ¬Έ μν μ νλ κ΅¬μ± μμλ‘ ν΅μ μ μ€κ°νκ³ νλ‘ν μ½μ λ³νν΄μ£ΌκΈ°λ νλ€.
νλ λ°±μλ ꡬ쑰μμ μΉμλ²λ λ¨μν HTML, CSS, JS νμΌμ μ λ¬ν기보λ€λ λͺ¨λ μΈλΆ μμ²μ΄ ν΅κ³Όνλ API κ²μ΄νΈμ¨μ΄ μν μ νλ©° μ¬μ©μμ μμ²μ΄ WASλ λ°±μλ μ ν리μΌμ΄μ
μ λΏκΈ° μ μ 보μ, λΌμ°ν
, μΊμ±, μμΆ λ±μ μ²λ¦¬νλ λ μ΄μ΄λ‘ μν νλ€.
리λ²μ€ νλ‘μ (Reverse Proxy)
βλ리μΈβμ λ»νλ λ¨μ΄μμ μ λν νλ‘μ(Proxy)λ λ€νΈμν¬ ν΅μ μμ ν΄λΌμ΄μΈνΈμ μλ² μ¬μ΄μ μμΉνμ¬ μ€κ³ μν μ νλ μμ€ν
μ΄λ€. νλ‘μμ μ£Όμ μν μ 보μ κ°ν, μΉ νΈλν½ κ΄λ¦¬, κ°μΈ μ 보 보νΈ, μΊμ±μ ν΅ν μ±λ₯ ν₯μ λ±μ΄ μλ€.
ν¬μλ νλ‘μ(Forward Proxy)λ ν΄λΌμ΄μΈνΈ μΈ‘μ μμΉνλ©° μ¬μ©μκ° μΈν°λ· μμ μ‘΄μ¬νλ μλ²λ€κ³Ό μ°κ²°ν λ μ΄λ₯Ό λμ μ°κ²°νμ¬ μ¬μ©μμ IP μ£Όμλ₯Ό μ¨κ²¨ 보μμ κ°ννκ³ μ΅λͺ
μ±μ μ 곡νλ λ±μ μν μ νλ€.
μ΄μ λ°λλλ 리λ²μ€ νλ‘μ(Reverse Proxy)λ μλ² μΈ‘μ μμΉνμ¬ μΈλΆμμ μ€λ μμ²μ μ²λ¦¬νλ κ²μΌλ‘ μλ² λ΄λΆ λ€νΈμν¬ κ΅¬μ‘°κ° λ
ΈμΆλμ§ μλλ‘ λλ¦¬λ‘ μμ²μ λ°μ μ²λ¦¬νλ€.
λ‘λ λ°Έλ°μ±
λμ©λ νΈλν½ μ²λ¦¬λ₯Ό μν΄ λ¬Όλ¦¬μ μλ²λ₯Ό μ¬λ¬κ°λ‘ ꡬμ±ν κ²½μ° νΉμ μλ²μ νΈλν½μ΄ λͺ°λ¦¬μ§ μλλ‘ νκΈ° μν λ³λ λ‘μ§μ ꡬννμ§ μμλ nginxλ apacheλ₯Ό ν΅ν΄ νΈλν½μ λΆμ° μν¬ μ μλ€.
μ΄λ₯Ό ν΅ν΄ WASμ μ§μ μ°κ²°νμ§ μμλ μν νμ₯μ΄ μ¬μμ§κ³ λ€μ΄λ μλ²λ₯Ό μλμΌλ‘ κ°μ§νμ¬ κ΄λ¦¬ν μλ μλ€.
보μ (Security Layer)
HTTPS(SSL/TLS) νλ‘ν μ½ μ€νμ μΉμλ²κ° λ΄λΉνμ¬ μ΄ν WASλ HTTPS μ²λ¦¬μ κ΄μ¬νμ§ μλλ‘ ν μ μλ€. λν νΉμ IP μ°¨λ¨, μμ² μ ν(Rate Limiting), CORS μ μ΄ λ±λ μΉμλ²μμ μ²λ¦¬κ° κ°λ₯νλ€.
μ±λ₯ μ΅μ ν
μμ²μ GzipμΌλ‘ μμΆνμ¬ μ μ‘νκ±°λ HTTP/2, Keep-Alive, Connection μ¬μ¬μ© μ§μ, μΊμ± λ±μ ν΅ν΄ μ±λ₯ μ΅μ νλ₯Ό μ§νν μλ μλ€.
λ€λ₯Έ κΈ°λ₯λ€μ ν¬ν¨νμ¬ κ²°κ³Όμ μΌλ‘ μΉμλ²λ WASκ° λΉμ¦λμ€ λ‘μ§μλ§ μ§μ€νλλ‘ λμμ£Όλ 보쑰 μ₯μΉλ‘μμ μν μ νλ€.
κ²°λ‘
μ μ νμΌ μλΉμ΄ μΉμλ²μ μ΅μ΄ μν μ΄μμΌλ μ΄ν κΈ°λ₯λ€μ΄ μΆκ°λλ©΄μ μμ²μ κ΄λ¦¬, 보νΈ, λΆλ°°νλ μν μ λ μ€μ μ μΌλ‘ νκ² λλ©΄μ μΉμλ²λ μ¬μ ν λ°±μλλ₯Ό ꡬμ±νλ νλ‘κ·Έλ¨λ‘μ νμμ μΌλ‘ μ¬μ©λκ³ μλ€. λν μΉμλ²λ λ°±μλμμλ§ μ¬μ©λμ§ μκ³ νλ‘ νΈμλ μλ²μμλ μ¬μ©λλ©° μ μ μ½ν
μΈ μ 곡μ μν κΈ°μ‘΄ μν μμ μνμ€μ΄λ€.
Β