inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

172만명의 커뮤니티!! 함께 토론해봐요.

게시글 조회 최적화 전략 도입 관련, 조회수 원본 데이터와 비교하였을때 원본과 캐싱 데이터 모두 Redis에서 추출하는 데이터임에도 (별도의 key 운용 등) Redis 캐싱 과정을 원본추출 과정과 따로 간주하는 이유(데이터를 가져오는 과정만 보았을때)

해결됨

스프링부트로 직접 만들면서 배우는 대규모 시스템 설계 - 게시판

학습 관련 질문을 최대한 상세히 남겨주세요! 고민 과정도 같이 나열해주셔도 좋습니다. 먼저 유사한 질문이 있었는지 검색해보세요. 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요 선생님! 지난번에 남겨주신 답변내용을 보면서 전략도입의 배경부터 처리과정까지 복기해보았습니다. 그러다가 의문이 생긴 점이 있습니다. 1) 의문점 Request Collapsing, 캐싱중복적재를 제외하고 캐싱하여 데이터를 추출하는 과정만을 보았을때, 원본과 캐싱 데이터 모두 Redis에서 추출해오는 것인데, 원본추출과 비교하였을때 과정적으로 어떠한 차이점이 추가적으로 있있기에 별도의 과정으로 간주하는 것일까? 즉, "캐싱하여 가지고 오는 과정"과 "원본 데이터 추출"을 따로 보고 계셨기에, 어떠한 차이점이 있는지 의문점이 들었습니다. 2) 의문점이 생긴 이유 단순하게 간략히 말씀드리자면, 조회수 원본데이터는 Redis에서 가져오는 조회수이고, 캐싱해서 가져오는 것 역시 Redis에서 가져오는 조회수로 보여집니다. 원본데이터가 MySQL과 같은 디스크 조회 비용이 큰 저장소에 들어있는 것이 아니라, 동일한 In Memory database인 Redis에서 가져오는 것이기에 성능/비용적으로 캐싱 데이터를 가지고 오는 것에 큰 이점을 느끼지 못하였습니다. 세부적으로 살펴보았을때, ViewClient에서 원본 데이터를 가지고 오는 경우 아래 로직을 통해 Redis에서 추출합니다. articleViewCountRepository.read(articleId); 이떄 key는 view::article::#articleId::view_count 입니다. ViewClient에서 Aspect를 처리하여 캐싱 데이터를 가지고 오는 경우 Redis에서 추출합니다. 이때 key는 articleViewCount::#articleId입니다. 이 과정에 대해 캐싱을 하는 목적을 생각해보았을때(=원본데이터 추출에 시간이 오래 걸릴 경우 성능이 빠른 다른 데이터저장소를 운용하여 이곳에서 데이터를 추출해오기 위함), 동일하게 Redis에서 추출하는 데이터임에에도 key를 별도로 운용하고, 데이터를 추출하는 과정도 다르게 가져가는(간주하는) 이유가 무엇인지 궁금하여 문의코자 합니다(물론 전체 로직을 살펴보았을때는 기존 대비 중복적재/Request Collapsing 과정을 추가하였기에 당연히 성능적인 이점이 존재하겠지만, 데이터를 가져오는 과정 그 자체만을 보았을때는 의문점이 들었습니다). 이게 데이터를 추출하는 과정이 다르기에, 동일한 key로 운용하면 실무적으로 로직이나 key관리방안이 복잡해져서 관리의 효율화를 위해 나누는 것일까요(즉, 기존과 달리 분산락도 사용하고 중복적재를 방지하기 위해 이용하므로 목적 자체가 다르기에 key 포맷 및 캐싱을 별도로 운용하는 것으로 이해하는 것이 적절한지)? 제가 캐싱의 목적 부터 잘못 이해하고 있는 것일 수 있고, 실무적으로 비용/성능적 유리하다는 의미가 무엇인지 잘못 이해하고 있는 것일 수 있다고 생각하고 있습니다. 그렇기에 챗지피티에게 물어보기보다는 실무적으로 경험이 풍부하시고 그만큼 검증된 선생님의 판단이 더 정확하고 궁금하여 질문드리게 되었습니다. 바쁘신데도 항상 성심성의껏 답변해주시는 선생님께 감사의 말씀 드립니다. 이효균 드림.

  • java
  • mysql
  • spring-boot
  • kafka
  • redis
Hyo Kyun Lee 댓글 2 좋아요 0 조회수 98

윈도우 gradlew.bat 에러

미해결

스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. 프로젝트 지웠다가 처음부터 다시 해보기도 하고 질문글 따라 보면서 해봐도 에러가 떠서 어떻게 해야할지 모르겠어요.. .

  • java
  • spring
  • mvc
  • spring-boot
지훈 댓글 1 좋아요 0 조회수 210

puts 함수 자동개행 관련

해결됨

(2026 최신!) 일주일만에 합격하는 정보처리기사 실기

배열과 문자열 챕터로 12:23에 서 2.puts 함수로 출력(자동 개행) puts("2. "); puts(st); 위 코드가 확인되는데, 2. 하고 뒤에 공백 1칸 있는 이유와 puts(str)인데 puts라는 함수가 \n 없어서 자동개행된다는 의미일까요?

  • python
  • java
  • c
  • 정보처리기사
dhkdxo12 댓글 2 좋아요 0 조회수 52

회원가입 기능 구현 버전 변경에 따른 코드수정(해당 사항은 업데이트 예정이 없나요?)

해결됨

따라하며 배우는 NestJS

Custom Repository 부분에서 에러가 나서 해결 하긴 하였으나 맞는 과정인지는 잘 몰라 문의드립니다. 강의에서 사용하는 @EntityRepository방식은 구버전(0.2.x) 방식으로 최신버전에서는 제거되었습니다. 강의 코드를 그대로 따라하면 ... is not a function같은 에러가 발생합니다. 그래서 user.repository.ts, auth.modules.ts 수정, auth.service.ts를 수정 1. user.repository.ts 수정 1. user.repository.ts 수정 Repository를 일반 서비스로 만들기 위한 핵심 작업입니다. 수정 내용: @EntityRepository(User) 데코레이터를 삭제하고 @Injectable()을 추가했습니다. Repository 클래스를 초기화하기 위해 constructor (생성자)를 추가하고, 그 안에서 super()를 호출했습니다. // src/auth/user.repository.ts import { Injectable } from '@nestjs/common'; import { DataSource, Repository } from 'typeorm'; import { User } from './user.entity'; // ... @Injectable() // ✅ 변경 export class UserRepository extends Repository<User> { // ✅ 생성자 추가 constructor(private dataSource: DataSource) { super(User, dataSource.createEntityManager()); } async createUser(/* ... */): Promise<void> { // ... } } 2. auth.service.ts 수정 -> providers 배열에 UserRepository를 추가했습니다. 이유: providers 배열에 등록해야만 AuthModule이 "아, UserRepository라는 서비스를 모듈로 포함시켰습니다. // src/auth/auth.module.ts import { UserRepository } from './user.repository'; // ... @Module({ imports: [TypeOrmModule.forFeature([User])], controllers: [AuthController], providers: [ AuthService, UserRepository, // ✅ UserRepository를 providers에 등록 ], }) export class AuthModule {} 3.auth.service.ts 수정 > 서비스에서 Repository를 주입받는 방식을 변경합니다. 수정 내용: @InjectRepository(User) 데코레이터를 삭제하고, 생성자에서 UserRepository를 직접 타입으로 선언하여 주입받습니다. 이유: UserRepository는 이제 마법 같은 존재가 아닌 일반 서비스이므로, 다른 서비스를 주입받을 때와 똑같이 클래스 이름만으로 간단하게 주입받을수 있습니다. // src/auth/auth.service.ts import { Injectable } from '@nestjs/common'; import { UserRepository } from './user.repository'; // 🗑️ import { InjectRepository } from '@nestjs/typeorm'; <- 삭제 @Injectable() export class AuthService { constructor( // 🗑️ @InjectRepository(User) <- 삭제 private userRepository: UserRepository, // ✅ 직접 주입 ) {} async signUp(/* ... */): Promise<void> { return this.userRepository.createUser(/* ... */); } } 일단 이런식으로 수정했는데 이 과정이 맞는지는 잘 모르겠습니다! 강사님이나 따로 혹시 올라와 있는 코드가 있다면 참고해보겠습니다!

  • postgresql
  • jwt
  • nestjs
  • typeorm
rladygks1210 댓글 1 좋아요 0 조회수 98

PostRepository 구현

미해결

프론트 개발자를 위한 백엔드 101 (NestJS, TypeORM)

상위 레이어의 정보를 알면 안되기 때문에, repository에서는 dto가 아니라 모델을 받아야 한다고 하는데, 모델의 타입이 어떻게 되는 건가요? 그리고 위의 예제에서 service의 create 메서드는 아래와 같이 dto를 인자로 넘겨주고 있는데, 그러면 dto로 타입을 맞춰야 하지 않나요? async create(createPostDto: CreatePostDto): Promise<Post> { const post = this.postRepository.create(createPostDto); return this.postRepository.save(post); } 그리고 글 수정 api 컨트롤러에서 put 메서드를 사용하신 것 같습니다. @Put(':id') update( @Param('id', ParseIntPipe) id: number, @Body(ValidationPipe) updatePostDto: UpdatePostDto, ) { return this.postService.update(id, updatePostDto); } 제가 생각했을 때는 일부분을 수정하는 케이스니까 restful 하도록 바꾼다면, patch 메서드가 적합하다고 생각이 드는데, 이해한게 맞을까요? 감사합니다.

  • nestjs
Gyuri Kim 댓글 1 좋아요 0 조회수 62

포인터 작성요령

해결됨

(2026 최신!) 일주일만에 합격하는 정보처리기사 실기

21:09 지금 까지 이해한 포인터의 방법은 주소 사용할때는 & 또는 생략, 값을 사용할때는 *로 이해하고 있습니다. 해당 printf("%s\n", arr[0][0]); 라는 구문에 질문이 있습니다. 포인터 변수로 해당 문자열의 주소를 각 맵핑하였고 배열에 맞게 출력하는걸로 해석이 되는데 이때 왜 값을 안 가져오고 주소를 가져오는지 궁금합니다. 또한 %s로 출력하고 해서 주소대신에 값으로 가져오는지 궁금합니다.

  • python
  • java
  • c
  • 정보처리기사
김형진 댓글 2 좋아요 0 조회수 51

Nest.js와 레이어드 아키텍처

미해결

프론트 개발자를 위한 백엔드 101 (NestJS, TypeORM)

nest.js에서의 레이어드 아키텍처 구조 에 궁금한 점이 생겨 질문을 남깁니다 각 계층별 실제 구현 파일을 아래와 같이 이해하면 될까요? repository 와 entity 가 정확히 어떤 계층에 속하는지 궁금합니다. Presentation Layer controller.ts Application Layer service.ts Domain Layer repository.ts entity.ts Data Transfer Object dto.ts

  • nestjs
  • typeorm
Gyuri Kim 댓글 1 좋아요 0 조회수 110

이번 시험일 까지만 강의 연장가능할까요?

해결됨

[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)

안녕하세요. 작년에 결제하고 취준으로 시간이 마땅하지 않아,,,미루고 미루다 이번 11월 29일 빅분기 실기 시험 준비하려고합니다.. 강의가 10월 31일까지인데,, 11월 28일까지 연장가능할까요? ㅜㅜㅜ 제 이메일 주소는 pibi22@naver.com 입니다.

  • python
  • 머신러닝
  • 빅데이터
  • pandas
  • 빅데이터분석기사
pibi22 댓글 2 좋아요 0 조회수 50

Java: 상속을 정리하는 문제 10개에서 유형 9번

해결됨

(2026 최신!) 일주일만에 합격하는 정보처리기사 실기

유형 9번에서 처음에 Child obj = new Child(); 의 뜻이 Child 타입의 새로운 생성자를 생성하는 것이고, 이 생성자의 자식 class로 갔는데, 생성자가 없고, 부모에도 생성자가 없어서 출력되는 값은 없는 것이고, 그 뒤의 obj.display()코드를 실행해 display의 메서드에서 부모로부터 상속받아 Parent display, Child display가 답이 되는것이 맞을까요?

  • python
  • java
  • c
  • 정보처리기사
백진수 댓글 2 좋아요 0 조회수 65

소스 코드 부탁드립니다~

해결됨

[코드캠프] 부트캠프에서 만든 고농축 백엔드 코스

안녕하세요~ 강의 듣는데, 소스코드가 필요해서, 소스코드 보내주시면 감사하겠습니다~ sunshinew@naver.com

  • javascript
  • node.js
  • docker
  • rest-api
  • nestjs
김주원 댓글 2 좋아요 0 조회수 125

서비스 단위 테스트 코드 작성

미해결

토비의 클린 스프링 - 도메인 모델 패턴과 헥사고날 아키텍처 Part 1

MemberFinder 와 같은 유즈케이스 단위로 통합 테스트를 분리 해서 작성하셨는데 단위 테스트의 경우에는 분리를 어떻게 하시나요? MemberService (Query, Modify) 가 없이는 코드가 작성이 되질 않아서 질문 드립니다.

  • java
  • spring
  • spring-boot
  • jpa
  • 리팩터링
  • ddd
생물무 댓글 2 좋아요 0 조회수 117

8강 강의영상 나오지 않습니다.

미해결

Cursor AI로 만드는 생산성 2배 Java Spring 개발

8강 강의영상 나오지 않습니다.

  • java
  • spring
  • 업무-생산성
  • 인공지능(ai)
포비는귀여워(Money_Tree) 댓글 2 좋아요 1 조회수 84

domain 모듈에 entity를 정의한다고 했을때

미해결

토비의 클린 스프링 - 도메인 모델 패턴과 헥사고날 아키텍처 Part 1

안녕하세요. 궁금한게 있어서 질문 드립니다. domain 패키지에 entity를 위치 한다고 했을때 주석이라고 말씀하신 어노테이션 JPA @Entity를 만들어서 Member로 정의 그리고 mongo DB도 필요해서 @Document를 정의해서 domain 패키지에 위치 시켜 Member로 정의 이처럼 같은 도메인이 서로 다른 DB로 사용 될때 어떻게 도메인으로 정의해야할지 궁금합니다. 그리고 이름이 중복되는 현상도 발생하기도 합니다. 그렇다고 OracleMember, MongoMember로 지을수도 없는것같습니다. 제 생각은 Member라는 도메인이 Domain 패지키에 별도로 나와서 adapter 안에 JPA Persistent의@Entity로 정의된 클래스와 Mongo Persistent의 @Document로 정의된 클래스가 위치 되어야한다고 생각하는데 어떤 의견이신지 궁금합니다.

  • java
  • spring
  • spring-boot
  • jpa
  • 리팩터링
  • ddd
test test 댓글 2 좋아요 0 조회수 117

Replit을 사용해보려고 하는데 영상처럼 진행이 안되네요

미해결

실리콘밸리 엔지니어가 가르치는 파이썬 기초부터 고급까지

챗gpt처럼 프롬프트로 소스만들기만 되고 프로젝트 생성은 보이지않는데 월 결제를 해야 진행 가능한건가요??

  • python
  • 알고리즘
admin 댓글 3 좋아요 3 조회수 547

수업 자료

해결됨

(2026 최신!) 일주일만에 합격하는 정보처리기사 실기

안녕하세요! 영상강의 없이 글로 수업 자료만 기재돼있는건 따로 pdf파일이 없는건가요? 23강 24강 25강같이 수업 자료 라고만 있는 강의들이요!

  • python
  • java
  • c
  • 정보처리기사
은쪼미 댓글 2 좋아요 0 조회수 98

main.py 눌러도 안떠요

미해결

한 번에 끝내는 AI 에이전트 개발 올인원 (w. LangGraph, Google ADK, CrewAI)

혹시 파이선을 d드라이브 깔아서 그런걸까요?

  • python
spaceno1js 댓글 2 좋아요 0 조회수 116

보충강의 잘못올리신거 같아요

미해결

한 번에 끝내는 AI 에이전트 개발 올인원 (w. LangGraph, Google ADK, CrewAI)

강의 소개영상인데요?

  • python
spaceno1js 댓글 1 좋아요 0 조회수 86

12:32 반응이 없는데 왜그런거죠?

미해결

한 번에 끝내는 AI 에이전트 개발 올인원 (w. LangGraph, Google ADK, CrewAI)

완전 똑같이 했는데

  • python
spaceno1js 댓글 2 좋아요 0 조회수 68

10:40 이 부분이 저는 안떠요

미해결

한 번에 끝내는 AI 에이전트 개발 올인원 (w. LangGraph, Google ADK, CrewAI)

중요한 부분이라고 하셨는데 진도가 안나가네 요

  • python
spaceno1js 댓글 2 좋아요 0 조회수 80

인기 태그

인프런 TOP Writers

주간 인기글