묻고 답해요
137만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결대용량 채팅 TPS 처리를 위한 웹소켓 통신 만들며 학습하기
데이터 불러오기
만약에, 채팅방에서 나눈 메시지들을 DB에 저장하고 불러온다고 하면, chan에 밀어 넣어야 하나요?
-
미해결대용량 채팅 TPS 처리를 위한 웹소켓 통신 만들며 학습하기
panic 사용
Go의 document를 살펴보면, Don't Panic 을 언급하는데, Panic - Recovery 를 사용하는 규칙이나 Best Practice가 있을까요?
-
미해결대용량 채팅 TPS 처리를 위한 웹소켓 통신 만들며 학습하기
defer 사용
defer의 사용이 자원 반환(Resource Return)의 목적으로 사용되는데, 혹시 defer 가 이뤄질 때, 현재까지 이뤄진 채팅 메시지를 저장하는 DB insert를 넣는 것은 bad practice일까요? go 명령어가 멀티 스레드를 사용할 수 있게 도와주는 키워드인데, 채팅 기능이 확장되어서 (e.g., 카카오톡) 이미지, 동영상, 이모티콘 같은 텍스트 데이터(Text Data)가 아닌 것들을 채팅서비스에서 주고받게 된다면...?
-
미해결대용랑 채팅 TPS에 대한 stateful 서비스 구축하기
혹시 그리드방식 소켓 채팅창은 안알려주시나요?
그리드 방식 소켓채팅서버를 기대하고 구매하였는데 일반적인 소켓방식이네요 ㅜㅜ혹시 그리드 방식은 어디서 배울수 있는지 알려주실수있나요. 유료라도 상관없습니다.
-
해결됨쉽고 빠르게 끝내는 GO언어 프로그래밍 핵심 기초 입문 과정
undefined 에러 : UndeclaredImportedName
수업과 병행으로 cli 프로그램 구현 중 입니다. 코딩 중에 go run 에러 질문드립니다~!다른 패키지의 함수 호출하는 부에서 undefined 에러가 발생하고 있습니다.패키지 import 해줬는데도 해결이 안되어서 질문 올립니다ㅜ파일 구조와 호출부 간략 코드 첨부드립니다. 호출할 함수 정의부 입니다.// internal/algo/util.go package algo import ( "fmt" "math" ) func printFormatted() { ... } 호출하는 쪽 코드 입니다.// cmd/export.go package cmd import ( "fmt" " cli-project/internal/algo" ) func execute() { algo.printFormatted() // undefined 에러 발생!! } 패키지 구조 입니다.- cli-project/ - cmd/ - export.go - load.go - internal/algo/ - util.go - main.go undefined: algo.printFormatted compiler(UndeclaredImportedName) 에러가 발생하고 있습니다.패키지 import 말고 체크해야할 사항이 있을까요?ㅜ
-
해결됨대용량 채팅 TPS 처리를 위한 웹소켓 통신 만들며 학습하기
nodejs 파일이 프론트엔디 파일인가요??
안녕하세요 node js로 웹 개발을 시작하게 된 학생입니다아직 많은 정보가 없어서 node js 코드를 보면서 강의를 공부하고싶은데 리엑트 템플릿 파일 제공해준 폴더에 있는 js 코드가 node js 파일인가요??좋은 강의 감사합니다
-
미해결1000만 Traffic을 견디며 적용한 RPC 통신에 대해 학습하고 구현해보기
gRPC, gin 동시 사용 질문드립니다.
좋은 강의 감사드립니다. 강의 중에 궁금한 사항이 있어 문의 드립니다.(1) GRPC의 경우 gin 프레임워크 항상 같이 사용되는 걸까요?(2) GRPC와 gin 동시 사용되면서 같은 포트를 사용하는데, 현업 개발에서 GPRC와 gin을 통상 같이 사용하면서 같은 port를 사용하는지 문의드립니다. (3) 서버가 동작되지 않더라도 클라가 동작 되기 위해서는 어떠한 설정을 이용하면 좋을지도 궁금합니다.
-
해결됨Golang을 통한 백엔드 개발 및 환경 구축하기
UserResponse struct 질문
go 언어 사용이 익숙치 않아 질문드립니다. ㅜㅜAPIResponse 와 User 모두 json 태그가 붙은 구조체로 보이는데, 어떤 기준? 방식으로 포인터 구조체, 일반 구조체를 사용하시는지 알 수 있을까요? 해당 영상내 ApiResponse만 포인터 구조체를 사용하신 이유를 알 수 있을까요?
-
해결됨대용랑 채팅 TPS에 대한 stateful 서비스 구축하기
포스트맨 테스트
안녕하세요 강사님 프론트 서버를 실행시켜 로컬에서 채팅을 입력하는 것은 아주 잘 동작하고 있습니다.다만 강의 제목 처럼 대용량에 대한 테스트를 하고 싶어서 부하 테스트를 구상중입니다.부하 테스트 구상 중에 포스트맨으로 소켓 연결을 할 때 궁금한 점이 생겨 질문드립니다. 우선 포스트맨으로 채팅 서버의 url (ws://localhost:1010/room-chat) 을 찔러보려 했습니다.웹소켓 연결은 잘 맺어졌는데, 테스트 메시지(test chatting send) 를 Send 하면 아래처럼 response 탭에 3개의 응답이 동시에 나옵니다.채팅서버로 텍스트를 보낸것 까진 잘 된 것 같은데 응답 받을 때는 항상 disconnected 문구가 나오네요,,제 추론으로는 포스트맨에서 테스트할 때 Room 에 대한 정보를 넣어주지 않아서 그런것 같습니다.프론트 코드 소스에서는 입장시 웹소켓이 연결되면서 방의 정보가 연동(?) 되는 것 같은데,,,그럼 포스트맨에서는 채팅방 정보를 어떻게 넣어줘야 테스트 할 수 있는지 알 수 있을까요?
-
해결됨대용랑 채팅 TPS에 대한 stateful 서비스 구축하기
채팅 클라이언트는 누구와 연결되는지
안녕하세요 강사님복습을 하다가 궁금한 점이 3가지 정도 생겨 질문드립니다.1) 채팅 유저가 최초 접속을 하면컨트롤 서버에 접속가용 가능한 채팅 서버의 주소를 응답받음해당 채팅 서버와 소켓 연결이런 흐름으로 이해했는데 맞을까요?프론트 단 코드에서는 채팅 서버와 직접 소켓 연결하는 코드만 있어서 질문드립니다. 2) 사용자가 채팅 시, 채팅 서버가 도중에 다운되면 사용자는 컨트롤 서버에 재연결 시도하여 가용가능한 채팅 서버를 재할당 받는 것인가요?3) 컨트롤 서버에 api 주소 중 /server-list 라는 api 가 있던데 해당 API 는 누가 호출하는 것인가요? 가용가능한 서버 리스트를 내려주는 API 로 이해했는데, 그럼 채팅 사용자가 해당 API 를 직접 찌르는 걸까요?
-
해결됨대용랑 채팅 TPS에 대한 stateful 서비스 구축하기
코드 공유
안녕하세요 강사님,지금 막 따라가고 있는 수강생들 중 한명입니다. 저는 1편은 듣지 않고 2편 부터 따라가고 있습니다. 혹시 실례가 안된다면 "처음 뵙는 분들! 이전 강의에 대한 소스코드를 간단하게 알려드릴게요"에서 나오는 코드를 파일 형태로 공유 해주실수 있을까요? 아무래도 다음에 존재하는 강의를 보다 더 수월하게 이해하고 실습하기 위해 필요할 듯 싶습니다. 감사합니다
-
해결됨Google Authenticator, QR, Cron을 활용하여 자동화 만들기
프로젝트 구조 질문.
안녕하세요 혹시 이 프로젝트구조에서 network 폴더 부분을 eCommerce 강의에서 사용하신 router 폴더와 다르게 이름을 지으신 이유가 있으실까요? 기능은 비슷한거 같아서 질문 드립니다.
-
미해결Google Authenticator, QR, Cron을 활용하여 자동화 만들기
OpenSource를 통해HTML 파일에서 원하는 데이터 추출하기편 버그
section 5 : OpenSource를 통해HTML 파일편 에서 11분 21초에 보시면 터미널에서 578,000원 데이터를 못 가져오고 있습니다. 실제로 실습에서도 실행한 결과. 동일한 카드셀렉터와 inner셀럭터 그리고 태그가 같더라도 일부 금액을 못 읽어오네요.
-
해결됨대용랑 채팅 TPS에 대한 stateful 서비스 구축하기
카프카의 이유
안녕하세요 강사님 아키텍처에 궁금한 점이 생겨 질문드립니다.카프카를 사용한 이유가 채팅 서버의 상태를 비동기로 전송하기 위함이라 이해했습니다.채팅 서버가 실행/종료될 때카프카에 이벤트 발행컨트롤 서버가 이벤트 컨슈밍하며 채팅서버 상태 확인제가 제대로 이해한게 맞다면 대략 위와 같은 흐름이라 이해했습니다. 즉 채팅 서버의 상태를 컨트롤 서버에 알리기 위해 카프카라는 메시지 브로커를 둔것 같은데, 카프카를 사용하지 않고 채팅서버에서 컨트롤 서버로 직접 상태를 전송하는 방식은 불가능할까요.? 이 상황에서 카프카가 굳이 필요한건지 라는 의문이 들어 질문하게 됐습니다ㅇㅅㅇ.
-
해결됨대용랑 채팅 TPS에 대한 stateful 서비스 구축하기
컨트롤 서버가 다운되면 어떻게 되나요?
[이 강의에서 다룰 zero-downtime-deploy를 위한 아키텍처 구조도를 알려드릴게요] 강의를 들으면서 컨트롤 서버의 필요성에 대해 설명해주셨습니다. 채팅 서버 1,2,3 이 다운될 때를 고려해서 로드 밸런싱 용으로 컨트롤 서버를 따로 둔다고 이해했는데, 컨트롤 서버가 배포되거나 다운되는 경우는 없을까요? 컨트롤 서버도 이중화로 구성을 해야하는 것인지, 다른 방법은 무엇이 있는지 궁금합니당
-
미해결MongoDB를 활용하여, 200억건 이상의 데이터 파이프라인 작성법
여러 thread에서 Upsert를 실행하면 괜찮을까요?
MYSQL 강의에서는 ON DUPLICATE KEY UPDATE 를 쓰면 여러 쓰레드에서 호출시, lock이 걸릴 수 있다고 강의에서 보았습니다 혹시 몽고DB는 여러 thread에서 upsert 시도시, lock이슈가 있을까요>?
-
해결됨Golang을 통한 백엔드 개발 및 환경 구축하기
키보드 어떤거 사용하시는지요?
혹시 어떤 키보드 사용하시는지요 .😀
-
미해결쉽고 빠르게 끝내는 GO언어 프로그래밍 핵심 기초 입문 과정
godoc 에러 관련
godoc 에러 관련 아래 명령어로 하면 설치됩니다! go install golang.org/x/tools/cmd/godoc@latest
-
해결됨Golang을 통한 백엔드 개발 및 환경 구축하기
repository 트랜잭션 관련 질문
안녕하세요 스프링으로 개발하고 있는 뉴비인데, 최근에 golang에 흥미가 생겨서 강의를 듣게 되었습니다.이제 강의를 다 수강하고, gorm을 사용해서 db연결까지 해보려고 하는데, 궁금증이 생겨서, 강의의 범위를 벗어나지만 질문드리려고 합니다스프링에서는 서비스 계층에 트랜잭션을 선언후 그 안에서 벌어지는 db관련 로직들을 원자적으로 실행할 수 있습니다. 트랜잭션의 전파를 통해, 서비스에서 다른 서비스를 호출해도 하나의 트랜잭션으로 묶을 수 있고요. gin에서 동일한 결과를 내고 싶은데, 제가 찾은 방법 2가지가 있습니다 DB 객체를 서비스에서 필드로 보관하면서 repository를 호출할때마다 인자로 DB에 트랜잭션을 적용해 를넘겨준다 (또는 트랜잭션을 받는 wrapper function을 사용한다) => 코드작성량이 ㄷㄷrepository에 임시적인 WithTransaction(tx)메서드를사용해, repository의 DB가 임시로 트랜잭션을 바라보게한다. =>싱글톤에서 말도 안되는 방법인거 같은데 gpt가 강추함컨텍스트에 트랜잭션 DB객체를 담아 모든 곳에서 꺼내 사용한다 => gpt, google 모두 권장되지 않는 방법이라고 함3줄요약전부다 다 뭔가 이상한거 같아서, 실무에서 golang을 사용하면 서비스에서 다수의 DB접근이 필요하고, 이를 하나의 트랜잭션으로 관리해야될 때 어떻게 트랜잭션을 처리하는지 궁금합니다!!
-
미해결정말 쉬운 Go언어 입문
강의 화면 오류
크롬이랑 사파리에서 시청하고 있는데, 아예 화면이 이렇게 찍히네요