묻고 답해요
169만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨Claude + IntelliJ로 TodoList 개발하기 - MCP 완전 정복
2025.3.3 인텔리제이 버전에서 MCP설정하는 방법
정보가 조각조각 되어있어서 처음 시작 부터 어렵네요. 윈도우11 환경입니다.인텔리제이 MCP서버 클라이언트 자동구성 쪽에 claude가 안뜹니다.현재 강의에서 claude설치후 구성편집 들어가서 노션에 있는거 복사후 claude종료 후 재실행한 상태입니다.
-
미해결코드로 배우는 React 19 with 스프링부트 API서버
동일하게 실습하는데 이상하게 페이지를 찾지 못하네요..
잘 따라가다 이상하게 여기서 막혀버리네요
-
해결됨실시간 채팅 서버 구축: 분산 처리부터 성능 최적화까지
service 를 interface 로 두는 이유
안녕하세요 강사님.서비스 계층을 설계할 때 인터페이스를 두고 구현체를 만드는 패턴을 사용하는 이유가 궁금합니다.현재 프로젝트에서는 구현체가 하나뿐인데, 이런 상황에서도 인터페이스를 분리하는 것이 가지는 실질적인 이점이 무엇인지 알고 싶습니다.특히 구현이 하나로 고정되어 있다면, 바로 구현 클래스를 빈으로 등록해도 되지 않을지 고민이 되었는데요.설계 관점에서 인터페이스를 미리 분리해두는 이유와, 실무에서 어떤 장점이 있는지 설명해주시면 감사하겠습니다
-
해결됨스프링부트로 직접 만들면서 배우는 대규모 시스템 설계 - 캐시 전략
23강 5:38 부분 질문 있습니다!
m=32MB짜리 10개와 m=512MB짜리 1개의 경우를 비교해주셨습니다.그런데 이는 샤딩을 통해서 메모리 효율적으로 됐다기 보다는 메모리 총량이 512MB->320MB로 감소했기 때문에 오차율이 조금 증가하는 대신 메모리를 덜 쓸 수 있는 것 아닌가요?예를 들어 320MB 짜리 1개인 경우와 32MB짜리 10개인 경우의 오차율이 똑같지 않나 하는 생각이 들어서 질문드립니다!
-
해결됨스프링부트로 직접 만들면서 배우는 대규모 시스템 설계 - 캐시 전략
23강 17초 부분 질문있습니다~
"Split 전략에서 항상 모든 Split을 조회한다."요 부분이 이해가 가지 않아서 질문드립니다!findSplitIndex로 계산한 split에만 접근하는 것 아닌가요?아니면 모든 스플릿이 단일 redis 내에 존재하는 것이 문제라는 의도로 말씀하신걸까요?
-
미해결최신 Spring AI 기초부터 MCP까지
mcp 사용 여부
안녕하세요 강사님 spring ai 9강 까지 거의 다 들은 학생입니다.1) 만약에 ocr 을 이용해서 영수증과 음식을 구분하는 ai 모델을 aws에서 사용을 하고이걸 스프링 으로 연결해서 저장할려 면 mcp를 거의 필연적으로 사용해야 할 꺼 같습니다.webflux 랑 쿠버네티스 EKS 를 이용해서 만들려고 하는데 이게 프로젝트 수준에서 괜찮은 수준인지 궁금해서 질문 드립니다.참고로 아직 앱 설계 단계라 사진을 찍으면 인식이 되고 db에 저장되고 추천 레시피도 나오는 정도로 생각하고 있습니다. 그리고 채팅 같은 형태에 추천 시스템 같은 경우에는 사용자가 선호하는 음식에 따라 나눈다고 가정했을 때 만약에 처음 음식 선호도를 받는다고 가정을 했을 때 도메인을 통해 구분을해서 type이 아닌 jdbc 또는 pgvector 로 처리를 하나요? 현업에서도 이러는지 궁금해서 질문드립니다. 그리고 채팅을 저장하는 경우 예를 들면 채팅기록 같은 경우 postgresql로 영구 저장을 하고 redis 정도로 해서 빠른 캐싱 정도를 생각하고 있는데 이 정도면 프로젝트 수준에서 괜찮은 수준인지 궁금하여 질문드립니다.
-
미해결Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
강의 교안
강의 교안 지금은 받을수있을까요
-
미해결토비의 클린 스프링 - 도메인 모델 패턴과 헥사고날 아키텍처 Part 1
어댑터에서 도메인에 직접 의존하는 경우에 대해
안녕하세요.좋은 강의 잘듣고 많이 배우고 있습니다. 좋은 강의 만들어주셔서 감사합니다.다름이 아니라, 어댑터에서 엔티티에 의존성을 가지는 것이 크게 문제되지 않는다고 말씀주신 내용에 의문이 있어 질문드립니다! 어댑터에서 도메인에 직접 의존하는 것을 막기 위해서 변환 역할을 하는 매퍼 클래스나 DTO에서 엔티티를 자기 자신으로 변환하는 로직을 가지는 것은 어떨까요? 타이트하게 룰을 잡는 케이스를 가정한다면, application layer 내부에 port가 존재할 것이고 이 port에서 return 하는 dto도 application layer일 것이고, 이 dto 안에서 Entity를 받아서 자기 자신으로 변환하는 로직을 가진다면 entity가 application 밖으로 나가지 않을 수 있지 않을까요?(controller, repository 등 마찬가지입니다)그리고 dto를 application에서 변환하는 것이 로직의 침투라고 표현하시기도 했는데, 그렇다면 provided port 역시 어댑터의 요구가 침투하는 구조라고 볼 수도 있을 것 같기도 합니다..(생각해보니 이상적으로는 계층별로 DTO를 생성하는게 맞다고 생각은 들지만, "엔티티를 반환하는 트레이드오프가 굉장히 효율적이고 정당하다"라고 말씀하신 것 같다고도 생각이 듭니다) 강의에서 항상 기술이 등장한 배경과 사상을 이해하고, 이를 바탕으로 정당하게 규칙을 스스로 정하는 것을 강조하시는 것 같습니다. 그래서 강의에서 말씀하신 내용이 비슷한 맥락으로, "절대 노출되면 안된다"라는 것에 대한 반박이라고 받아들여지긴 합니다만.. 그래도 바깥쪽으로 노출하지 않는 것이 의존성 관리 차원에서 더 좋지 않을까하는 생각에 질문드립니다!
-
해결됨스프링부트로 직접 만들면서 배우는 대규모 시스템 설계 - 캐시 전략
Split 전략 강의 중 질문 있어요
@Slf4j @SpringBootTest class SplitBloomFilterRedisHandlerTest extends RedisTestContainerSupport { @Autowired SplitBloomFilterRedisHandler splitBloomFilterRedisHandler; @Test void mightContain() { SplitBloomFilter splitBloomFilter = SplitBloomFilter.create("testId", 1000, 0.01); List<String> values = IntStream.range(0, 1000).mapToObj(idx -> "value" + idx).toList(); for (String value : values) { splitBloomFilterRedisHandler.add(splitBloomFilter, value); } for (String value : values) { boolean result = splitBloomFilterRedisHandler.mightContain(splitBloomFilter, value); assertThat(result).isTrue(); } for (int i = 0; i < 1000; i++) { String value = "notAddedValue" + i; boolean result = splitBloomFilterRedisHandler.mightContain(splitBloomFilter, value); if (result) { log.info("value={}", value); } } } } 위 코드는 SplitBloomFilterRedisHandlerTest 인데요.강의 중 코드입니다 1000 크기에 0.01 오차율의 Bloom Filter 를 만들고1000개의 데이터를 넣고 False Positive 까지 검증해보는 코드인데요.질문입니다Split 전략을 배우기 전에순수한 Bloom Filter 구현 강의에서도 위와 동일한 테스트 코드가 있는데요이 때, 순수한 Bloom Filter 의 한계로써생성한 Bloom Filter 크기를 초과하여 데이터를 넣으면 비트 1이 많아져 오차율이 증가하고그로 인해 False Positive 데이터가 많이 조회되는 현상을 살펴보거든요.그리고 그 해결책으로처음부터 큰 Bloom Filter 를 만드는 것 이외에Split / Sharding / Sub Filter 전략이라고 말씀하시는데요근데 위 Split 전략의 테스트 코드에서 BloomFilter 크기는 1000으로 만들고 데이터를 훨씬 초과하여 2000개 만들어 넣어보면순수한 Bloom Filter 때처럼 False Positive 데이터가 많이 조회됩니다.저는 PC 가 느려서 False Positive 를 1000번으로 조회하였고오차율 (0.01) 에 의하면 약 10개의 False Positive 가 나와야 하는데데이터 1000개를 저장했을 때는 오차율에 맞게 8개로 떨어지는데데이터 2000개를 저장했을 때는 오차율을 훨씬 넘어갑니다제가 코드를 잘못 따라 친건지.. Split 도 원래 그런건지..제 질문 의미가 전달될지는 모르겠지만.. 명확하게 개념 정리가 되지 않아 질문드립니다
-
해결됨토비의 클린 스프링 - 도메인 모델 패턴과 헥사고날 아키텍처 Part 1
Member 도메인이 PasswordEncoder를 받는 구조 질문 있습니다.
예제에서는 도메인에 별도 PasswordEncoder 인터페이스를 정의해 사용하고 있습니다. 만약에, Member 도메인이 Spring Security의 PasswordEncoder 인터페이스를 직접 의존한다면, 구현체가 아니라 인터페이스를 참조하더라도 순수 도메인 설계 관점에서 위반으로 봐야 할까요? 저는 인터페이스 의존이라 괜찮을 수 있다고 생각했지만 AI는도메인에서는 자체 PasswordEncoder 포트만 사용하고, Spring Security PasswordEncoder는 인프라 어댑터에서 위임하는 것이 좋다.고 제안했습니다. 토비님은 어느 쪽이 더 적절하다고 보시는지, 판단 기준도 함께 듣고 싶습니다.
-
해결됨카카오,구글 SNS 로그인(springboot3, vue3)
카카오 클라이언트 시크릿
안녕하세요 강사님,다름이 아니라 강의 들으면서 카카오 oauth 설정 및 테스트 중인데카카오 REST API 키에도 클라이언트 시크릿이 생긴 것 같습니다.구글처럼 yaml에 kakao.client.secret 키 넣어주고 요청 바디에 같이 보내니까 그제서야 액세스 토큰 및 프로필 정보 응답이 왔습니다.강의 촬영 당시와 현재의 카카오 developers UI 및 메뉴 구성이 많이 바뀌어서 제가 모종의 설정을 놓친건지, 아니면 새롭게 카카오 클라이언트 시크릿이 추가되어서 이제는 구글처럼 시크릿 키를 요청 바디에 넣고 보내는 게 맞는 방법이 된 건지 말씀 여쭤보고자 질문 드립니다.양질의 강의 항상 감사드립니다.
-
해결됨제미니의 개발실무 - 커머스 백엔드 레거시와 AI 활용편
소스코드 보안
안녕하세요 재미니님 유튜브로 접하게 되어 인프런 강의까지 듣게된 백엔드 개발자(5년) 입니다.현재 팀의 레거시 시스템을 고도화하는 레거시 시스템을 개편하는데 주력하고 있는 업무를 맡고 있습니다. 저희 회사는 규모가 적지 않고, 팀내에서 담당하는 시스템도 많은데 제 기준으로는 꽤나 보수적인 조직이라 ai 활용하는데 제약이 많은 편이라고 생각합니다. 금융권처럼 로컬 PC에서 외부망을 아예 차단하고 있지는 않지만, chat gpt, gemini 등 각종 llm을 제공하는 웹사이트는 차단이 되어있고 사내 자체 llm 만 사용할수 있는 환경입니다. 운이 좋게도(??) junie 는 아직 차단되어 있지 않아 많이 활용하고 있는데, 신규 구축이 아닌 기존 레거시 시스템을 분석하여 컨버전을 하는 과정에서 사용하기에 보안적으로 이슈가 될 부분이 있을까 싶어서 걱정이 많이 되는데, ai를 활용하면 생산성이 넘사벽으로 높아지는 환경에서 보수적으로는 보안 이슈를 걱정하는 팀원들이 있을경우, 재미니님은 어떤식으로 팀원들을 설득하실지, 보안 이슈가 없도록 방안은 어떻게 마련하고 계신지 궁금합니다.추가로 극단적인 예시긴 하지만, 비지니스 로직이 프로시저에 녹아져 있는경우, db 에 의존적으로 운영되고 있는 시스템(ex. 트리거, 서버 크론잡 스케줄링 등) 의 경우 ai를 활용하여 레거시를 최대한 개선하고 싶다면 어떤 전략을 활용할 수 있을지도 의견 주시면 감사하겠습니다.소중한 강의 제공해주셔서 감사합니다.
-
미해결RabbitMQ를 이용한 비동기 아키텍처 한방에 해결하기
step 4 - fanout 관련 질문
안녕하세요, step 4에 fanout 브로드캐스팅으로 구현한 이유가 궁금해서 질문드립니다.다른 질문을 찾아보니 아래와 같이 답변을 주셨습니다."정리하면 Fanout은 모든 큐에 메시지를 브로드캐스트하지만 WebSocket을 이용해 특정 뉴스 타입만 선택적으로 구독할 수 있습니다. (서로 독립적으로 동작합니다)따라서 Pub/Sub의 성격을 이용해서 브로드 캐스트를 하는 것은 Direct나 Topic 보다 Fanout이 적합하고, 전체 브로드캐스트가 필요하지 않은 Pub/Sub의 일부 제한이 필요한 경우는 WebSocket과 STOMP를 통해서 필터링.. 여기서 저는 왜 step4에서 Pub/Sub의 성격을 이용해서 브로드캐스팅하는지 이해가 안됩니다.어차피 WebSocket에서 필터링할 것이라면 왜 비효율적으로 브로드캐스팅하는건가요?fanout보다 topic Exchange가 적합하지 않나요?어차피 브로드캐스팅하고 모든 큐에 넣을 것이라면, javaQueue, vueQueue, springQueue로 구분할 필요가 있나요? pub/sub 모델은 아니지만, 하나의 newQueue로 관리하고 simpMessagingTemplate의 destination을 구분하는 것은 어떤가요?
-
미해결[2탄-JPA] 옆집 개발자와 같이 진짜 이해하며 만들어보는 첫 Spring Boot 프로젝트
터미널에서 sql작성은 도커라서 그런거죠? 도커 안쓰는데..ㅜ
도커안하고 일반적으로 mysql이나 데이터베이스에서 사용하는거 올려주실순없나여ㅜㅜ이미다 찍으셨겠지만..
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
Unused property.....
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)네2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)네3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)네[질문 내용]여기에 질문 내용을 남겨주세요왜 자꾸 Unused property 가 뜰까요?.... Gradle 업로드 해도 계속이러네요ㅠㅠ 제미나이와 몇시간을 여러방법을 썼는데 실패해서 처음 질문드려요.....
-
해결됨스프링부트로 직접 만들면서 배우는 대규모 시스템 설계 - 게시판
정렬, 필터, 검색 등의 조건이 붙을 경우 최적화할 수 있는 방법이 무엇이 있을까요?
안녕하세요.게시판 관련 강의를 듣는 도중 궁금한 점이 있어 질문을 남깁니다.강의에서는 Snowflake 기반 단순 정렬을 기준으로 커버링 인덱스를 설명해주셨는데요,실무에서는 여러 정렬 조건과 필터, 검색 조건이 함께 붙는 경우가 많습니다.✅ 이런 복합적인 조회 패턴에서도 커버링 인덱스를 중심으로 설계하는 것이 적절한지,아니면 다른 전략을 어떻게 사용해야 하는지 궁금합니다.(설명이 길어질 경우 간단한 힌트라도 부탁드립니다.)💥 걱정하는 부분정렬되는 컬럼 전부에 대해 인덱스를 걸면 더 문제가 발생할 것 같아요.검색 %검색어%의 경우에는 결국엔 full_scan이어서 성능 최적화가 불가능하다.
-
해결됨제미니의 개발실무 - 커머스 백엔드 레거시와 AI 활용편
AI 사용 방법에 대하여...
강의 잘 듣고 있는데요.같은 프로젝트에 대해 다수의 팀원이 개발한다고 가정 할 때현재의 AI를 사용하는 방식이 어디까지 유효할 지 재미니님의 생각이 궁금하여 의견 여쭙습니다.예를 들어 저는 AI를 적극 사용하고 싶을 때, 하지만 팀의 문화가 AI를 위와 같이 그닥 사용하지 않을 때, 강의 속에서 AI를 활용하는 방안을 어디까지 얘기하는게 좋을 지 등이 궁금합니다.제가 느낄 때, 위 강의 과정에서는 md 파일을 꾸준히 업데이트 하며, 히스토리를 쌓아가는 것 같아 의견을 여쭤봅니다.
-
미해결스프링 시큐리티 완전 정복 [6.x 개정판]
단원별 소스코드
안녕하세요.이제 강의를 조금씩 들어보려고 하는데 강의 pdf는 있는데 소스코드는 따로 못본거 같은데 어디서 확인할 수 있을까요? https://github.com/onjsdnjs/spring-security-master/tree/master이거인거 같은데 단원하고 코드하고 연결이 안되어있어서 각 강의 단원별 뭘 봐야되는지 알수가 없어서 너무 많은 시간이 낭비되는거 같습니다.... 체계화가 안되어있어서 시작하기 전 부터 좀 실망스럽고 당황스럽습니다. 맵핑 (단원 - 깃 브랜치) 되어있는 자료가 있으면 좋겠습니다. 감사합니다.
-
해결됨RabbitMQ를 이용한 비동기 아키텍처 한방에 해결하기
dlx dlq 설정 관련
안녕하세요.설정 시 String 으로 작성 된게 눈에 걸려서 확인해봤는데, Spring AMQP 2.X 에서는 다른 방법이 있어서 내용 공유 드립니다...다른 수강생분들도 참고용으로 q&a로 남겼습니다..감사합니다...@Bean public Queue orderQueue() { return QueueBuilder.durable(ORDER_COMPLETED_QUEUE) .deadLetterExchange(DLX) // Available since Spring AMQP 2.x .deadLetterRoutingKey(DLQ) // Available since Spring AMQP 2.x // .withArgument("x-dead-letter-exchange", DLX) // Spring AMQP 1.x compatible // .withArgument("x-dead-letter-routing-key", DLQ) // Spring AMQP 1.x compatible .ttl(5000) .build(); }
-
해결됨알면 칼퇴하는 Spring Boot 백엔드 바이브 코딩 맛보기
클로드 대답 설정 관련 질문
안녕하세요 분명 강사님 클로드는 굉장히 친절하게 현 상황도 보고를 하고 다 만들면 어떤 기능이 있고 이런이런거에 기반해서 만들었다고 뜨는데 제건 그렇지 않네요 기존에 설정을 해두신 건지 궁금합니다.