๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Project ESG+AI/Tech Basics

38์ผ์ฐจ. IT ๊ฐœ๋… ์ •๋ฆฌ

by GreenJin_S2 2025. 12. 4.

 

 


๐Ÿง‘‍๐Ÿ’ป ์•„ํŒŒ์น˜(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 ๋น„๊ต (๊ฐ„๋‹จ ์ •๋ฆฌ)

ํ•ญ๋ชฉApacheNginx
๊ตฌ์กฐ ํ”„๋กœ์„ธ์Šค ๊ธฐ๋ฐ˜ ์ด๋ฒคํŠธ ๊ธฐ๋ฐ˜
์žฅ์  ์œ ์—ฐํ•˜๊ณ  ๋ชจ๋“ˆ ๋งŽ์Œ ๊ณ ์„ฑ๋Šฅ, ํŠธ๋ž˜ํ”ฝ ์ฒ˜๋ฆฌ ์šฐ์ˆ˜
์‚ฌ์šฉ ์ „ํ†ต์ ์œผ๋กœ ์ƒ์—…/์˜คํ”ˆ์†Œ์Šค์—์„œ ๋„๋ฆฌ ์‚ฌ์šฉ ์ตœ๊ทผ ๊ณ ๋ถ€ํ•˜ ์„œ๋ฒ„์—์„œ ์ธ๊ธฐ

๐Ÿ’ก ๊ฐœ๋ฐœ์ž๋“ค์ด ์•„ํŒŒ์น˜๋ฅผ ์“ฐ๋Š” ์ด์œ 

  • ์„ค์ •์ด ์ง๊ด€์ ์ด๊ณ  ๋ฌธ์„œ๊ฐ€ ๋งŽ์Œ
  • ์˜ค๋ž˜๋œ ํ”„๋กœ์ ํŠธ๋ถ€ํ„ฐ ์ตœ์‹  ํ”„๋กœ์ ํŠธ๊นŒ์ง€ ํญ๋„“๊ฒŒ ์‚ฌ์šฉ
  • 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/ __init__.py utils.py

myapp์€ ํŒจํ‚ค์ง€๊ฐ€ ๋˜๋ฏ€๋กœ,

 
import myapp import myapp.utils

์ฒ˜๋Ÿผ ๋ถˆ๋Ÿฌ์˜ค๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ•ด์ง‘๋‹ˆ๋‹ค.


### 2. ํŒจํ‚ค์ง€๊ฐ€ import๋  ๋•Œ ์‹คํ–‰ํ•  ์ดˆ๊ธฐํ™” ์ฝ”๋“œ

์˜ˆ:

 
# __init__.py print("myapp ํŒจํ‚ค์ง€๊ฐ€ ๋ถˆ๋Ÿฌ์™€์กŒ์Šต๋‹ˆ๋‹ค!")

→ ๋ˆ„๊ตฐ๊ฐ€ import myapp ํ•˜๋ฉด ์œ„ ๋ฌธ๊ตฌ๊ฐ€ ์ถœ๋ ฅ๋ฉ๋‹ˆ๋‹ค.


### 3. ํŒจํ‚ค์ง€์—์„œ ์™ธ๋ถ€์— ๊ณต๊ฐœํ•  API ์ •์˜ (__all__)

 
# __init__.py from .utils import add, subtract __all__ = ["add", "subtract"]

์ด๋Ÿฌ๋ฉด

 
from myapp import *

ํ–ˆ์„ ๋•Œ add, subtract๋งŒ ๊ฐ€์ ธ์˜ค๋„๋ก ์ œ์–ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


### 4. ์—ฌ๋Ÿฌ ํŒŒ์ผ์„ ํ•˜๋‚˜์˜ ํŒจํ‚ค์ง€์ฒ˜๋Ÿผ ๋ณด์ด๊ฒŒ ํ†ตํ•ฉ

์˜ˆ: ํŒจํ‚ค์ง€ ๋‚ด๋ถ€ ํŒŒ์ผ์„ ๊ฐ„๋‹จํ•œ ๊ฒฝ๋กœ๋กœ ๊ฐ€์ ธ์˜ค๊ณ  ์‹ถ์„ ๋•Œ

 
mypkg/ __init__.py a.py b.py
 
# __init__.py from .a import A from .b import B

๊ทธ๋Ÿฌ๋ฉด

 
from mypkg import A, B

์ฒ˜๋Ÿผ ๊น”๋”ํ•˜๊ฒŒ ์“ธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


๐Ÿ“Œ __init__.py๊ฐ€ ์—†์–ด๋„ ๋˜๋‚˜์š”?

ํŒŒ์ด์ฌ 3.3 ์ดํ›„๋ถ€ํ„ฐ๋Š” ํด๋”์— __init__.py๊ฐ€ ์—†์–ด๋„
“์•”์‹œ์  ๋„ค์ž„์ŠคํŽ˜์ด์Šค ํŒจํ‚ค์ง€(implicit namespace package)”๋กœ ์ธ์‹๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ์‹ค์ „์—์„œ๋Š” ์—ฌ์ „ํžˆ ๋„ฃ๋Š” ๊ฒƒ์ด ํ‘œ์ค€์ ์ด๊ณ  ์•ˆ์ „ํ•ฉ๋‹ˆ๋‹ค.

์™œ๋ƒํ•˜๋ฉด:

  • ์ดˆ๊ธฐํ™” ์ฝ”๋“œ ๋„ฃ์„ ์ˆ˜ ์žˆ์Œ
  • __all__ ๋“ฑ API ์ œ์–ด ๊ฐ€๋Šฅ
  • ์ผ๋ถ€ ๋„๊ตฌ(setuptools ๋“ฑ)์—์„œ ๋ช…์‹œ์ ์ธ ํŒจํ‚ค์ง€ ์‚ฌ์šฉ ์„ ํ˜ธ
  • ๋Œ€๊ทœ๋ชจ ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ ๊ด€๋ฆฌ์— ์œ ์šฉ

๊ทธ๋ž˜์„œ ๋Œ€๋ถ€๋ถ„์˜ ํ˜„์—… ํ”„๋กœ์ ํŠธ์—์„œ๋Š” ๊ณ„์† ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.


๐Ÿงญ ์ค‘์š”ํ•œ ํฌ์ธํŠธ ํ•œ ์ค„ ์š”์•ฝ

__init__.py๋Š” “์ด ํด๋”๋Š” Python ํŒจํ‚ค์ง€์•ผ!”๋ผ๊ณ  ์•Œ๋ ค์ฃผ๋Š” ์‹ ๋ถ„์ฆ ๊ฐ™์€ ํŒŒ์ผ์ž…๋‹ˆ๋‹ค.

ํ•„์š”ํ•˜์‹œ๋ฉด example ํŒจํ‚ค์ง€๋ฅผ ์ง์ ‘ ๋งŒ๋“ค์–ด ๋ณด์—ฌ๋“œ๋ฆด๊นŒ์š”?

 

 


์ƒ์„ฑ์ž๊ฐ€ ํ•˜๋Š”์ผ ์ดˆ๊ธฐํ™”

 

initializar 

 

ํด๋”๋Š” ์ž‘๋™์•ˆํ•จ

app์€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ