소개
소프트웨어 아키텍트 & 교육가
• 현) 보이는소프트웨어연구소 대표(2016~현재)
- 삼성전자 소프트웨어 아키텍트 양성 및 인증
- 소프트웨어 구조 설계 및 평가 교육 / 컨설팅
• 중앙대학교 소프트웨어 대학 겸임 교수(2018~2022)
- 기초 컴퓨터 프로그래밍 - C/C++, JavaScript, Python
• 삼성전자(2003~2016)
강의
로드맵
전체 1수강평
- 쿠버네티스 101 - 클라우드/서버 개발 첫걸음
- 쿠버네티스 101 - 클라우드/서버 개발 첫걸음
- JavaScript 비동기 프로그래밍 완벽 가이드 - Promise, await, async
- JavaScript 비동기 프로그래밍 완벽 가이드 - Promise, await, async
- JavaScript 비동기 프로그래밍 완벽 가이드 - Promise, await, async
게시글
질문&답변
섹션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
- 141
질문&답변
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
- 194
질문&답변
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
- 361
질문&답변
안녕하세요. 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
- 262
질문&답변
skaffold init 부분
vs code에 google cloud code 확장을 설치해야 합니다.google cloud code 확장이 cloud sdk를 설치하는데, 여기에 skaffold가 있습니다.설치되는 경로가 %localappdata%\cloud-code\installer\google-cloud-sdk\bin 입니다. 설치되어 있는지 확인해 보세요.
- 0
- 2
- 374
질문&답변
minikube service nginx
minikube service 명령으로 Kubernetes node의 내부 서비스를 외부로 연결해 줍니다. 따라서, minikube service 명령을 실행하고, 브라우저에서 확인해 보면 됩니다.(사진)명령 창에 있는 것처럼,nginx deployment 생성nginx service 생성minikube service nginx 를 실행하면, 왼쪽 상단의 브라우저에 nginx 서버에 요청한 결과를 보여줍니다. 에러가 나는 이유는 아마도 nginx service의 port 설정이 잘못되어서 발생한 것 같습니다.
- 0
- 1
- 351
질문&답변
minikube dashboard URL 이 나오지 않습니다.
일단 dashboard가 동작하지 않는 이유를 파악해야 하는데, log를 확인하는 것이 좋습니다.minikube logs --file=logs.txt상기 명령으로 logs.txt에 log를 저장합니다.log에 어떤 문제가 있는지를 확인해 보는 것이 필요합니다.log를 올려주시면 같이 검토해 보겠습니다.
- 0
- 2
- 536
질문&답변
개발 환경에 소개해주신 것들은 직접 설치 하라는 의미인건가요?
이 문제는 아직 해결되지 않은 문제 같습니다. 아래 링크를 보면,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
- 783
질문&답변
개발 환경에 소개해주신 것들은 직접 설치 하라는 의미인건가요?
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
- 783
질문&답변
개발 환경에 소개해주신 것들은 직접 설치 하라는 의미인건가요?
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
- 783