묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결김영한의 실전 데이터베이스 - 설계 2편, 실무에서 반드시 마주치는 9가지 설계 패턴
섹션 6 SOFT DELETE) UNIQUE 제약 조건 + 가상 컬럼
안녕하세요!질문이 있습니다Soft delete 환경에서 UNIQUE를 걸 시, 가상 컬럼을 이용한 해결 방법은 소개되지 않은 이유가 있나요?가상 컬럼으로 해결하는 방식은 추천하지 않는 방법인가요? 예를 들어,(MySQL)목표 = Member - email의 unique를 지키는 것 <Member 테이블>필드 = email, deleted_at, _active_checkUNIQUE(email, _active_check) 이때,가상 컬럼 =_active_check-> _active_check BOOLEANGENERATED ALWAYS AS (IF(deleted_at IS NULL, TRUE, NULL)) VIRTUAL; 이렇게 하면hello 계정 생성email = "hello", deleted_at = null, _active_check = true(이때, hello 계정은 다시 INSERT 불가 (UNIQUE(email, _active_check))hello 계정 soft 삭제email = "hello", deleted_at= 2025.01.01, _active_check = nullhello 계정 다시 생성 email = "hello", deleted_at= 2025.01.01, _active_check = nullemail = "hello", deleted_at = null, _active_check = true=> 결과적으로 UNIQUE 제약이 지켜짐 가상 컬럼을 활용하여, Soft Delete 환경에서 UNIQUE 제약을 지키는 방식은 좋지 않은 방법인가요?
-
미해결AI 시대 대체되지 않는 미국 빅테크 시스템 디자인 & 오픈소스 실무 기여 완성 코스
Spotify 서비스 설계에서 transcoder service에 대해 문의 드립니다.
안녕하세요. transcoder service에 대해 문의 드립니다.해당 서비스는 음악파일에 대한 변환으로 이해했는데요. 그렇다면 변환 과정을 거쳐서 file storage 로 넣어야하지 않을까 싶어요.혹시 언급된 transcoder가 다른 의미가 있을까요?
-
해결됨김영한의 실전 데이터베이스 - 설계 2편, 실무에서 반드시 마주치는 9가지 설계 패턴
섹션2 공통 코드) 애플리케이션 ENUM을 API에 그대로 노출한다면?
안녕하세요! 강의 정말 재밌게 보고있습니다궁금한 점이 있습니다애플리케이션 ENUM을 쓴다고 가정합니다.이때, (PENDING, 대기중)에서 PENDING만 API로 주면 안되나요? FE에서 PENDING을 보고 "대기중"으로 글씨를 띄우면 안되는 걸까요? 기획자의 요구에 따라서 "대기중"이라는 글씨의 변경 요청을 BE, FE 누가 담당하는게 맞는 건가요?
-
해결됨AI 다루는 백엔드 설계 기본 - SpringBoot SNS 편
.claude 폴더 규칙 생성 방법
강의를 들으면서 강의에서 제공해주신 GitHub 프로젝트 코드를 참고하여 개인적으로도 별도의 프로젝트 파일을 만들어 수강하고 있습니다. 현재는 강의 코드가 제공되고 있어 .claude 폴더를 다운로드한 뒤 제가 만든 프로젝트에 추가하면 되지만, 추후 개인 프로젝트에서 AI를 활용해 개발한다고 가정하면 .claude 폴더를 프로젝트 특성에 맞게 커스텀해야 할 것 같다고 생각합니다.그래서 아래 두 가지가 궁금합니다.현재 제공해주신 .claude 폴더는 어느 정도 범용적으로 사용할 수 있는 구조인지 궁금합니다. 다른 프로젝트에서도 그대로 붙여넣어 사용해도 되는지, 아니면 프로젝트마다 반드시 수정해야 하는 핵심 포인트가 있는지 알고 싶습니다.처음 새 프로젝트를 만들면 .claude 폴더가 없는 상태인데, 프로젝트 기획과 규칙(코딩 컨벤션, 아키텍처, 역할 분리, 문서화 규칙 등)이 이미 정해져 있는 경우 .claude 폴더를 어떤 순서와 기준으로 새롭게 생성하는지 시작하는 방법이 궁금합니다.
-
미해결김영한의 실전 데이터베이스 - 설계 2편, 실무에서 반드시 마주치는 9가지 설계 패턴
NoSQL 질문있습니다.
NoSQL은 대규모 분산시스템 환경에서 CAP중에 AP을 주로 선택하는 모델이라 Eventual Consistency모델로 알고 있습니다. 하지만, NoSQL도 서버를 한대만 사용하면 Strong Consistency가 아닌가라는 생각이 들었습니다. 강의에서 설명해주신 NoSQL은 Eventual Consistency모델이다라고 하신거는 일반적인 사용환경이 대규모 분산시스템이기 때문에 Eventual Consistency라고 하신걸까요? 아니면 제가 잘못 생각하고 있는 것일까요?
-
미해결업무에 바로 쓰는 SQL 튜닝
FTS 방식으로 수행하는 나쁜 SQL 에서 질문이 있습니다.
LIKE 로 하면 불 필요한 것 까지 스캔할 수 있는가능성이 있다고 하셨는데요.말씀해주신 내용이 MySQL 에만 한정인가요?아니면 Oracle 이나 다른 DB 들도 동일하게적용되는 내용일까요?
-
미해결graphRAG - Neo4J로 구현하는 지식 그래프 기반 RAG 시스템 (feat. LangChain)
EasyOcr 관련
강의 내용에 uv add easyocr관련 내용이 빠져 있는거 같습니다md 파일로 변환 할 때 에러가 나서확인 해보니 pip install easyocr 을 하라는 메세지를보고 설치를 했습니다
-
미해결제미니의 개발실무 - 커머스 백엔드 레거시와 AI 활용편
예약 변경 시 '과거 정책 기준 재계산' 요구사항에 따른 스냅샷 데이터 구조 설계 고민
안녕하세요 강사님. 지난번 '어드민 예약 변경 시 쿠폰 회수' 관련 질문을 드렸던 수강생입니다. 답변 주신 내용을 바탕으로 설계를 보완하던 중, 스냅샷 데이터의 범위와 확장성에 대해 추가적인 고민이 생겨 조언을 구합니다.[현재 아키텍처 상황] 현재 예약 테이블에는 예약 시점의 가격 정보를 JSON 형태의 스냅샷으로 저장하고 있습니다.이유: 가격 결정 요소(할인, 이벤트, 기업 지원 등)가 빈번하게 변경/추가되어 RDB 컬럼으로 대응하기 어렵기 때문입니다.저장 데이터: 현재는 '결과값' 위주로 저장합니다. (예: 적용된 할인 명, 타입(정액/정률), 최종 할인 금액)[직면한 문제: 변경 시점의 기준 모호성] 예약 시점(T1)과 변경 시점(T2) 사이에 정책이 변경되었을 때, 어드민에서 예약을 수정하면 어떤 정책을 따라야 하는가에 대한 딜레마입니다.만약 기획 요구사항이 "변경 시점(T2)의 정책이 아니라, 최초 예약 시점(T1)의 정책 조건을 유지한 채 금액만 다시 계산해 주세요"라고 한다면 문제가 복잡해집니다.현 구조의 한계: 현재 JSON에는 '결과(할인액)'만 있고 '조건(최소 결제 금액, 당시 허용된 옵션 목록 등)'은 없습니다.예상되는 부작용: 이를 해결하려면 예약 시점의 모든 검증 조건(Condition)을 JSON에 다 때려 넣어야 합니다.이렇게 되면 도메인 로직이 바뀔 때마다 JSON 스키마도 계속 비대해지고,과거 JSON 데이터와 현재 로직 간의 정합성을 맞추기 매우 까다로워질 것 같습니다.[질문] 이처럼 "빈번하게 변하는 가격 정책"과 "과거 기준 수정"을 동시에 만족해야 할 때, 실무에서는 보통 어떤 접근 방식을 취하나요?JSON 스냅샷 확장: 다소 복잡해지더라도 예약 시점의 검증 조건(Parameter)들까지 모두 JSON에 스냅샷으로 남기는 게 맞나요? (JSON 컬럼 사용이 잘못된 선택이었을까요?)Policy Versioning (정책 버전 관리): 아니면 가격/할인 정책 테이블 자체를 버전 관리(Effective Date 등)하여, 예약 시점의 policy_version_id를 매핑해두고 로직을 태우는 방식을 써야 할까요?현실적인 타협: 아니면 보통 어드민 변경 건은 "재계산 불가(단순 금액 입력)"로 처리하거나, "무조건 현재(T2) 정책"을 따르게 하는 등 복잡도를 낮추는 타협점을 찾나요?확장성 있는 가격 스냅샷 설계에 대한 강사님의 경험과 조언을 부탁드립니다..!
-
해결됨AI 다루는 백엔드 설계 기본 - SpringBoot SNS 편
강의를 어떻게 보면 좋을 까요?
일단 ai 에이전시를 써서 대충 틀을 만들고 살을 붙혀라라는 느낌으로 듣고 있습니다. 결과 값이 다 다르니 강의와 비슷하긴 하나 같은 느낌으로 구현을 못하는데. 전체적으로 강의를 한 번 쭉 완강하고 흐름을 익힌 이후에 구현을 해보라는 건가요? 아니면 주신 깃헙 링크 보고 따라 해보면 될까요?
-
미해결김영한의 실전 데이터베이스 - 기본편
섹션 3 퀴즈 3번 문제
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]섹션 3 퀴즈 中3. 자식 테이블을 부모 테이블에 조인할 때, 결과 행의 수는 일반적으로 어떻게 변할까요?제가 이해한 걸 쿼리로 나타내면,SELECT * FROM [부모 테이블]JOIN [자식 테이블]이라고 생각했는데, 문제에서 말하는건SELECT * FROM [자식 테이블]JOIN [부모 테이블]인건가요?
-
해결됨AI 시대 대체되지 않는 미국 빅테크 시스템 디자인 & 오픈소스 실무 기여 완성 코스
특별 학습 자료 프로모션 1년 멤버십 무료 제공 지원 확인 방법
특별 학습 자료 프로모션 1년 멤버십 무료 제공 지원 어떻게 확인할 수 있을까요?
-
해결됨[4주 과정] 『부트캠프 백엔드 개발자 편 with 스프링 부트』 완독 챌린지
JDBC 학습이 필수적인가요?
우선, 제가 가려는 기업에서 원하는 것은 springboot(와 API 계약 이해), bootstrap, postman, WebSocket 사용 이해입니다.이번년도 9월까지 개인 프로젝트 2개(각 1달)와 팀프로젝트 1개(2달)를 할 생각인데,springboot 학습과 동시에 프로젝트를 진행하기 전에 jdbc를 학습하는 것이 필수적인지 궁금합니다. 제 글에 부족한 부분이 있어서, 이해하기 어려우시면 답변으로 더 필요한 정보를 말씀해주시면 감사하겠습니다.
-
해결됨AI 다루는 백엔드 설계 기본 - SpringBoot SNS 편
SKILLS.md나 agents 작성 문의
SKILLS.md 혹은 agents 작성은 반드시 영어로 작성해야 하는 것일까요? 영어로 작성하는 이유가 따로 있을까요?
-
해결됨제미니의 개발실무 - 커머스 백엔드 레거시와 AI 활용편
선생님
이전강의에 이어 이번강의도 또 듣게되네요선생님께서 늘 강의에서 느낀다 라는 표현을 많이 하시는데 이게 되게 중요한건가 보네요잘 듣겟습니다
-
해결됨3일 만에 끝내는 백엔드 면접 핵심 압축 공략집 [네카라쿠배당토]
디스코드 초대 안돼요
링크 타고 들어가서 수락하기 누르면 아래와 같이 뜨는데 어떻게해야할까요 학습 관련 질문을 남겨주세요. 구체적으로 적을수록 좋아요!어떤 섹션, 몇 분 몇 초의 내용인지어떤 부분이 이해가 안 되는지어떤 에러가 발생했는지 (에러 메시지 전체)본인이 시도해 본 방법커뮤니티 질문 & 답변에 비슷한 내용이 있었는지 먼저 검색해보세요.같은 질문이 이미 답변되었을 수 있습니다검색으로 더 빠르게 해결할 수 있어요e
-
미해결김영한의 실전 데이터베이스 - 설계 1편, 현대적 데이터 모델링 완전 정복
실무적인 설계로 접근했을 때 제 2정규형 항상 만족?
안녕하세요. 질문이 있습니다!! 제2정규화는 제 1 정규형을 만족하고, 테이블의 기본키가 복합키일 때 부분 함수 종속이 있으면 적용할 수 있잖아요 근데 이전 강의 영상에서 말씀하셨듯이 유연하고 확장성 있는 설계를 하기 위해 자연키가 아닌 대리키를 사용하고, 연관 엔티티(매핑 테이블)을 두어 사용하려면 비즈니스 로직에 따라 유니크 제약조건을 걸어 해결하라고 하셨습니다 그럼 여기서 궁금한 것이 이렇게 실무적인 접근으로 설계를 한다면(대리키) 항상 키는 단일컬럼 키니까 복합키가 아니라서 항상 제 2정규형을 만족하는 것인가요??
-
해결됨제미니의 개발실무 - 커머스 백엔드 기본편
어드민(Back-office)에서 예약 변경 시, '할인 조건 재검증(쿠폰 회수)' vs '기존 혜택 유지' 중 어떤 정책이 일반적인가요?
안녕하세요실무에서 '관리자(Admin) 예약 변경 기능' 정책을 두고 기획팀과 이견이 있어, 실무에서는 어떤 방식이 범용적인지 여쭙고 싶습니다.[시스템 상황]유저가 예약할 때 다양한 할인(이벤트, 타임세일, 쿠폰, 기업지원 등)이 적용되며, 이 정보는 예약 시점에 스냅샷(Snapshot)으로 저장됩니다.현재 어드민(상담원/운영팀)이 유저의 예약 시간/날짜를 변경하는 기능을 개발 중입니다.[이슈 사항]기획상으로는 어드민에서 시간을 변경할 때도 모든 할인 조건을 '실시간'으로 재검증하라고 합니다.문제는 재검증 과정에서 '쿠폰 박탈' 같은 상황이 발생한다는 점입니다.예시 상황:유저가 5만원짜리 예약에 5만원 이상 결제 시 사용 가능한 10% 쿠폰을 씀.어드민이 사정상(또는 유저 요청으로) 가격이 저렴한 타임이나 옵션으로 변경함 -> 결제액이 4만원이 됨.기획 요구사항: "최소 결제 금액(5만원) 조건을 불만족하게 되었으니, 자동으로 쿠폰 적용을 해제(원복)하고 금액을 재계산한다."[제(개발자) 의견 및 고민]저는 위 기획이 어드민 기능의 목적과 UX(고객 경험)에 맞지 않는다고 생각합니다.고객 경험 훼손: 유저는 단지 시간을 바꿨을 뿐인데, 시스템이 엄격하게 검증해서 "조건 미달이니 쿠폰 뺏어가겠습니다"라고 하면 컴플레인 요지가 다분합니다. (유저 입장에선 혜택 유지를 원하니까요.)데이터 복잡도: 이미 스냅샷으로 저장된 할인 정보를, 수정 시점에 다시 현재 기준의 마스터 데이터(쿠폰 유효기간, 최소금액 등)와 대조해서 '줬다 뺏는' 로직을 짜는 건 구현 복잡도 대비 실익이 너무 적습니다.관리자의 재량: 어드민에서의 변경은 보통 '강제성(Override)'을 띠는 경우가 많은데, 시스템이 칼같이 혜택을 잘라버리는 게 맞나 싶습니다.[질문]보통 예약 도메인에서 관리자(Admin)가 개입하여 예약을 변경할 때도, 이렇게 엄격하게 유저의 할인 자격(최소금액, 유효기간 등)을 재검증하여 박탈시키는 게 맞나요?아니면 어드민 권한 변경인 경우 "기존 스냅샷(혜택)을 최대한 유지"해주거나, 가격 변동이 불가피하면 "취소 후 재예약"을 하는 프로세스가 더 일반적인가요?개발자로서 이 복잡한 '조건부 쿠폰 회수' 로직을 방어하고 싶은데, 설득력 있는 논리가 필요합니다. 조언 부탁드립니다!
-
미해결옆집 개발자와 같이 진짜 이해하며 만들어보는 첫 Spring Boot 프로젝트
프로젝트생성이안되여..진도못나가는중..
머가문제인지도 모르겠어요....
-
미해결AI 시대에 살아남기: Supabase로 백엔드 뚝딱!
비개발자이고, 바이브코딩을 하는 40대중반 직장인입니다.
작년 12월 러바블을 시작으로 커서, 안티그래피 그리고 클로드코드 등을 활용하여 바이브코딩을 해왔습니다. 그러면서 백엔드의 중요성을 몸소 느끼게 되었죠. 아주 간단한 건 버셀과 수파베이스를 어찌저찌 ai에게 물어보면서 연동을 했지만, 전문적인 지식이 필요함을 느끼게 되었습니다. 그러던 중 기적처럼 어제 이 강의가 개설된 것을 알게 되었죠. 너무 감사합니다. 한번 열심히 배워보겠습니다. 비개발자 출신이기에 다소 어려울 수도 있겠지만 뭐 하다보면 되겠죠 .ㅎ
-
해결됨AI 다루는 백엔드 설계 기본 - SpringBoot SNS 편
CSRF 관련 궁금한게 있어요
현재 백엔드 프로젝트에서스프링 시큐리티 프레임워크 도움을 받기 위해CSRF 설정은 끄고 <form> 전송과 세션 방식으로 로그인 하고 있잖아요. (저는 그렇게 보였는데 아니면 제가 잘못 이해한거구요..) 그런데 요즘은SSR 방식이 아닌 현재 프로젝트처럼프론트 따로 서버 따로 해서서버는 REST API 만 개발하고 JWT 방식을 쓰잖아요 JWT 도 보안에 한계가 있는데아무튼 이걸 떠나서현재 CSRF 설정을 끄고 <form> 전송으로 로그인하는게보안상 많이 위험한 건 아닌가요? 제가 애초에 잘못 이해하고 있어서질문 자체가 잘못되었을 수 있지만관련해서 답변 부탁드립니다