
๐ง๐ป ์ํ์น(Apache)๋ ๋ฌด์์ธ๊ฐ?
๊ฐ๋ฐ์์ *์ํ์น(Apache)*๋ผ๊ณ ํ๋ฉด ๋ณดํต **์ํ์น HTTP ์๋ฒ(Apache HTTP Server)**๋ฅผ ์๋ฏธํฉ๋๋ค.
์ ์ธ๊ณ์์ ๊ฐ์ฅ ์ค๋๋๊ณ ๋๋ฆฌ ์ฌ์ฉ๋ ์น ์๋ฒ(Web Server) ์ค ํ๋๋ก, ์น์ฌ์ดํธ๋ ์น ์ ํ๋ฆฌ์ผ์ด์
์ ์ธํฐ๋ท์ ๊ณต๊ฐํ ๋ ์ฌ์ฉํ๋ ํต์ฌ ์ํํธ์จ์ด์
๋๋ค.
โญ ์์ฝ
- ์น ์๋ฒ ์ํํธ์จ์ด
- ์น ๋ธ๋ผ์ฐ์ ์์ฒญ(์: ํฌ๋กฌ)์ ๋ฐ์์ ์น ํ์ด์ง๋ฅผ ๋๋ ค์ฃผ๋ ์ญํ
- ์คํ์์ค, ๋ฌด๋ฃ, ์์ ์
- ์ํ์น ์ฌ๋จ(Apache Software Foundation)์์ ๊ด๋ฆฌ
- PHP, Python ๋ฑ ๋ค์ํ ์น ์ ํ๋ฆฌ์ผ์ด์ ๊ณผ ์ฝ๊ฒ ์ฐ๋
๐ ์ํ์น๊ฐ ํ๋ ์ผ
### 1. HTTP ์์ฒญ ์ฒ๋ฆฌ
์ฌ์ฉ์๊ฐ ์ฃผ์์ฐฝ์ www.example.com์ ์ ๋ ฅ → ์ํ์น๊ฐ ํด๋น ์์ฒญ์ ๋ฐ๊ณ → HTML, CSS, JS ๋ฑ์ ํ์ผ์ ์ ๋ฌํฉ๋๋ค.
### 2. ๋์ ์ฝํ ์ธ ์ฒ๋ฆฌ
์ํ์น๋ PHP, Python, Perl ๋ฑ ๋ค์ํ ์ธ์ด์ ์ฐ๋ํด ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ ๋ค ๊ฒฐ๊ณผ๋ฅผ ๋ธ๋ผ์ฐ์ ์ ๋ณด์ฌ์ค ์ ์์ต๋๋ค.
(LAMP ํ๊ฒฝ: Linux + Apache + MySQL + PHP ๊ตฌ์ฑ์ ํต์ฌ ์์)
### 3. ๋ชจ๋ ๊ธฐ๋ฐ ํ์ฅ
ํ์ํ ๊ธฐ๋ฅ์ ๋ชจ๋ ํํ๋ก ์ถ๊ฐํ ์ ์์ต๋๋ค.
์์:
- mod_rewrite: URL ์ฌ์์ฑ
- mod_ssl: HTTPS(SSL ์ธ์ฆ์) ์ง์
- mod_security: ๋ณด์ ๊ฐํ
๐ ์ํ์น vs Nginx ๋น๊ต (๊ฐ๋จ ์ ๋ฆฌ)
| ๊ตฌ์กฐ | ํ๋ก์ธ์ค ๊ธฐ๋ฐ | ์ด๋ฒคํธ ๊ธฐ๋ฐ |
| ์ฅ์ | ์ ์ฐํ๊ณ ๋ชจ๋ ๋ง์ | ๊ณ ์ฑ๋ฅ, ํธ๋ํฝ ์ฒ๋ฆฌ ์ฐ์ |
| ์ฌ์ฉ | ์ ํต์ ์ผ๋ก ์์ /์คํ์์ค์์ ๋๋ฆฌ ์ฌ์ฉ | ์ต๊ทผ ๊ณ ๋ถํ ์๋ฒ์์ ์ธ๊ธฐ |
๐ก ๊ฐ๋ฐ์๋ค์ด ์ํ์น๋ฅผ ์ฐ๋ ์ด์
- ์ค์ ์ด ์ง๊ด์ ์ด๊ณ ๋ฌธ์๊ฐ ๋ง์
- ์ค๋๋ ํ๋ก์ ํธ๋ถํฐ ์ต์ ํ๋ก์ ํธ๊น์ง ํญ๋๊ฒ ์ฌ์ฉ
- WordPress, Joomla ๋ฑ CMS์ ํธํ์ฑ ์ข์
- ์์ ์ ์ด๊ณ ์คํ์์ค๋ผ ๊ธฐ์ ์์๋ ๋ง์ด ์ฌ์ฉ
๐ง ๋จธ์ ๋ฌ๋·๋ฅ๋ฌ๋ ์์คํ ์ ๊ตฌ์ถํ ๋
“์๋ฐ ์คํํฌ(Java Spark) ๋์ ํ์ด์ฌ์ผ๋ก ์ด๋ค ๊ฑธ ์ฐ๋ฉด ์ข์๊น?”
๋ผ๋ ์ง๋ฌธ์ ์ฌ์ค์ Spark ๊ฐ์ ๋ถ์ฐ ์ฒ๋ฆฌ·๋๊ท๋ชจ ๋ฐ์ดํฐ ์ฒ๋ฆฌ ํ๋ ์์ํฌ๋ฅผ ํ์ด์ฌ์์ ์ด๋ค ๊ฒ์ผ๋ก ๋์ฒดํ ์ ์๋๋๋ฅผ ๋ฌป๋ ๊ฒ์
๋๋ค.
์๋์์ Spark ↔ Python ์ํ๊ณ ๋์ ๊ด๊ณ๋ฅผ ๊ธฐ์ค์ผ๋ก ์ ๋ฆฌํด ๋๋ฆด๊ฒ์!
๐ฅ ๊ฒฐ๋ก ๋จผ์ : Spark๋ฅผ ๋์ฒดํ ์ ์๋ ํ์ด์ฌ ๊ธฐ๋ฐ ๋์
โ PySpark (Spark์ ํ์ด์ฌ ๋ฒ์ ) — ๊ฐ์ฅ ์ง์ ์ ์ธ ๋์ฒด
- Spark๋ฅผ ๊ทธ๋๋ก ์ฌ์ฉํ๋ฉด์ ํ์ด์ฌ ๋ฌธ๋ฒ์ผ๋ก ๊ฐ๋ฐ ๊ฐ๋ฅ
- ๊ธฐ์กด Spark ๊ธฐ๋ฐ ์ธํ๋ผ๊ฐ ์๋ค๋ฉด ๊ฐ์ฅ ์์ฐ์ค๋ฌ์ด ์ ํ
- ๋๊ท๋ชจ ๋ฐ์ดํฐ ์ฒ๋ฆฌ + ๋ถ์ฐ ML ํ์ดํ๋ผ์ธ ๊ตฌ์ถ ๊ฐ๋ฅ
๐ Spark ๊ธฐ๋ฅ ๊ทธ๋๋ก ์ฐ๊ณ ์ถ์ผ๋ฉด ์ด๊ฒ์ด ์ ๋ต์ ๋๋ค.
๐งฉ Spark์ ์ ์ฌํ ํ์ด์ฌ ๊ธฐ๋ฐ ๋์ฒด ํ๋ ์์ํฌ๋ค
### โก Dask — ํ์ด์ฌ ๊ธฐ๋ฐ ๋ถ์ฐ ์ฒ๋ฆฌ์ ๋ํ
- Spark๋ณด๋ค ํ์ด์ฌ ์นํ์
- NumPy, Pandas์ ์์ฐ์ค๋ฝ๊ฒ ์ฐ๋
- ๋จ์ผ ๋จธ์ → ํด๋ฌ์คํฐ ํ์ฅ ๊ฐ๋ฅ
- ML๊ณผ DL ์ํฌ๋ก๋๋ pipeline ๊ตฌ์ฑ ๊ฐ๋ฅ
๐ก “Spark ๋๋์ ์ด๋ฆฌ๋ฉด์ Pythonicํ๊ฒ ํ๊ณ ์ถ๋ค”๋ฉด ๋งค์ฐ ์ข์ ์ ํ.
### โข Ray — ์ต์ ํธ๋ ๋, ๋ถ์ฐ AI ์์คํ ํนํ
- Uber์์ ๋ง๋ ๊ณ ์ฑ๋ฅ ๋ถ์ฐ ํ๋ ์์ํฌ
- ๋ชจ๋ธ Serving, ํ์ดํ๋ผ์ธ, ํ์ดํผํ๋ผ๋ฏธํฐ ํ๋ ๋ฑ AI ์ ์ฉ ๊ธฐ๋ฅ ๊ฐํจ
- Spark๋ณด๋ค ์ ์ฐํ๊ณ , ์ต์ ML/DL ์ํฌ๋ก๋์ ๋ ์ ๋ง์
๐ก “๋ฅ๋ฌ๋ ์ค์ฌ์ ๋ถ์ฐ ์์คํ ”์ ์ํ๋ค๋ฉด Spark๋ณด๋ค Ray๊ฐ ๋ ์ข๋ค๋ ํ๊ฐ๋ ๋ง์ต๋๋ค.
### โฃ Modin — Pandas์ ๋ณ๋ ฌ·๋ถ์ฐ ๋ฒ์
- ๋ด๋ถ ์์ง์ Ray๋ Dask๋ก ์ฌ์ฉ
- ์ฝ๋ ๋ณ๊ฒฝ ์์ด import pandas as pd → import modin.pandas as pd๋ก ๋๊ท๋ชจ ์ฒ๋ฆฌ ๊ฐ๋ฅ
- Spark DataFrame๋ณด๋ค Pandas ๊ฐ์์ ๊ฐ๋ฐ ์๋ ๋น ๋ฆ
๐ก Spark DataFrame์ฒ๋ผ ๋๋ฆฌ์ง๋ง ์์ ํ ์ฒ๋ฆฌ๋ณด๋ค Pandas ์คํ์ผ์ด ๋ ์ต์ํ๋ค๋ฉด ์ถ์ฒ.
### โค Koalas → Pandas API on Spark
- Koalas๋ ํ์ฌ Spark์ ํก์๋จ (Pandas API on Spark)
- Spark ์ธํ๋ผ ๊ทธ๋๋ก, Pandas ๋ฌธ๋ฒ์ผ๋ก ์์ ๊ฐ๋ฅ
- “Spark๋ ์ฐ๋, DataFrame ์ฒ๋ฆฌ๋ง Pandas์ฒ๋ผ ํ๊ณ ์ถ๋ค”๋ฉด ์ ํฉ
๐ค ๋ฅ๋ฌ๋(Deep Learning) ์ค์ฌ์ด๋ผ๋ฉด?
Spark๋ ๋ฅ๋ฌ๋์ฉ์ผ๋ก ์ ํฉํ์ง ์๊ธฐ ๋๋ฌธ์, ํ์ด์ฌ์์๋ ์๋ ์กฐํฉ์ ๋ง์ด ์๋๋ค.
- PyTorch + Ray (๋๊ท๋ชจ ํ์ต, ๋ถ์ฐ ํ๋ จ)
- TensorFlow/Keras + TF-Distributed
- Lightning + DDP, FSDP, DeepSpeed
๐ก “ML + ๋๊ท๋ชจ ๋ฐ์ดํฐ ์ฒ๋ฆฌ” → Spark / Dask / Ray
๐ก “๋ฅ๋ฌ๋ ์ค์ฌ ๋ถ์ฐ ํ์ต” → Ray + PyTorch/TensorFlow
๐งญ ์ ๋ฆฌ: ์ํฉ๋ณ ์ต์ ์ ํ
| Spark ๊ทธ๋๋ก ์ฐ๊ณ ์ถ์ | PySpark |
| Spark๋ฅผ Pythonicํ๊ฒ ๋์ฒด | Dask |
| ML/DL ์ค์ฌ AI ์์คํ ๊ตฌ์ถ | Ray |
| Pandas ์คํ์ผ๋ก ๋๊ท๋ชจ ์ฒ๋ฆฌ | Modin |
| Spark๋ ์ ์งํ์ง๋ง Pandas ๋ฌธ๋ฒ ์ฌ์ฉ | Pandas API on Spark |
๐ ์ถ์ฒ ์๋๋ฆฌ์ค๋ณ ์์
โ ๋ฐ์ดํฐ 100GB ์ด์ + ML
→ Dask, PySpark
โ ๋ฅ๋ฌ๋ ๋ชจ๋ธ ๋ถ์ฐ ํ์ต + Serving
→ Ray, PyTorch Lightning
โ ๊ธฐ์กด ์ธํ๋ผ๊ฐ Spark ๊ธฐ๋ฐ
→ ๋ฌด์กฐ๊ฑด PySpark (์ด๋ ๋น์ฉ์ด ๊ฐ์ฅ ์ ์)
๐ฆ __init__.py ํ์ผ์ด ๋ญ์์?
ํ์ด์ฌ์์ __init__.py๋ ํด๋๋ฅผ “ํจํค์ง(package)”๋ก ์ธ์์ํค๋ ํ์ผ์
๋๋ค.
์ฆ, ์ด ํ์ผ์ด ์์ผ๋ฉด ํด๋น ํด๋๋ฅผ ๋ชจ๋์ฒ๋ผ import ํ ์ ์๊ฒ ๋ฉ๋๋ค.
โญ ์์ฝ (ํ๋์ ๋ณด๊ธฐ)
- ํด๋๋ฅผ ํ์ด์ฌ ํจํค์ง๋ก ๋ง๋๋ ์ญํ
- ํจํค์ง๊ฐ import๋ ๋ ์คํํ ์ด๊ธฐ ์ฝ๋ ์์ฑ ๊ฐ๋ฅ
- ํจํค์ง ์ธ๋ถ์ ๊ณต๊ฐํ ๋ชจ๋·ํด๋์ค ์ง์ ๊ฐ๋ฅ
- ์์ผ๋ฉด ํจํค์ง๊ฐ ์๋๋ผ๊ณ ํ๋จํ๋ ์์ ์ด ์์์ง๋ง, ํ์ฌ๋ ์ค์ํ ์ญํ ์ ํจ
๐ ์ข ๋ ์์ธํ ์ค๋ช ํ๋ฉด
### 1. ํด๋๋ฅผ ํจํค์ง๋ก ๋ง๋ฆ
์๋ฅผ ๋ค์ด ๊ตฌ์กฐ๊ฐ ์๋์ฒ๋ผ ์์ ๋:
myapp์ ํจํค์ง๊ฐ ๋๋ฏ๋ก,
์ฒ๋ผ ๋ถ๋ฌ์ค๋ ๊ฒ์ด ๊ฐ๋ฅํด์ง๋๋ค.
### 2. ํจํค์ง๊ฐ import๋ ๋ ์คํํ ์ด๊ธฐํ ์ฝ๋
์:
→ ๋๊ตฐ๊ฐ import myapp ํ๋ฉด ์ ๋ฌธ๊ตฌ๊ฐ ์ถ๋ ฅ๋ฉ๋๋ค.
### 3. ํจํค์ง์์ ์ธ๋ถ์ ๊ณต๊ฐํ API ์ ์ (__all__)
์ด๋ฌ๋ฉด
ํ์ ๋ add, subtract๋ง ๊ฐ์ ธ์ค๋๋ก ์ ์ดํ ์ ์์ต๋๋ค.
### 4. ์ฌ๋ฌ ํ์ผ์ ํ๋์ ํจํค์ง์ฒ๋ผ ๋ณด์ด๊ฒ ํตํฉ
์: ํจํค์ง ๋ด๋ถ ํ์ผ์ ๊ฐ๋จํ ๊ฒฝ๋ก๋ก ๊ฐ์ ธ์ค๊ณ ์ถ์ ๋
๊ทธ๋ฌ๋ฉด
์ฒ๋ผ ๊น๋ํ๊ฒ ์ธ ์ ์์ต๋๋ค.
๐ __init__.py๊ฐ ์์ด๋ ๋๋์?
ํ์ด์ฌ 3.3 ์ดํ๋ถํฐ๋ ํด๋์ __init__.py๊ฐ ์์ด๋
“์์์ ๋ค์์คํ์ด์ค ํจํค์ง(implicit namespace package)”๋ก ์ธ์๋ ์ ์์ต๋๋ค.
ํ์ง๋ง ์ค์ ์์๋ ์ฌ์ ํ ๋ฃ๋ ๊ฒ์ด ํ์ค์ ์ด๊ณ ์์ ํฉ๋๋ค.
์๋ํ๋ฉด:
- ์ด๊ธฐํ ์ฝ๋ ๋ฃ์ ์ ์์
- __all__ ๋ฑ API ์ ์ด ๊ฐ๋ฅ
- ์ผ๋ถ ๋๊ตฌ(setuptools ๋ฑ)์์ ๋ช ์์ ์ธ ํจํค์ง ์ฌ์ฉ ์ ํธ
- ๋๊ท๋ชจ ํ๋ก์ ํธ ๊ตฌ์กฐ ๊ด๋ฆฌ์ ์ ์ฉ
๊ทธ๋์ ๋๋ถ๋ถ์ ํ์ ํ๋ก์ ํธ์์๋ ๊ณ์ ์ฌ์ฉํฉ๋๋ค.
๐งญ ์ค์ํ ํฌ์ธํธ ํ ์ค ์์ฝ
__init__.py๋ “์ด ํด๋๋ Python ํจํค์ง์ผ!”๋ผ๊ณ ์๋ ค์ฃผ๋ ์ ๋ถ์ฆ ๊ฐ์ ํ์ผ์ ๋๋ค.
ํ์ํ์๋ฉด example ํจํค์ง๋ฅผ ์ง์ ๋ง๋ค์ด ๋ณด์ฌ๋๋ฆด๊น์?
์์ฑ์๊ฐ ํ๋์ผ ์ด๊ธฐํ
initializar
ํด๋๋ ์๋์ํจ
app์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
'Project ESG+AI > Tech Basics' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| 40์ผ์ฐจ. IT ๊ฐ๋ ์ ๋ฆฌ (0) | 2025.12.08 |
|---|---|
| 39์ผ์ฐจ. IT ๊ฐ๋ ์ ๋ฆฌ (0) | 2025.12.05 |
| 37์ผ์ฐจ. IT ๊ฐ๋ ์ ๋ฆฌ (0) | 2025.11.28 |
| 36์ผ์ฐจ. IT ๊ฐ๋ ์ ๋ฆฌ (0) | 2025.11.27 |
| 35์ผ์ฐจ. IT ๊ฐ๋ ์ ๋ฆฌ (0) | 2025.11.26 |