KyungRyeol Yoon

[Python] ๐Ÿš€ uv๋กœ ํ”„๋กœ์ ํŠธ & ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ ์™„๋ฒฝ ๊ฐ€์ด๋“œ

๐Ÿ uv๋กœ Python ํ”„๋กœ์ ํŠธ ๊ด€๋ฆฌํ•˜๊ธฐ uv๋Š” Python ํ”„๋กœ์ ํŠธ์—์„œ ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ + ๊ฐ€์ƒํ™˜๊ฒฝ + Python ๋ฒ„์ „ ๊ด€๋ฆฌ๋ฅผ ํ•œ ๋ฒˆ์— ํ•ด๊ฒฐํ•ด์ฃผ๋Š” ์ตœ์‹  ๋„๊ตฌ์ž…๋‹ˆ๋‹ค. ๊ธฐ์กด pip, venv, pyenv๋ฅผ ๋Œ€์ฒดํ•  ์ˆ˜ ์žˆ๋Š” ์˜ฌ์ธ์› ํˆด์ด๋ผ๊ณ  ๋ณด์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค โšก ์ด ๊ธ€์—์„œ๋Š” ์‹ค๋ฌด์—์„œ ๋ฐ”๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ์ •ํ™•ํ•œ ๋ช…๋ น์–ด ๊ธฐ์ค€์œผ๋กœ ๊น”๋”ํ•˜๊ฒŒ ์ •๋ฆฌํ–ˆ์Šต๋‹ˆ๋‹ค. ...

[Python] ๊ฐ€์ƒํ™˜๊ฒฝ venv ์‚ฌ์šฉ๋ฒ•

๐Ÿ ์™œ ํŒŒ์ด์ฌ ๊ฐ€์ƒํ™˜๊ฒฝ(venv)์„ ์จ์•ผ ํ• ๊นŒ? ํŒŒ์ด์ฌ ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋‹ค ๋ณด๋ฉด โ€œA ํ”„๋กœ์ ํŠธ์—์„œ๋Š” Django 3.2๊ฐ€ ํ•„์š”ํ•œ๋ฐ, B ํ”„๋กœ์ ํŠธ์—์„œ๋Š” 4.0์ด ํ•„์š”ํ•˜๋„ค?โ€ ๊ฐ™์€ ์ƒํ™ฉ์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์ด๋•Œ ์‹œ์Šคํ…œ์— ํŒจํ‚ค์ง€๋ฅผ ์ „์—ญ์œผ๋กœ ์„ค์น˜ํ•˜๋ฉด ๋ฒ„์ „ ์ถฉ๋Œ๋กœ ์ธํ•ด ์ฝ”๋“œ๊ฐ€ ๊นจ์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๐Ÿ˜ฑ ๊ฐ€์ƒํ™˜๊ฒฝ(Virtual Environment)์€ ํ”„๋กœ์ ํŠธ๋งˆ๋‹ค ๋…...

[AI Assignment - Python] ๐ŸŽ€ ๋ฐ์ฝ”๋ ˆ์ดํ„ฐ ์™„์ „ ์ •๋ณต โ€” timer, retry, validate_types ์ง์ ‘ ๊ตฌํ˜„

๐ŸŽฏ ๊ณผ์ œ: ์‹ค๋ฌดํ˜• ๋ฐ์ฝ”๋ ˆ์ดํ„ฐ 3๊ฐœ ๊ตฌํ˜„ @timer โ€” ํ•จ์ˆ˜ ์‹คํ–‰ ์‹œ๊ฐ„ ์ธก์ • @retry(max_attempts=3) โ€” ์‹คํŒจ ์‹œ ์ž๋™ ์žฌ์‹œ๋„ @validate_types โ€” ํƒ€์ž… ํžŒํŠธ ๊ธฐ๋ฐ˜ ๋Ÿฐํƒ€์ž„ ํƒ€์ž… ๊ฒ€์ฆ ๋ชจ๋“  ๋ฐ์ฝ”๋ ˆ์ดํ„ฐ์— functools.wraps๋ฅผ ์ ์šฉํ•˜๋Š” ๊ฒƒ์ด ์š”๊ตฌ์‚ฌํ•ญ์ด์—ˆ์Šต๋‹ˆ๋‹ค. ๐Ÿ“ ๋ฐ์ฝ”๋ ˆ์ดํ„ฐ ๊ธฐ๋ณธ ๊ตฌ์กฐ ๊ณผ์ œ์— ๋“ค์–ด...

[AI Assignment - Python] ๐Ÿ ํƒ€์ž… ํžŒํŠธ์™€ ์ปดํ”„๋ฆฌํ—จ์…˜ โ€” WeatherAnalyzer ํด๋ž˜์Šค ๊ตฌํ˜„๊ธฐ

๐ŸŽฏ ๊ณผ์ œ: WeatherAnalyzer ํด๋ž˜์Šค ๊ตฌํ˜„ ์ฒซ ๋ฒˆ์งธ ๊ณผ์ œ๋Š” ํƒ€์ž… ํžŒํŠธ์™€ ์ปดํ”„๋ฆฌํ—จ์…˜์„ ํ™œ์šฉํ•œ ๋‚ ์”จ ๋ฐ์ดํ„ฐ ๋ถ„์„ ํด๋ž˜์Šค ๋งŒ๋“ค๊ธฐ์ž…๋‹ˆ๋‹ค. ์ž…๋ ฅ ๋ฐ์ดํ„ฐ weather_data = [ {"city": "์„œ์šธ", "date": "2026-04-01", "temp": 15.2, "humidity": 45, "pm25": 32.1}, {"...

[LLM] Mac Mini M4 ํ™˜๊ฒฝ์—์„œ Ollama ์„ค์น˜ ๋ฐ ๊ด€๋ฆฌ ๊ฐ€์ด๋“œ

Mac Mini M4(Apple Silicon) ํ™˜๊ฒฝ์—์„œ Ollama ์„ค์น˜ ๋ฐ ๊ด€๋ฆฌ ๊ฐ€์ด๋“œ ๐Ÿ“Œ ๊ฐœ์š” ๋ณธ ๊ฐ€์ด๋“œ๋Š” Apple Silicon ๊ธฐ๋ฐ˜ Mac Mini M4 ํ™˜๊ฒฝ์—์„œ ๋กœ์ปฌ LLM(Local Large Language Model) ๋„๊ตฌ์ธ Ollama๋ฅผ ์„ค์น˜ํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค. Homebrew๋ฅผ ํ™œ์šฉํ•˜์—ฌ ์„ค์น˜ํ•˜๊ณ , ์„œ๋น„์Šค ๋“ฑ๋ก๋ถ€ํ„ฐ ...

[Kubernetes] Containerd ๊ธฐ๋ฐ˜ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ๊ณ ๊ฐ€์šฉ์„ฑ(HA) ํด๋Ÿฌ์Šคํ„ฐ ์™„๋ฒฝ ๊ตฌ์ถ• ๊ฐ€์ด๋“œ

1. ๐Ÿ—๏ธ ํด๋Ÿฌ์Šคํ„ฐ ์•„ํ‚คํ…์ฒ˜ ๋ฐ ํ™˜๊ฒฝ ๊ณ ๊ฐ€์šฉ์„ฑ ํด๋Ÿฌ์Šคํ„ฐ๋Š” ๋งˆ์Šคํ„ฐ ๋…ธ๋“œ(Control Plane)๋ฅผ ์—ฌ๋Ÿฌ ๋Œ€ ๋‘์–ด, ํŠน์ • ๋…ธ๋“œ์— ์žฅ์• ๊ฐ€ ๋ฐœ์ƒํ•ด๋„ ์„œ๋น„์Šค๊ฐ€ ์ค‘๋‹จ๋˜์ง€ ์•Š๋„๋ก ์„ค๊ณ„ํ•ฉ๋‹ˆ๋‹ค. Container Runtime: Containerd (Docker ๋Œ€์ฒด ํ‘œ์ค€) Load Balancer: HAProxy + Keepalived (Virtual ...

[Kubernetes] eBPF + Cilium๋กœ ํด๋Ÿฌ์Šคํ„ฐ ์‹ฌ์ธต ๋ชจ๋‹ˆํ„ฐ๋ง

๐Ÿ” eBPF + Cilium: ๊ฐœ๋ฐœ์ž ๊ด€์ ์—์„œ ๋ณด๋Š” ์‹ฌ์ธต ๋ชจ๋‹ˆํ„ฐ๋ง ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค์—์„œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ + ํด๋Ÿฌ์Šคํ„ฐ ํ˜ธ์ŠคํŠธ ์ˆ˜์ค€ Observability๋ฅผ ํ™•๋ณดํ•˜๋ ค๋ฉด OTel๊ณผ eBPF๋ฅผ ํ™œ์šฉํ•˜๋Š” ๊ฒƒ์ด ํšจ๊ณผ์ ์ž…๋‹ˆ๋‹ค. ํŠนํžˆ eBPF ๊ธฐ๋ฐ˜ ๋„คํŠธ์›Œํฌ ๋ชจ๋‹ˆํ„ฐ๋ง ๋„๊ตฌ์ธ Cilium์„ ํ™œ์šฉํ•˜๋ฉด ์‹ค์ „ ํ™˜๊ฒฝ์—์„œ ๊ฐ•๋ ฅํ•œ ๊ฐ€์‹œ์„ฑ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. 1๏ธโƒฃ eBPF๋ž€? e...

[Kubernetes] Kubestr: ์Šคํ† ๋ฆฌ์ง€ ์„ฑ๋Šฅ๊ณผ ์ƒํƒœ ์ ๊ฒ€ ๋„๊ตฌ

๐Ÿ“ฆ Kubestr๋ž€? Kubestr๋Š” ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ํด๋Ÿฌ์Šคํ„ฐ์—์„œ ์Šคํ† ๋ฆฌ์ง€(Storage) ๋ฆฌ์†Œ์Šค์˜ ์„ฑ๋Šฅ๊ณผ ์ƒํƒœ๋ฅผ ์ ๊ฒ€ํ•˜๋Š” ๋„๊ตฌ์ž…๋‹ˆ๋‹ค. Persistent Volume, StorageClass, PVC ๋“ฑ์„ ๋Œ€์ƒ์œผ๋กœ ๋ฒค์น˜๋งˆํฌ์™€ ๋ถ„์„์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 1๏ธโƒฃ ์ฃผ์š” ๊ธฐ๋Šฅ ์Šคํ† ๋ฆฌ์ง€ ํด๋ž˜์Šค ๋ถ„์„ StorageClass, PV...

[Kubernetes] Velero: ํด๋Ÿฌ์Šคํ„ฐ ๋ฐฑ์—…, ๋ณต๊ตฌ, ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ๋„๊ตฌ

๐Ÿ›ก๏ธ Velero๋ž€? Velero๋Š” ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ํด๋Ÿฌ์Šคํ„ฐ์˜ ๋ฆฌ์†Œ์Šค์™€ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐฑ์—…/๋ณต์›ํ•˜๊ณ , ํด๋Ÿฌ์Šคํ„ฐ ๊ฐ„ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์„ ์ง€์›ํ•˜๋Š” ๋„๊ตฌ์ž…๋‹ˆ๋‹ค. ์žฌํ•ด ๋ณต๊ตฌ(Disaster Recovery)์™€ ํ…Œ์ŠคํŠธ/์Šคํ…Œ์ด์ง• ํ™˜๊ฒฝ ๊ด€๋ฆฌ์— ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค. 1๏ธโƒฃ ์ฃผ์š” ๊ธฐ๋Šฅ ๋ฐฑ์—… (Backup) ์ „์ฒด ํด๋Ÿฌ์Šคํ„ฐ ๋˜๋Š” ํŠน์ • ๋„ค์ž„์ŠคํŽ˜์ด์Šค ๋‹จ์œ„ ๋ฐฑ์—… ...