묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨AI 다루는 백엔드 설계 기본 - SpringBoot SNS 편
클로드 대신 제미나이 사용해도
클로드 대신 제미나이 사용해도 수업따라가는데는 문제가 없나요?
-
해결됨제미니의 개발실무 - 커머스 백엔드 기본편
외부 API 통합 시 데이터 제어 범위 설계 질문
상황 정리저희가 매장 관리자용 통합 예약 관리 시스템을 개발하고 있습니다.현재 시스템 구조[외부 예약 플랫폼 (네이버 같은)] ↓ 자동 연동 [매장 POS 시스템 (티오더 같은)] ↓ API 폴링 [우리 통합 관리 시스템] 고객이 외부 플랫폼에서 예약하면 POS에 자동으로 들어옴우리는 POS API를 폴링해서 예약 데이터를 가져옴우리 어드민에서 직접 예약 등록 기능도 곧 추가 예정문제 상황POS 업체에 확인해보니:API에서 외부 플랫폼 예약 구분이 안 됨 → 구분값 추가 예정외부 예약은 원칙적으로 수정 불가현재는 수정이 되지만 플랫폼 API 키가 연결 안 되어 사실상 불가능DB만 바꿔서는 의미 없고, 외부 플랫폼 API 재호출이 필요POS와 외부 플랫폼 간 연동이 아직 불완전한 상태논의된 두 가지 방향A안 (readonly 방식)- 우리 어드민 생성 예약 → POS 직접 등록 (수정 가능) - 외부 플랫폼 예약 → POS에서 폴링해서 조회만 (수정 불가) - UI에서 "외부 예약" 표시하고 수정 버튼 비활성화 - 수정 필요시 원본 플랫폼 바로가기 링크 제공 B안 (통합 수정 방식)- 모든 예약을 우리 시스템에서 직접 수정 가능하게 - 외부 예약 수정 시 POS API → 외부 플랫폼 API 호출까지 처리 장단점 분석A안 장점각 시스템의 책임 범위가 명확함동기화 정합성 이슈 없음외부 플랫폼 정책 변경에 영향 안 받음여러 플랫폼을 한 곳에서 조회만 해도 관리자 리소스 절감 효과A안 단점수정은 여전히 각 플랫폼에서 해야 함"진정한 통합 관리"는 아님B안 장점완전한 통합 관리 경험관리자가 한 곳에서 모든 예약 제어B안 단점외부 플랫폼 API 직접 연동 불가 (계약 주체가 매장)POS가 외부 플랫폼 제어 API를 제공해야 하는데 현재 없음POS-외부 플랫폼 양쪽 동기화 복잡도 높음외부 플랫폼 정책(취소규칙 등) 변경 시 계속 대응 필요문제 발생 시 책임 소재 애매질문이런 다중 오리진 데이터를 통합하는 시스템에서:readonly로 가는 게 맞을까요, 아니면 수정까지 구현해야 할까요?단계적으로 접근한다면 어떤 순서가 좋을까요?1단계: 통합 조회만2단계: POS가 API 제공하면 그때 수정 추가비슷한 사례에서 일반적으로 어떻게 접근하나요?현재 상황에서는 A안(readonly)이 합리적이라고 판단됩니다.하지만 시간이 지나서 다음 조건들이 충족된다면:POS에서 외부 예약 플랫폼 식별값을 제공외부 예약 플랫폼 API를 저희가 제공받을 수 있음그때는 어떤 아키텍처로 가야 할까요?옵션 1: 직접 호출 방식[우리 시스템] → [외부 플랫폼 API] (직접 호출) → [POS API] (동기화용) 우리가 외부 플랫폼 API를 직접 호출POS는 조회 + 동기화 확인용으로만 사용옵션 2: POS Proxy 방식[우리 시스템] → [POS API] → [외부 플랫폼 API] POS가 외부 플랫폼 제어 API를 제공하도록 요청우리는 POS API만 호출하면 POS가 내부적으로 플랫폼 API 처리외부 플랫폼 변경사항은 POS가 책임옵션 3: readonly 유지[우리 시스템] → [POS API] (조회만) 기술적으로 가능해져도 readonly 유지각 플랫폼 바로가기만 제공어떤 방식이 일반적이고, 각 옵션의 trade-off는 무엇인가요?특히 옵션 1 vs 옵션 2에서:우리가 직접 여러 외부 API를 관리하는 게 나을까요?아니면 POS가 Proxy/Gateway 역할을 하게 하는 게 나을까요?
-
해결됨AI 다루는 백엔드 설계 기본 - SpringBoot SNS 편
claude 동작 결과값이 다를 경우 어떻게 해나가야 될지 모르겠습니다.
git에 있는 .claude를 프로젝트 파일세 추가하고,'User 도메인을 만들고 회원가입, 조회 등 관련 API를 만들어줘. '라고 동일하게 터미널에 입력시 얼추 강의와 비슷하게는 만들어지는데 (여러번 돌려봤는데) 예를들면 dto에 record가 생성은 되는데 네이밍이 아예 다르다거나, 네이밍은 그럴 수 있는데 내용이 아예 달라서(예: Annotation이 전혀 없이 아래와 같이 생성 되거나 다른 파일의 내용이 다르거나 하는 경우, Service에 애노테이션이 아예 없거나, Controller에도 메서드가 반절도 안만들어졌다거나, resources>http>user.sh파일 내용에 내용이 반절이상 없다거나.. 등package com.apiece.springboot_sns_sample.controller.dto; import com.apiece.springboot_sns_sample.domain.user.User; public record UserRegisterRequest(String email, String password, String username) { public User toEntity(String encodedPassword) { return User.builder().email(email).password(encodedPassword).username(username).build(); } } 이럴 경우 어떻게 강의를 수강해 나가면 좋을지 궁금합니다.
-
미해결다양한 사례로 익히는 SQL 데이터 분석
"주문별 고객별 연관 상품 추출 SQL로 구하기-02" 수업 질문
강사님 안녕하세요 WITH절로 조인하셨을때아래와 같이 WHERE절에서 product_id를비교했을때와 조인조건으로 넣었을때 같은 실행계획과 성능이 나오는것 같은데둘다 맞다고 봐도 되나요?조인조건에 있는 것과 where조건에 있는 것이어떤 차이가 있는지 잘 모르겠어서요![궁금한 사항]jointemp_00bona.user_id = b.user_idanda.product_id != b.product_id--where a.product_id != b.product_id [전체쿼리]withtemp_00as (selectb.user_id , a.order_id , a.product_idfromorder_itemsajoinordersbona.order_id = b.order_id),temp_01as (selecta.user_id ,a.product_idasprod_01 , b.product_idasprod_02fromtemp_00ajointemp_00bona.user_id = b.user_idanda.product_id != b.product_id--where a.product_id != b.product_id)selectcount(*) fromtemp_01
-
미해결graphRAG - Neo4J로 구현하는 지식 그래프 기반 RAG 시스템 (feat. LangChain)
neo4j 사용에 질문 드립니다.
만약, 만든 랭체인과 그래프rag를 서비스로 만든다면, neo4j를 호출할 때, pooling은 고려하지 않아도 되는지요? 일반적으로 db 연결에 timeout이나 pooling 등의 설정을 해줘야 하는 것으로 아는데,api를 호출하는 것이라 서버에서 자체적으로 처리하는 것으로 생각하면 될런지요?
-
해결됨AI 다루는 백엔드 설계 기본 - SpringBoot SNS 편
hooks가 동작하기 위한 내용이 없는 것 같아서 추가가 필요하지 않을까 싶습니다.
Claude Code활용(Skills, Hooks)에서 hook과 관련된 설정(예: spotless)내용은 깃 주소에 올려진 프로젝트의 build.gradle.kts에 반영이 되어 있지 않은 것 같아요. hooks경로에 lint.sh는 생성이 되어 있는데 말이죠. settings.loca.json 파일도 없어요. 강의에 관련 설명만 존재하기 떄문에 git에 올려진 프로젝트에 업데이트를 해주시면 어떨까 싶습니다.
-
해결됨AI 다루는 백엔드 설계 기본 - SpringBoot SNS 편
.claude폴더를 복붙해서 넣긴 넣었는데 궁금한 점이 생겼어요.
.claude 폴더가 어떻게 해당 프로젝트에 생성되게하나요? 해당 프로젝트에서 claude실행한다고 생성되지는 않는 것 같은데...claude폴더가 생성되는게 어떤 것에 의해 기본적으로 생성될 때 agents, commands, hooks, skill는 생성이 되지 않고, 필요에 의해 각 경로를 생성하고 skills안에 spring-api-rules와 같은 원하는 것들(주로 어떤 항목들에 대한 것들을 넣으시는지도 궁금합니다.)을 넣으면 되는지 궁금합니다.해당 프로젝트에 폴더로 생성되는 것과 맥북의 root(?) 폴더에 .claude로 생성되는 것에 어떤 차이가 있나요?
-
미해결김영한의 실전 데이터베이스 - 설계 1편, 현대적 데이터 모델링 완전 정복
데이터 역사성 훼손 문제
자연키를 기본키로 설정했을 때 발생할 수 있는 문제점에서 데이터의 역사성 훼손을 예로 들었는데 이 문제는 대리키를 기본키로 등록했어도 발생할 수 있는 문제 아닌가요?이 문제를 해결하기 위해서는 어쩔 수 없이 주문 테이블에도 email 등을 중복으로 저장해야 해결할 수 있는 거 아닌가요?
-
미해결김영한의 실전 데이터베이스 입문 - 모든 IT인을 위한 SQL 첫걸음(SQL부터 차근차근)
sql서버가 켜지면 다시 꺼짐
mac m3 max 기준에서 8.0.44버전을 다운로드하면 sql서버가 켜지면 다시 꺼지고 켰다가 다시 꺼지고를 반복이 됩니다. 이런경우에는 어떻게 해야하나요?
-
해결됨AI 다루는 백엔드 설계 기본 - SpringBoot SNS 편
터미널에서 claude 입력 과정
3분 7초대에 터미널에서 claude 입력할 때, 그 전에 설정과정들을 알려주면 이해하기 편할 것 같습니다. 처음이라 찾아보는데 시간이 좀 걸렸습니다.
-
해결됨제미니의 개발실무 - 커머스 백엔드 기본편
PG 결제 승인 로직
안녕하세요!PG 결제 승인 API 구현 중 고민이 되는 부분이 있어서 질문드립니다! PG사로 부터 /callback/success 등과 같이 콜백 url로 요청을 받았을때 결제 승인을 서버에서 진행하는 플로우인데결제 승인 요청 전 결제 검증PG 결제 승인 API 호출정상 승인 or 승인 실패 시 transaction_history 저장의 흐름인 것 같은데 추가적으로 3번에서 정상 승인 시에 PG사로 부터 응답받은 paymentKey, amount 등을 요청한 paymentKet, amount와 동일한지 검증이 필요할까? 라는 생각이 들었습니다. 궁금한 점은실무에서 PG사 연동 시에는 결제 승인 응답 후 검증 로직을 다루는지? 다룬다면 실제 승인 요청 내역과 응답 내역이 다르다면 어떻게 처리하는지? (클라이언트로 응답, 불일치 시 보정 전략 등..)외부 API 호출 시 서킷 브레이커를 사용하는 걸 선호하는지?정도가 있습니다!제미니님 덕분에 항상 많이 배워갑니다 감사합니다~!
-
미해결graphRAG - Neo4J로 구현하는 지식 그래프 기반 RAG 시스템 (feat. LangChain)
fulltext index 생성이 안됩니다
지식그래프(KG) 검색 - 전문 검색에서 fulltext index 생성이 안됩니다. 여러번 실행해도 동일합니다.아래 3개 중 movie_title_tagline_fulltext만 생성되고 movie_title_fulltext와 person_name_fulltext는 실행해도 반응이 없습니다.SHOW FULLTEXT INDEXES를 실행하면 movie_title_tagline_fulltext만 표시됩니다. Neo4j 버전: 버전 2.1.1(2.1.1)Neo4j는 Desktop 버전으로 실행했습니다. [참고]실행 파일: KG_P1_03_neo4j_movie_03_full-text_search.ipynb [스크립트]CREATE FULLTEXT INDEX movie_title_fulltext IF NOT EXISTSFOR (m:Movie) ON EACH [m.title] CREATE FULLTEXT INDEX movie_title_tagline_fulltext IF NOT EXISTS FOR (m:Movie) ON EACH [m.title, m.tagline] CREATE FULLTEXT INDEX person_name_fulltext IF NOT EXISTSFOR (p:Person) ON EACH [p.name]
-
해결됨AI 다루는 백엔드 설계 기본 - SpringBoot SNS 편
.claude 안에 폴더 및 파일은 어떻게 생성하죠?
.claude 안에 폴더 및 파일은 어떻게 생성하죠?
-
해결됨제미니의 개발실무 - 커머스 백엔드 기본편
QnA에서 Join 필드 표현법
강사님의 코드를 보니 Question 클래스 등에 id, userId, title, content 등만 넣어두신 것 같은데 일반적으로 자주 표현되는 다른 필드를 표현하려면 어떻게 하는 것이 좋을까요?예를 들어 QnA 조회시 질문 목록에서 질문 작성자의 이름이 표시되는 형태가 많습니다. 이때 그렇다면 QnAResponse 에 questionAuthor 필드가 있어야 할 것 같은데 해당 필드가 추가된다면 어떻게 username 정보를 넣어주어야 할지 궁금합니다. 1안. Question 클래스가 userId 대신 User 클래스를 가지고 있는다...2안. Controller에서 user 목록을 조회해서 response 팩토리 메서드에서 매핑한다.2안이 더 나을 것 같긴 합니다만, 리스트이다 보니 매핑로직이 복잡해 질 것 같기도 하고... qnsList->question->userId 모아서 userList조회... map생성 후 매핑 등등 이런 과정이 괜찮은건지 궁금합니다.또 2안이 더 나은 방법이라면 response에 노출해야하는 join 필드 5-6개 처럼 많을때는 어떻게 처리하시는 편인지도 궁금합니다
-
미해결데이터베이스 MSSQL
SQL server 설치 오류
안녕하세요. Windows PowerShell 2.0이 서비스 종료하여 설치 오류가 떴는데 어떻게 해야하나요?
-
해결됨실전! 데이터베이스 완전정복 [설계편]
인덱스 설계 시 컬럼 선택 기준
안녕하세요. 강사님의 좋은 자료 덕분에 장고 강의에 이어 데이터베이스 설계 강의까지 함께하고 있는 수강생 입니다. 강의를 듣던 중, "22.선택도 / 3:51" 내용을 보고 의문점이 생겨 질문 남깁니다. 배경선택도 값이 낮으면, 조건에 맞는 행이 적다 → 인덱스 효율이 증가한다.선택도 값이 높으면, 조건에 맞는 행이 많다 → 인덱스 효율이 떨어진다.라는 설명을 듣고, "중복이 적을수록 인덱스를 생성하면 더 효율적이겠구나" 라는 정보를 얻었습니다. 그 후, "어떤 컬럼을 선택해야 할까?" 장표에는 그중에서 선택성이 높은 컬럼 위주로 인덱스 생성이 효율적이라고 설명과 더불어 자료를 보여주셔서 의문이 생겼습니다. 질문Q. 선택성이 높으면 조건에 맞는 행이 많아 중복되는 행을 다시 스캔하여 필터링 하기 때문에 인덱스 사용에 비효율적이지 않을까요? 그럼 나머지 강의를 일단 수강하며 배움에 즐거움을 만끽하러 가보겠습니다. 감사합니다.
-
미해결김영한의 실전 데이터베이스 - 설계 1편, 현대적 데이터 모델링 완전 정복
실무팁 - 등록자,수정자 컬럼 관리 관련 질문입니다.
실무에서 등록일,수정일, 등록자, 수정자 4개 컬럼을 테이블 별로 만들어서 쓰라고 하셨는데1) 모든 테이블에 4개 컬럼은 만든다 생각해도 되는지?2) 유지보수 상 운영 테이블을 직접 수정하는 경우가 있었는데 이때 MySQL 워크벤치 에서 직접 수정하는 경우는 일일히 의식해서 set에 updated_by 를 넣어주는게 최선인지??궁금합니다.
-
해결됨제미니의 개발실무 - 커머스 백엔드 기본편
결제서비스 콜백 동시성문제 가능성
안녕하세요 결제 코드느끼기 강의를 보며 궁금한점이 있어서 질문을 남깁니다.여러 주문들을 동시에 넣었고createPayment가 되고 PG사로부터 success가 콜백 호출 된다 했을때, 동시성 문제가 우려되는데요 각 주문마다 point 혹은 coupon을 쓴다고 했을때, 고객이 가진 point 이상으로 point가 차감된다든지, 쿠폰 재사용 문제를 직면했을때 예외처리가 없어보이며, 이 때문에 이를 복구하는 방안같은건 없어보입니다.(괜히 예외처리를 했다가 고객의 돈이 빠져나가고 결제상태가 안바뀔 염려때문)그럼에도 각 Value Object에서 valid및 예외처리하는 로직이 success api에 추가할 수 있을까요? 아니면 주문 결제 전 단계에서 막으면 좋을까요?아니면 그럴 가능성이 자주는 없으니, 결제 상태는 Ready인 부분을 찾아서 수동 수정하는것도 방법이라고 보시나요?
-
미해결김영한의 실전 데이터베이스 - 설계 1편, 현대적 데이터 모델링 완전 정복
구글이 이메일 변경을 허용하는 이유
이번에 설계 1편에서 자연 키와 대리 키 부분을 학습하면서,최근 구글이 이메일 변경을 부분적으로 검토하고 있다는 뉴스가 떠올랐습니다.예전에는 이메일 변경이 거의 불가능했던 이유가이메일을 자연 키처럼 사용해왔기 때문이라고 이해해도 될까요?그리고 지금에 와서는 어떤 구조적 변화나 트레이드오프를 통해이메일 변경이 가능해졌는지도 궁금합니다.
-
미해결김영한의 실전 데이터베이스 입문 - 모든 IT인을 위한 SQL 첫걸음(SQL부터 차근차근)
INSERT INTO 관련 질문
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]insert into 할때 괄호로 열을 지정하지않고 생략한다면 table을 생성할때 작성한 열 순서대로만 넣어야하는건가요?? 강의에 열의 순서라는게 그걸 뜻하는게 궁금해요