묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결실습으로 배우는 선착순 이벤트 시스템
쿠폰 생성 에러 처리에 관해서 질문이 있습니다.
안녕하세요 강사님 강의 잘 봤습니다.덕분에 kafka와 redis를 어떤식으로 사용할 수 있는지 많은 걸 엿볼 수 있는 느낌이었습니다.강의가 다 진행되고 난 후 궁금한 점이 하나 있습니다. 쿠폰 생성 에러 처리 관련되어서 질문이 있는데, 만약 메시지를 수신하는 쪽이 아니라 발송하는 쪽에서 문제가 생겼다면 어떻게 해야하나요? 예를들어 redis에서 increment로 수량에 대해서 가져왔지만, 만약 kafka에 메시지를 보내는 것이 실패 될 경우reids에 있는 값을 다시 하나 줄여야할 것 같습니다. 이런 경우 try catch 블럭으로 처리를 하는 지? 아니면 다른 방식으로 예외처리 하는지 궁금합니다.
-
미해결따라하며 배우는 도커와 CI환경 [2023.11 업데이트]
도커 빌드 시간이 너무 오래걸려요..
너무 시간이 오래걸리길래 잠을 자고 왔는데도 빌드가 되지 않는 이유가 궁금합니다ㅠㅠㅠ 제 도커 설정에 뭔가 문제라도 있는걸까요??
-
미해결따라하며 배우는 도커와 CI환경 [2023.11 업데이트]
docker-compose down 이후에도 containers에 redis가 남아 있는 이유
섹센6의 마지막 강의를 진행 중입니다. docker-compose up 명령어 이후, containers에는 redis가 남아 있습니다. node는 내려가고, redis는 유지되는 이유가 궁금합니다.
-
해결됨개발자를 위한 쉬운 도커
강의 실습 프로젝트 git clone은 못하나요?
파트 9. 도커 실무에 적용하기 듣고 있는대요. 강의 중에 vscode로 실습하시는 파일을 저도 git clone하고싶은대, 강의자료나, 강의 내용에도 없고, 따로 clone하지마시라고 하신걸까요?스크래치 빌드하는강의 듣고있네요.
-
미해결실전도커: 도커로 나만의 딥러닝 클라우드 컴퓨터 만들기
docker환경의 gpu 사용에 대해 질문이 있습니다
안녕하세요 다니엘 선생님, 좋은 설명해주셔서 수업을 즐겁게 다 들을 수 있었습니다. 수업을 마치며, 한가지 궁금한 점이 있어 질문 드립니다. 도커를 배우기 전 윈도우 운영체제에서 CUDA와 tensorflow를 설치하는 데 고생했던 기억이 있습니다. 자신의 GPU에 맞는 그래픽 드라이버와 이에 호환되는 CUDA버전, cudnn 버전을 맞춰야 하는게 그 이유였는데, 도커에서 이미지로 빌드한 컨테이너 안에서 돌린 keras예제는 잘 실행되었습니다. pytorch도 마찬가지였습니다. 어떻게 따로 버전을 맞추지 않아도 자연스럽게 환경이 맞춰진건가요? VM에서 사용된 Tesla T4 gpu가 특이한건가요? 전공자가 아니라 질문이 황당하게 느껴지실 수도 있겠지만, 정말 궁금해서 여쭤봅니다!
-
미해결풀스택을 위한 도커와 최신 서버 기술(리눅스, nginx, AWS, HTTPS, flask 배포) [풀스택 Part3]
섹션 16, 17 docker-compose up -d 명령 실행 시 다운로드 속도 느려짐
섹션 16, 17에서 docker-compose up -d 명령 실행 시 다운로드 속도가 너무 느려집니다...이 전까지는 속도가 적당한 빠르기였는데, 지금은 속도가 너무 느려져서, 검색 후 ec2 서버 정지했다가 재부팅도 해 보고 했는데, 여전히 느립니다.해결 방법이 있을까요?저는 윈도우즈 11 사용중입니다.
-
미해결멀티OS 사용을 위한 가상화 환경 구축 가이드 (Docker + Kubernetes)
[질문] 맥북 M3 에서 booting vm 시 에러 발생
안녕하세요? 서진호입니다. 우연찮게 강의를 발견해서 동영상을 보고 실습을 하고 있는데, 맥북 M3에서 vagrant + virtualbox 강의대로 따라해 보던 중에 다음과 같은 에러가 발생해서 문의 드리고자 합니다.참고로 저는 vagrant 2.4.2 와 virtualbox 7.1.4 버전이빈다. 감사합니다.
-
미해결실습으로 배우는 선착순 이벤트 시스템
마지막에 하신 테스트 자체는 실패하는 게 맞는거죠??
Producer 에는 제대로 값이 찍히는데하지만 테스트 자체는 실패했는데요아마 mysql과 연결이 되지 않아서 생긴 오류라고 봐도 될까요?? 아직 뒷 강의는 진행하지 않았습니다!!
-
해결됨그림으로 배우는 쿠버네티스(v1.30) - {{ x86-64, arm64 }}
Kubenetes 클러스터에 추가적으로 신뢰하는 CA를 넣을 수 있나요?
리눅스 서버 4대를 가상화로 올려서 클러스터를 구성하였습니다.클러스터에서 애플리케이션을 구성하려고 하는데App -> Dex -> KeyCloak(IdP) 이런 형태로 인증시스템을 구성하려고 합니다.App, Dex, KeyCloak 모두 Ingress의 Tls에 self-signed CA로 서명한 서버 TLS 인증서를 넣어서 개별로 시스템에 접속을 하면 HTTPS가 잘 동작합니다.(윈도우에 신뢰하는 CA를 추가하였음)그런데 Dex에서 KeyCloak 으로 OIDC metadata 를 가지오기 위에 .WellKnown ~~ 어쩌고 하는 Url로 요청을 하는데 이때 dex pod 에서 아래와 같은 오류가 발생합니다.failed to initialize server: server: Failed to open connector edgeidp: failed to open connector: failed to create connector edgeidp: failed to get provider: Get "https://auth.myapptestkjj/realms/myapptestkjj/.well-known/openid-configuration": tls: failed to verify certificate: x509: certificate signed by unknown authority그래서 pod 내부에서 KeyCloak으로 데이터를 요청하는데 신뢰할 수 없기 때문에 오류가 난다고 판단하여 신뢰하도록 조치를 하고 싶습니다. 그렇게 하기 위해서 클러스터 OS 에 모두 ca를 추가해서 신뢰하는 인증서도 등록을 했는데 소용이 없었습니다.무언가 다른 방법이 있는것 같은데 도저히 답을 못 찾겠어서 질문을 드립니다.약간의 팁이라도 좀 부탁드립니다.ㅠㅠ
-
미해결AWS로 구축하는 MSA와 컨테이너 오케스트레이션
NAT Gateway 와 RDS Proxy
안녕하세요 강사님. 먼저 양질의 강의 제공해주셔서 감사합니다. 강의 수강 중에 질문이 생겨서 글 남깁니다.RDS Proxy 를 생성 전에 NAT Gateway 생성이 필요하다고 하셨는데, NAT Instance 로는 부족한 것일까요?NAT Gateway 가 필요한 이유가 궁금합니다.감사합니다.
-
해결됨풀스택을 위한 도커와 최신 서버 기술(리눅스, nginx, AWS, HTTPS, flask 배포) [풀스택 Part3]
도커 컨테이너와 이미지 조사하기-docker run 실행시 컨테이너 생성 안됨 오류
섹션 9-1 강의 4분 47초 docker build --tag myweb -f Dockerfile-ubuntu .실행 후 docker run -d -p 9999:80 --name mywebserver --rm myweb해당 명령 실행하면 웹페이지도 뜨지 않고... 컨테이너도 생성되지 않습니다.프로그램 재 실행 해 봐도 동일한 결과가 나오는데, 어떻게 해결 가능할까요?
-
해결됨따라하며 배우는 노드, 리액트 시리즈 - 레딧 사이트 만들기(NextJS)(Pages Router)
docker compose up 오류
postgres 강의 중 docker compose up을 실행하면 아래와 같이 오류가 뜹니다.version: "3" services: db: image: postgres: latest container_name: postgres restart: always ports: - "5432:5432" environment: POSTGRES_USER: "${DB_USER_ID}" POSTGRES_PASSWORD: "${DB_USER_PASSWORD}" volumes: - ./data:/var/lib/postgresql/datayml 파일은 수업 그대로 위/아래와 같이 작성했는데 4번쨰 줄 postgres 부분이 인식이 안되는것 같아서 이것 때문인지... 구글링을 해봐도 해결 방법을 모르겠습니다!
-
해결됨따라하며 배우는 노드, 리액트 시리즈 - 레딧 사이트 만들기(NextJS)(Pages Router)
부록) remark 강의 중 parmas 오류
부록 따라가고 있는데 그대로 소스 코드를 작성해서 실행하면 localhost에 아래와 같이 오류가 뜹니다.오류 메시지가 [id].tsx 파일에 아래와 같이 뜨긴 하는데 강의 중 강사님 화면에도 그렇고 강의 자료에도 똑같이 오류 메시지(빨간 줄)가 있더라구요. next13부터 라우팅 방식이 달라졌다고 하던데 버전 문제인건지...아래 params 오류 제외하고는 모두 동일한 소스 코드를 작성했고 오류도 없습니다.해결 방법이 궁금합니다. **혹시 몰라서 [id].tsx 랑 post.ts 코드 전체 첨부합니다.<id.tsx>import React from 'react' import Head from 'next/head' import { GetStaticPaths, GetStaticProps } from 'next' import { getAllPostIds, getPostData, getSortedPostsData } from '../../lib/post' const Post = ({postData}: { postData: { title: string date: string contentHtml: string } }) => { return ( <div> <Head> <title>{postData.title}</title> </Head> <article> <h1>{postData.title}</h1> <div> {postData.date} </div> <div dangerouslySetInnerHTML={{__html: postData.contentHtml}} /> </article> </div> ) } export default Post export const getStaticPath: GetStaticPaths =async () => { const paths = getAllPostIds(); return{ paths, fallback: false } } export const getStaticProps: GetStaticProps =async ({params}) => { const postData = await getPostData(params.id as string) return { props: { postData } } }<post.ts>import fs from 'fs' import path from 'path' import matter from 'gray-matter' import { remark } from 'remark'; import remarkHtml from 'remark-html/lib'; const postsDirectory = path.join(process.cwd(), 'posts') console.log('process.cwd()', process.cwd()); console.log('postsDirectory.cwd()', postsDirectory); export function getSortedPostsData(){ //Get file names under /posts const fileNames = fs.readdirSync(postsDirectory) console.log('fileNames', fileNames); //fileNames ['pre-rendering.md', 'ssg-ssr.md'] const allPostsData = fileNames.map(fileName => { //Remove ".md" from file name to get id const id = fileName.replace(/\.md$/, '') //Read markdown file as string const fullPath = path.join(postsDirectory, fileName) const fileContents = fs.readFileSync(fullPath, 'utf8') //Use gray-matter to parse the post metadata section const matterResult = matter(fileContents) //Combine the data with the id return{ id, ...(matterResult.data as {date: string; title: string}) } }) //Sort posts by date return allPostsData.sort((a,b) => { if(a.date<b.date){ return 1 } else{ return -1 } }) } export function getAllPostIds(){ const fileNames = fs.readdirSync(postsDirectory); return fileNames.map(fileName => { return { params: { id: fileName.replace(/\.md$/, '') } } }) } export async function getPostData(id: string){ const fullPath = path.join(postsDirectory, `${id}.md`) const fileContents = fs.readFileSync(fullPath, 'utf-8') const matterResult = matter(fileContents); const processedContent = await remark().use(remarkHtml).process(matterResult.content); const contentHtml = processedContent.toString(); return { id, contentHtml, ...(matterResult.data as {date: string; title: string}) } }
-
미해결AWS로 구축하는 MSA와 컨테이너 오케스트레이션
ecs 컨테이너 인스턴스에 추가되지 않습니다.
안녕하세요 강사님!- 클러스터를 생성하고 엔드포인트도 생성하였지만 ecs 컨테이너 인스턴스에 용량공급자 인스턴스가 추가되지 않습니다. 추가로 확인해 봐야 할 것들이 있을까요?
-
미해결AWS 배포 완벽가이드 (feat. Lightsail, Docker, ECS)
WSL에 설치한 Redis에 연결이 안 됩니다.
import express from "express"; import * as redis from "redis"; const PORT = 4000; const createApp = async () => { const app = express(); const client = redis.createClient({ url: "redis://localhost:6379" }); await client.connect(); app.use(express.json()); app.get("/", (req, res) => { res.status(200).send("hello from express"); }); return app; }; createApp().then((app) => { app.listen(PORT, () => { console.log(`App listening at port ${PORT}`); }); });Error: connect ECONNREFUSED 127.0.0.1:6379 [1] at createConnectionError (node:net:1647:14) [1] at afterConnectMultiple (node:net:1677:16) { [1] errno: -4078, [1] code: 'ECONNREFUSED', [1] syscall: 'connect', [1] address: '127.0.0.1', [1] port: 6379 [1] }WSL의 bind를 0.0.0.0으로 바꿔봄방화벽에서 6379 포트 허용함WSL의 ip를 localhost 대신에 넣어서 접속 시도이렇게 했는데 실행하면 계속 연결할 수 없다는 에러가 발생합니다. 혹시 해결 방법을 알 수 있을까요?
-
해결됨개발자를 위한 쉬운 도커
도커 볼륨 공유에 대해 질문있습니다.
여러 DB가 동시에 한 볼륨을 공유할 때 발생하는 데이터 무결성 문제는 없나요?
-
미해결대세는 쿠버네티스 [초급~중급]
실습 pc 사양
현재 그램 노트북에서 실습을 진행중입니다.CPU 6 core, RAM 16 GB인데 vm 세개를 동시에 돌리면메모리 사용량이 99%까지 차면서 노트북이 정상적으로 작동을 안합니다..혹시 해결 방법이나 차선책이 있을까요?작업 관리자에서 확인해보니 vagrant가 메모리를 많이 차지하는 것 같은데VM 생성 이후에는 그냥 vagrant 없이 oracle vm과 xshell 로만 실습을 해도 될까요?지금은 환경구성 단계까지만 실습을 했는데 그 뒤 강의에서 vagrant가 없어도 되는지도 궁금합니다.
-
해결됨실습으로 배우는 선착순 이벤트 시스템
안녕하세요 질문 있습니다!
현재 카프카로 데이터를 보내기전에 redis를 사용하여 발급된 쿠폰 개수에 대한 동시성 처리를 해서 개수에 대한 검증 로직이 있다고 앞서 강의에서 얘기를 하셨습니다. 그러면 발급된 쿠폰 개수가 100개 되고 난 이후의 요청은 그냥 무시하면 되나요?쿠폰이 천개, 만개 이렇게 매우 많다면 쿠폰 발급에 대한 요청을 바로 DB에 저장을 하면 DB에 부하가 심해져서 카프카를 도입해 이러한 부하를 낮춘다고 이해를 했습니다. 궁금한 점은 DB에 대한 부하를 낮춰도 이벤트 시기에 수많은 사용자들의 요청으로 인해 서버 자체에 대한 부하는 굉장히 심할꺼 같은데 서버에 대한 부하를 낮추는 방법은 없나요?현재 흐름이 쿠폰 요청 -> 서버 -> reids에서 쿠폰 개수 확인 -> 카프카 -> 컨슈머 -> DB 인데 이러한 흐름을 요청 -> 서버 -> 카프카 -> 컨슈머 -> redis에서 쿠폰 개수 확인 -> DB 이렇게 바꾸는 방식은 어떤지 궁금합니다. 이런식으로 하면 서버쪽에서 카프카로 데이터를 비동기로 전송한다면 서버 자체에도 부하가 낮아지지 않을까 라는 생각이 들어서 여쭤 봅니다.redis streams나 래빗엠큐 같은 다른 기능들도 있는데 Kafka를 사용하신 이유가 궁금합니다.만약 쿠폰 발급이 100개처럼 적게 발급하는 시스템이라면 굳이 카프카를 도입을 할 필요가 없는건가요?publisher가 카프카로 데이터를 보내면 consumer가 바로 받아와서 DB에 처리를 하면 안되겠죠? 이렇게 처리를 하면 바로 DB에 저장을 하는 상황이니 DB에 부하가 심해진다고 생각합니다.현재 강사님이 알려주신 코드를 바탕으로 시스템을 구축하고 여기에 부하 테스트를 한다고 했을때 어떤 식으로 단계를 잡아서 부하 테스트를 하면 좋을지 조언을 해주실 수 있을까요 한번에 너무 많은 질문해서 죄송합니다.
-
미해결그림으로 배우는 쿠버네티스(v1.30) - {{ x86-64, arm64 }}
clusterrolebinding의 --namespace 옵션의 역할
[질문 하기]clusterrolebinding은 namespace와 상관없이 clusterrole을 바인딩 시키는데,공식문서(https://kubernetes.io/docs/reference/kubectl/generated/kubectl_create/kubectl_create_clusterrolebinding/)에 보면 옵션중에 -n / --namespace가 존재합니다.이 옵션은 어떤 역할을 하나요?
-
미해결풀스택을 위한 도커와 최신 서버 기술(리눅스, nginx, AWS, HTTPS, flask 배포) [풀스택 Part3]
mysql 접속 port 개방할 때 궁금한 점이 있습니다.
강사님 안녕하세요. 강사님 강의 저번주 부터 열심히 듣고 있습니다. 😀 15:50 분 쯤에 mysql port를 개방하시는 부분이 있는데 조금 궁금한 점이 생겨서 질문드립니다.aws에서 인바운드 규칙으로 모든 외부 ip에서 mysql db로 접속이 가능하도록 열어두셨는데(0.0.0.0/0), 비밀번호 설정이 되어있기 때문에 그냥 열어두신 건가요? 보안 상 ip주소를 관리자 ip만 허용하는 것이 좋다고 생각이 드는데.. 실무에서도 이렇게 하는 것이 관행인지 궁금합니다. 만약 보안 상 큰 문제 될 것이 없다면 그러한 이유가 무엇인지도 알고 싶습니다.