์ํํธ์จ์ด ์ํคํ ํธ & ๊ต์ก๊ฐ
• ํ) ๋ณด์ด๋์ํํธ์จ์ด์ฐ๊ตฌ์ ๋ํ(2016~ํ์ฌ)
- ์ผ์ฑ์ ์ ์ํํธ์จ์ด ์ํคํ
ํธ ์์ฑ ๋ฐ ์ธ์ฆ
- ์ํํธ์จ์ด ๊ตฌ์กฐ ์ค๊ณ ๋ฐ ํ๊ฐ ๊ต์ก / ์ปจ์คํ
• ์ค์๋ํ๊ต ์ํํธ์จ์ด ๋ํ ๊ฒธ์ ๊ต์(2018~2022)
- ๊ธฐ์ด ์ปดํจํฐ ํ๋ก๊ทธ๋๋ฐ - C/C++, JavaScript, Python
• ์ผ์ฑ์ ์(2003~2016)
Courses
Reviews
- Kubernetes 101 - First Steps in Cloud/Server Development
- 7 Basic Principles of Software Development: How to Become a Great Programmer
- The Complete Guide to JavaScript Asynchronous Programming - Promise, await, async
- Kubernetes 101 - First Steps in Cloud/Server Development
- Kubernetes 101 - First Steps in Cloud/Server Development
Posts
Q&A
์น์ 2 Yaml๋ก Deployment ์ค์ต ์ Pod ์ด๋ฏธ์ง๊ฐ ์๋ค๋ ์ค๋ฅ
docker ํ๊ฒฝ์ด minikube๋ก ์ค์ ๋์ง ์์ ๊ฒ ๊ฐ์ต๋๋ค.minikube๋ ๋ด๋ถ์ ์ผ๋ก container ํ๊ฒฝ์ ๊ฐ์ง๊ณ ์์ด์ ๋ค์ ๋ช ๋ น์ ์ฐธ๊ณ ํด์docker ํ๊ฒฝ์ minikube๋ก ์ค์ ํด์ผ ํฉ๋๋ค.minikube docker-env ์๋์ฐ ๋ช ๋ น์ฐฝ์ ์ฌ์ฉํ์ ๋ค๋ฉด,@FOR /f "tokens=*" %i IN ('minikube -p docker-env --shell cmd') DO @%i์ด ๋ช ๋ น์ผ๋ก docker ํ๊ฒฝ์ minikube๋ก ๋ณ๊ฒฝํ ์ ์์ต๋๋ค. ๊ทธ๋ฐ ๋ค์์ docker image๋ฅผ ๋น๋ํด์ผ minikube kubernetes์์ image๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
- 0
- 1
- 212
Q&A
minikube service๋ช ๋ น์ด๋ฅผ ์ ๋ ฅ์ ํด๋น ์๋ฌ๊ฐ ๋น๋๋ค
imagePullPolicy๋ ์ปจํ ์ด๋ ์ด๋ฏธ์ง๋ฅผ docker hub๋ก ๋ถํฐ ๊ฐ์ ธ์ค๋ ์ ์ฑ ์ ๊ดํ ๊ฒ์ ๋๋ค.Never๋ docker hub๋ก๋ถํฐ ๊ฐ์ ธ์ค์ง ์๋ ์ต์ ์ ๋๋ค.์์ฒญํ hello-kube:v1 ์ด๋ฏธ์ง๊ฐ ๋ก์ปฌ ์ ์ฅ์์ ์์ผ๋ฉด ๋ก์ปฌ์ ์๋ ์ด๋ฏธ์ง๋ฅผ ์ฌ์ฉํด์ ์ปจํ ์ด๋๋ฅผ ์์ฑํ์ง๋ง,๋ก์ปฌ ์ ์ฅ์์ ์์ด์ ์ด๋ฐ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ ๊ฒ์ ๋๋ค. hello-kube:v1 ์ด๋ฏธ์ง๋ฅผ ๋น๋ํด์ ๋ก์ปฌ ์ ์ฅ์์ ์์ฑํด์ผ ํฉ๋๋ค.dockerfile์ด ์๋ ํด๋์์docker build -t hello-kube:v1 .๋ช ๋ น์ผ๋ก ๋น๋ํฉ๋๋ค. minikube์์ docker ํ๊ฒฝ์ ์ค์ ํ๋ ค๋ฉด,minikube docker-env ๋ช ๋ น์ ์ฐธ๊ณ ํ์ธ์.๋ช ๋ น์ฐฝ์์๋ ๋ค์ ๋ช ๋ น์ ์คํํ๋ฉด ๋ฉ๋๋ค.@FOR /f "tokens=*" %i IN ('minikube -p minikube docker-env --shell cmd') DO @%i ๋น๋๊ฐ ๋๊ณ ๋๋ฉด,docker images ๋ช ๋ น์ผ๋ก ๋ก์ปฌ ์ ์ฅ์์ ์์ฑ๋ ์ด๋ฏธ์ง๋ฅผ ํ์ธํ ์ ์์ต๋๋ค.
- 0
- 2
- 272
Q&A
Promise ๊ฐ์ฒด ๊ฐ์ 7๋ถ 27์ด ๋ถ๋ถ ์ง๋ฌธ์ ๋๋ค.
then, catch, finally ํจ์๋ callback ํจ์์ ๋๋ค.์ฆ, p.then() ํจ์๋ fulfilled ๋๋ rejected ์ํ๊ฐ ๋๋ฉด callback์ ํธ์ถํ๊ณ ๊ฒฐ๊ณผ Promise๋ฅผ ๋ฐํํฉ๋๋ค.callback ํจ์์ ๋ฐํ ๊ฐ์ด ์์ผ๋ฉด, Promise(undefined)๋ฅผ ๋ฐํํ๊ฒ ๋ฉ๋๋ค. ๊ทธ๋ฌ๋ฏ๋ก, p.then().catch()๋ Promise(undefined).catch()๊ฐ ๋๊ณ ,fulfilled ์ํ์ด๋ฏ๋ก error ์ํฉ์ด ์๋์ด์ ๊ทธ๋๋ก Promise(undefined)๊ฐ ๋ฐํ๋ฉ๋๋ค.p.then().catch().finally()์์๋ Promise(undefined).finally()๊ฐ ์คํ๋๊ณ ,์ฌ๊ธฐ์ undefined ๊ฐ ์ถ๋ ฅ๋ฉ๋๋ค. ์ดํดํ์ ๋ด์ฉ์ด ๋ง๋ ๊ฒ ๊ฐ์ต๋๋ค.^^
- 1
- 2
- 433
Q&A
์๋ ํ์ธ์. await async ๊ฐ์ 7๋ถ31์ด ๋ถ๋ถ์์ ์ง๋ฌธ์ ๋๋ค. 7๋ถ 31์ด ๋ถ๋ถ์์ ์ง๋ฌธ์์ต๋๋ค.
async ํจ์๋ Promise ๊ฐ์ฒด๋ฅผ ๋ฐํํด์ ๋์์ ์ผ๋ก ์คํ๋๋๋ก ํฉ๋๋ค.๊ทธ๋ฌ๋๊น, const p = add(1, 2)๊ฐ ํธ์ถ๋๋ ์๊ฐ, ์ด๋ฏธ p์๋ Promise ๊ฐ์ฒด๊ฐ ๋ฐํ๋ ๊ฒ์ ๋๋ค.๊ทธ๋ฆฌ๊ณ , add() ํจ์์์ setTimeout() ํจ์๋ฅผ await ํ๋ฉด์,context switching ์ผ์ด๋๊ณ ,console.log(p) ๊ฐ pending ์ํ์ Promise ๊ฐ์ฒด์์ ์ถ๋ ฅํฉ๋๋ค. ์ด๊ฒ์ด ์๋ฐ์คํฌ๋ฆฝํธ์ ๋์ ์คํ ๋ฐฉ์์ ๋๋ค. ์ฐ๋ ๋์ ๊ฐ์ด OS ์์ค์์ ๋ณ๋ ฌ์ ์ผ๋ก ์คํ๋๋ ๊ฒ๊ณผ ๋ค๋ฆ ๋๋ค.์ฐ๋ ๋๊ฐ ์์ฑ๋๋ฉด, OS ์์ค์์ core๋ฅผ ๋๋ ์ ๋ณ๋ ฌ์ ์ผ๋ก ์คํ๋ฉ๋๋ค.ํ์ง๋ง, ์๋ฐ์คํฌ๋ฆฝํธ์ ๋์ ์คํ์์ฝ๋ ์คํ์ด ๋ฉ์ถ๊ณ event loop์ ๋๊ธฐ ์ํ๊ฐ ๋๋ฉดcontext switching์ด ๋๊ณ task queue์์ ๋ค์ ์์ ์ ์ด์ด์ ์คํํฉ๋๋ค. ๊ทธ๋ฌ๋๊น,async ํจ์ add()๊ฐ ํธ์ถ๋๋ฉด์ Promise ๊ฐ์ฒด๊ฐ ๋ฐํ๋๊ณ task queue์ ๋ฃ์ด์ง๋๋ค.add() ํจ์์์ async setTimeout() ํจ์๊ฐ ํธ์ถ๋๋ฉด์Promise ๊ฐ์ฒด๊ฐ ๋ฐํ๋๊ณ task queue์ ๋ฃ์ด์ง๋๋ค.setTimeout() ํจ์์์ ์์คํ ์๊ฒ 1์ด timeout์ ๋ฑ๋กํ๊ณ ์ข ๋ฃํฉ๋๋ค.event loop์์๋ ๋ค์ task๋ฅผ ์คํํฉ๋๋ค.๋ฐ๋ผ์, console.log(p)๊ฐ ์ถ๋ ฅ๋ฉ๋๋ค.console.log(p)๊ฐ ์ถ๋ ฅ๋๊ณ ๋๋ฉด, event loop์์ ๋ค์ task๋ฅผ ์คํํฉ๋๋ค.๋ค์ task๋ await๋ก Promise๊ฐ ์๋ฃ๋ ๋๊น์ง ๊ธฐ๋ค๋ฆฝ๋๋ค.1์ด timeout์ด ์ง๋๋ฉด,์์คํ ์ timeout event๊ฐ ๋ฐ์ํ๊ณ ,timeout event์ ์ํด์ Promise ๊ฐ์ฒด๊ฐ ์๋ฃ๋ฉ๋๋ค.๊ทธ๋ฌ๋ฉด, event loop์์ ๋ค์ task๊ฐ ์คํ๋๊ณ ,์ด๋, console.log(result) ๋ฑ์ด ์ถ๋ ฅ๋ฉ๋๋ค. JavaScript engine์ด ์ด๋ป๊ฒ event loop์ task queue๋ฅผ ์ฌ์ฉํด์ํ๋ก๊ทธ๋จ์ ๋์์ ์ผ๋ก ์คํํ๋ ์ง๋ฅผ ์์ํด ๋ณด์๋ฉด ์ข์ ๋ฏ ํฉ๋๋ค.
- 0
- 2
- 324
Q&A
skaffold init ๋ถ๋ถ
vs code์ google cloud code ํ์ฅ์ ์ค์นํด์ผ ํฉ๋๋ค.google cloud code ํ์ฅ์ด cloud sdk๋ฅผ ์ค์นํ๋๋ฐ, ์ฌ๊ธฐ์ skaffold๊ฐ ์์ต๋๋ค.์ค์น๋๋ ๊ฒฝ๋ก๊ฐ %localappdata%\cloud-code\installer\google-cloud-sdk\bin ์ ๋๋ค. ์ค์น๋์ด ์๋์ง ํ์ธํด ๋ณด์ธ์.
- 0
- 2
- 453
Q&A
minikube service nginx
minikube service ๋ช ๋ น์ผ๋ก Kubernetes node์ ๋ด๋ถ ์๋น์ค๋ฅผ ์ธ๋ถ๋ก ์ฐ๊ฒฐํด ์ค๋๋ค. ๋ฐ๋ผ์, minikube service ๋ช ๋ น์ ์คํํ๊ณ , ๋ธ๋ผ์ฐ์ ์์ ํ์ธํด ๋ณด๋ฉด ๋ฉ๋๋ค.(์ฌ์ง)๋ช ๋ น ์ฐฝ์ ์๋ ๊ฒ์ฒ๋ผ,nginx deployment ์์ฑnginx service ์์ฑminikube service nginx ๋ฅผ ์คํํ๋ฉด, ์ผ์ชฝ ์๋จ์ ๋ธ๋ผ์ฐ์ ์ nginx ์๋ฒ์ ์์ฒญํ ๊ฒฐ๊ณผ๋ฅผ ๋ณด์ฌ์ค๋๋ค. ์๋ฌ๊ฐ ๋๋ ์ด์ ๋ ์๋ง๋ nginx service์ port ์ค์ ์ด ์๋ชป๋์ด์ ๋ฐ์ํ ๊ฒ ๊ฐ์ต๋๋ค.
- 0
- 1
- 430
Q&A
minikube dashboard URL ์ด ๋์ค์ง ์์ต๋๋ค.
์ผ๋จ dashboard๊ฐ ๋์ํ์ง ์๋ ์ด์ ๋ฅผ ํ์ ํด์ผ ํ๋๋ฐ, log๋ฅผ ํ์ธํ๋ ๊ฒ์ด ์ข์ต๋๋ค.minikube logs --file=logs.txt์๊ธฐ ๋ช ๋ น์ผ๋ก logs.txt์ log๋ฅผ ์ ์ฅํฉ๋๋ค.log์ ์ด๋ค ๋ฌธ์ ๊ฐ ์๋์ง๋ฅผ ํ์ธํด ๋ณด๋ ๊ฒ์ด ํ์ํฉ๋๋ค.log๋ฅผ ์ฌ๋ ค์ฃผ์๋ฉด ๊ฐ์ด ๊ฒํ ํด ๋ณด๊ฒ ์ต๋๋ค.
- 0
- 2
- 656
Q&A
๊ฐ๋ฐ ํ๊ฒฝ์ ์๊ฐํด์ฃผ์ ๊ฒ๋ค์ ์ง์ ์ค์น ํ๋ผ๋ ์๋ฏธ์ธ๊ฑด๊ฐ์?
์ด ๋ฌธ์ ๋ ์์ง ํด๊ฒฐ๋์ง ์์ ๋ฌธ์ ๊ฐ์ต๋๋ค. ์๋ ๋งํฌ๋ฅผ ๋ณด๋ฉด,https://github.com/GoogleCloudPlatform/cloud-code-vscode/issues/7182023๋ 1์ 26์ผ์ ๋ณด๊ณ ๋ ๋ฌธ์ ์ธ๋ฐ, ์์ง ํด๊ฒฐ๋์ง ์์์ต๋๋ค.์๊ฒฌ1. ์ฌ๊ธฐ์ ๋ฐ์ ์ฐ๋๋ ๋์ผํ ์ํฉ์์ ์๋ ค์ ๋ฌธ์ ํด๊ฒฐ์ ๋์์ฃผ๋ ๊ฒ์ด ์ด๋จ๊น ์ถ์ต๋๋ค.๋์ฒด๋ก ์ด๋ฐ ๋ฌธ์ ๋ ๋ฌธ์ ์ํฉ์ ์ฌํํ๊ณ ์ด๋ค ๋ฌธ์ ์ธ์ง๋ฅผ ํ์ ํ๊ธฐ ์ด๋ ต์ต๋๋ค.๋ฐ์ ์ฐ๋์ ์ํฉ์ ์ ํํ๊ฒ ์๋ ค์ฃผ๋ ๊ฒ์ด ๋์์ด ๋ ์๋ ์์ต๋๋ค.์๊ฒฌ2. cloud code์ ๋ฌธ์ ๊ฐ ์๋ ๊ฒ ๊ฐ์ต๋๋ค. ๋ฒ์ ํ์ธ์ ํด๋ณด๋ฉด,docker desktop ์ด ๋ ์๋ ์ํฉ์์, docker info ๋ช ๋ น์ ์คํํด ๋ณด๋ฉด,์ ๋ ๋ค์ ๋ฒ์ ์ WSL2๊ฐ ์ฌ์ฉ๋๊ณ ์๋ ๊ฒ์ด ํ์ธ๋์์ต๋๋ค. Kernel Version: 5.15.90.1-microsoft-standard-WSL2์์ github issue์๋ ๋ค์ ๋ฒ์ ์ด ์ฌ์ฉ๋๋ค๊ณ ํฉ๋๋ค.Kernel Version: 5.10.102.1-microsoft-standard-WSL2๊ทธ๋ฆฌ๊ณ , ์ ๊ฐ ์ฌ์ฉํ๋ Google Cloud Code ํ์ฅ ๋ฒ์ ์ v1.21.3 ์ ๋๋ค.๋ฒ์ ์ ํ์ธํด ์ฃผ์ธ์.์๊ฒฌ3. ์ต์ ๋ฒ์ ์์ ๋์ผํ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๊ณ ์๋ค๋ฉด, cloud code ์ฌ์ฉ์ ์ด๋ ต๊ฒ ์ต๋๋ค.skaffold๋ฅผ ์ฌ์ฉํด์ ๊ณต๋ถ๋ฅผ ํ์๋ ๊ฒ์ด ์ข๊ฒ ์ต๋๋ค.skaffold dev ๊ฐ ๋น๋์ ๋ฐฐ์น๋ฅผ ์์ฒญํ๋ ๋ช ๋ น์ด๊ณ ,scaffold delete ๋ ๋ฐฐ์น๋ ๋ด์ฉ์ ๋ชจ๋ ์ ๊ฑฐํ๋ ๋ช ๋ น์ ๋๋ค.
- 1
- 3
- 969
Q&A
๊ฐ๋ฐ ํ๊ฒฝ์ ์๊ฐํด์ฃผ์ ๊ฒ๋ค์ ์ง์ ์ค์น ํ๋ผ๋ ์๋ฏธ์ธ๊ฑด๊ฐ์?
Google Cloud Code ํ์ฅ์ด skaffold๋ฅผ ์ด์ฉํ๋ ๊ฒ์ผ๋ก ์๊ณ ์๋๋ฐ, skaffold๋ ๋๋๋ฐ Cloud Code ํ์ฅ์์๋ minikube๊ฐ ์คํ ์๋๋ค๋ ๊ฒ์ด๋ค์... ใ .ใ .vscode\launch.json ํ์ผ์ ๋ณด์ฌ์ฃผ์ธ์. ํน์ ์ด์ํ ๊ฒ์ด ์๋ ํด์์?๊ทธ๋ฆฌ๊ณ , Run on Kubernetes๋ฅผ ์คํํ๋ฉด ์ถ๋ ฅ๋๋ ๋ก๊ทธ๋ฅผ ๋ชจ๋ ์ฌ๋ ค์ฃผ์ธ์. ์ ๊ฐ ๋ค์ ์คํํด ๋ณด๋ ๋ค์๊ณผ ๊ฐ์ด ์ถ๋ ฅ๋๋ฉด์ miniube๊ฐ ์ค์ ๋๋ค์.Starting to run the app using configuration 'Kubernetes: Run/Debug' from .vscode/launch.json... To view more detailed logs, go to Output channel : "Kubernetes: Run/Debug - Detailed" Starting minikube, this may take a while.................................................................................................................................................................................................................................................................. minikube successfully started The minikube profile 'minikube' has been scheduled to stop automatically after exiting Cloud Code. To disable this on future deployments, set autoStop to false in your launch configuration c:\WORK\k8s-example\.vscode\launch.json
- 1
- 3
- 969
Q&A
๊ฐ๋ฐ ํ๊ฒฝ์ ์๊ฐํด์ฃผ์ ๊ฒ๋ค์ ์ง์ ์ค์น ํ๋ผ๋ ์๋ฏธ์ธ๊ฑด๊ฐ์?
VS Code๋ฅผ ์ค์นํ๊ณ Google Cloud Code ํ์ฅ์ ์ค์นํ๋ฉด,%localappdata%\cloud-code\installer\google-cloud-sdk\bin ์minikube.exe, kubectl.exe, skaffold.exe ์ด ์ค์น๋ฉ๋๋ค. VS Code์ ํฐ๋ฏธ๋์์๋ google-cloud-sdk์ ๊ฒฝ๋ก๊ฐ ์๋์ผ๋ก ํฌํจ๋์ดwhere minikube๋ก ํ์ธํ ์ ์์ต๋๋ค. ์ธ๋ถ ๋ช ๋ น ํ๋กฌํํธ๋ก minikube ๋ฑ์ ์คํํ๋ ค๋ฉด์์คํ ํ๊ฒฝ ๋ณ์ PATH์ ๋ค์์ ์ถ๊ฐํด์ผ ํฉ๋๋ค.%localappdata%\cloud-code\installer\google-cloud-sdk\bin
- 1
- 3
- 969