inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

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

댓글 최대 2depth - CUD API 구현에서 질문 있습니다.

해결됨

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

안녕하세요 선생님 좋은 강의 해주셔서 감사합니다. 댓글 create 구현에서 findParent() 함수를 구현할때, .filter(Comment::isRoot) 이런 코드가 있는데, 애초에 parentCommentId 에 root 댓글이 아닌 댓글의 ID가 존재하면 안되는 것 아닌가요 ? 존재하면 안되는 경우를 filter 로 걸러주는 것 같아서 필요한 코드인지 의문이 들어 질문 남깁니다.

  • java
  • mysql
  • spring-boot
  • kafka
  • redis
댓글 2 좋아요 1 조회수 147

Hue 500 Error 어떻게 해결할 수 있나요?

미해결

15일간의 빅데이터 파일럿 프로젝트

select car_number, avg(battery) as battery_avg from SmartCar_Status_Info where battery < 60 group by car_number; Hue에서 이 쿼리 돌리면 아래 에러가 뜹니다.. chat gpt 통해서 hue_safety_valve.ini에 대한 Hue 서비스 고급 구성 스니펫에 아래 내용도 추가했는데 해결이 안됩니다. 이것 때문에 더이상 진도를 못 나가고 있어서 도움 부탁드려요. [yarn_clusters] [[default]] log_url_template= http://server02.hadoop.com:8042/node/containerlogs/${container_id}/${user} 500 Server Error: Server Error for url: http://server02.hadoop.com:8042/node/containerlogs/admin?doAs=admin Error 500 Server Error HTTP ERROR 500 Problem accessing /node/containerlogs/admin. Reason: Server ErrorCaused by:java.lang.ArrayIndexOutOfBoundsException: 4 at org.apache.hadoop.yarn.server.nodemanager.webapp.NMWebAppFilter.containerLogPageRedirectPath(NMWebAppFilter.java:81) at org.apache.hadoop.yarn.server.nodemanager.webapp.NMWebAppFilter.doFilter(NMWebAppFilter.java:62) at com.sun.jersey.spi.container.servlet.ServletContainer.doFilter(ServletContainer.java:829) at com.google .inject.servlet.ManagedFilterPipeline.dispatch(ManagedFilterPipeline.java:119) at com.google .inject.servlet.GuiceFilter$ 1.call (GuiceFilter.java:133) at com.google .inject.servlet.GuiceFilter$ 1.call (GuiceFilter.java:130) at com.google .inject.servlet.GuiceFilter$ Context.call (GuiceFilter.java:203) at com.google .inject.servlet.GuiceFilter.doFilter(GuiceFilter.java:130) at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1767) at org.apache.hadoop.security .http.XFrameOptionsFilter.doFilter(XFrameOptionsFilter.java:57) at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1767) at org.apache.hadoop.security .authentication.server.AuthenticationFilter.doFilter(AuthenticationFilter.java:644) at org.apache.hadoop.security .authentication.server.AuthenticationFilter.doFilter(AuthenticationFilter.java:592) at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1767) at org.apache.hadoop.http.lib.StaticUserWebFilter$StaticUserFilter.doFilter(StaticUserWebFilter.java:110) at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1767) at org.apache.hadoop.http.HttpServer2$QuotingInputFilter.doFilter(HttpServer2.java:1553) at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1767) at org.apache.hadoop.http.NoCacheFilter.doFilter(NoCacheFilter.java:45) at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1767) at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:583) at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143) at org.eclipse.jetty.security .SecurityHandler.handle(SecurityHandler.java:548) at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226) at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1180) at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:513) at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185) at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1112) at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141) at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:119) at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:134) at org.eclipse.jetty.server.Server.handle(Server.java:539) at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:333) at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:251) at org.eclipse.jetty.io .AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:283) at org.eclipse.jetty.io .FillInterest.fillable(FillInterest.java:108) at org.eclipse.jetty.io .SelectChannelEndPoint$ 2.run (SelectChannelEndPoint.java:93) at org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.executeProduceConsume(ExecuteProduceConsume.java:303) at org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceConsume(ExecuteProduceConsume.java:148) at org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run (ExecuteProduceConsume.java:136) at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:671) at org.eclipse.jetty.util.thread.QueuedThreadPool$ 2.run (QueuedThreadPool.java:589) at java.lang.Thread.run (Thread.java:748) (error 500)

  • 빅데이터
  • hadoop
  • kafka
  • zookeeper
  • redis
  • flume
  • impala
  • 데이터-엔지니어링
이유진 댓글 3 좋아요 0 조회수 232

그라파나 대시보드 오타가 있는 거 같아요

해결됨

6주 완성! 백엔드 이력서 차별화 전략 4가지 - 똑같은 이력서 속에서 돋보이는 법

그대로 복붙 해봤는데 p95가 두개있어서 p50를 측정 안하고 있었슴미다 그래서 json 살펴보니 [0.95] "expr": "max by(http_method, path, query_type) (app_query_per_request{quantile=\ "0.95 \"})", "fullMetaSearch": false, "includeNullMetadata": true, "instant": false, "legendFormat" : "P95 - {{http_method}} {{path}} - {{query_type}}", [0.50] "expr": "max by(http_method, path, query_type) (app_query_per_request{quantile=\" 0.95 \"})", "hide": false, "instant": false, "legendFormat": " P50 - {{http_method}} {{path}} - {{query_type}}", 아래 0.50에 0.95의 값을 대입하고 있떠라구요 잘 작성된 건가요 오타인건가요

  • java
  • spring
  • mysql
  • redis
  • 이력서
kongminoo 댓글 2 좋아요 0 조회수 122

Entity 생성 시 access 레벨 지정해주는 이유

해결됨

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

강의를 듣다가 한가지 궁금한 부분이 있어서 질문남깁니다. Entity 객체 생성 시 NoArgConstructor 선언 시 access를 항상 AccessLevel.PROTECTED로 설정하시는데 이유가 있으실까요?

  • java
  • mysql
  • spring-boot
  • kafka
  • redis
gui1008 댓글 2 좋아요 0 조회수 119

이력서 작성 시 궁금한 점

해결됨

6주 완성! 백엔드 이력서 차별화 전략 4가지 - 똑같은 이력서 속에서 돋보이는 법

1. 현재 학습 진도 몇 챕터/몇 강을 수강 중이신가요? 3챕터 인덱스 파트 수강 중 질문 1. "기존 API 응답 시간에서 **를 개선하여 **ms까지 빨라졌다." 이런 식으로 문구를 작성하라고 하셨는데, 기존 API 시간이 너무 크면 어떻게 해야할까요? API 성능 측정을 하려면 데이터를 넣어야하니까 각 테이블마다 백만 건을 넣어놓고 테스트를 했는데, 개선 전 응답 시간이 너무 오래 걸려서 그걸 그대로 써도 될지 모르겠어요. 강의 중 index파트에서 통계 테이블을 만들어서 @scheduled로 개선하는 부분을 제 프로젝트에 적용했는데, 데이터를 넣을 때 다른 API 성능을 측정하면서 각 테이블 당 백만개, 1:N관계일 때는 1개당 10개씩으로 해서 총 천만개 넣어놓은 상태입니다. 데이터가 너무 많아서 통계 테이블 만들기 전인 상태에서 COUNT 쿼리를 할 때 JOIN하는 테이블은 3개로 각 백만개, 이백만개, 천만개 데이터가 들어가있어서 약 20-30초 가량 쿼리가 실행이 됩니다. 근데 이력서에 "23초 걸리는 통계 데이터 조회 API를 통계 테이블을 만들고 @scheduled를 활용해 5분마다 갱신하고, 갱신된 데이터를 가져오도록 개선하여 **ms로 개선되었다." 라는 문구를 쓰려니까 23초라는 수치가 "인위적으로 드라마틱한 개선을 위하여 만들어낸 수치 아닌가?" 라는 의문이 들 수 있을 것 같아서 어떻게 하면 좋을까요? 물론!! 23초가 나온 근거라고 해야할지... 그 퍼포먼스 테스트 결과는 있고, 일부러 조작하지 않고 데이터가 많아서 그렇다! 라고 설명은 할 수 있겠지만, 이력서에 들어가는 수치를 보면 위에서 얘기한 것 같은 의심이 먼저 들 것 같아서 질문 드립니다. ㅠㅠㅠㅠ

  • java
  • spring
  • mysql
  • redis
  • 이력서
정수환 댓글 2 좋아요 0 조회수 180

bootRun 실행 문제

해결됨

6주 완성! 백엔드 이력서 차별화 전략 4가지 - 똑같은 이력서 속에서 돋보이는 법

1. 현재 학습 진도 몇 챕터/몇 강을 수강 중이신가요? -> 2-4 설정 부분 듣고 있습니다! 2. 어려움을 겪는 부분 어느 부분에서 막히셨나요? -> Caused by: com.mysql.cj.exceptions.WrongArgumentException: !AuthenticationProvider.BadAuthenticationPlugin! bootRun 실행 중 계속해서 !AuthenticationProvider.BadAuthenticationPlugin! 예외가 발생하면서 실패가 뜹니다. 인터넷 검색했더니 MySQL 사용자 인증 plugin을 mysql_native_password 로 변경하는 방법이 있어서 변경해보았지만 계속해서 해결하지 못해서 문의 드립니다.

  • java
  • spring
  • mysql
  • redis
  • 이력서
포포뇨 댓글 3 좋아요 0 조회수 283

맥 환경에서 redisJson 사용하는 방법이 궁금합니다

미해결

레디스의 모든 것 (feat. Node.js)

현재 로컬에서 redis 설치해서 학습 진행 중입니다! 맥 환경에서 도커 없이 로컬에 설치된 redis에 redisJson 붙여서 사용하는 방법이 궁금합니다!

  • node.js
  • redis
드루와라잇 댓글 1 좋아요 0 조회수 155

redis insight 관련 질문입니다

미해결

레디스의 모든 것 (feat. Node.js)

redis insight 를 현업에서 모니터링 툴로 많이 사용을 하는 지 궁금합니다!

  • node.js
  • redis
드루와라잇 댓글 1 좋아요 0 조회수 182

동적쿼리를 이용한 List로 가져올 때의 캐쉬??

해결됨

6주 완성! 백엔드 이력서 차별화 전략 4가지 - 똑같은 이력서 속에서 돋보이는 법

제가 강의에서 이해한 바로는 example/1 과 같은 단일 리턴값에는 캐쉬를 적용해서 db의 부하를 줄일 수 있다고 생각했습니다. 하지만, search?title=딩코&tag=백엔드…” 와 같은 복합 검색 조건을 기반으로, 백만 건 이상의 데이터 중에서 동적 쿼리를 사용해 10개씩 페이지네이션하여 가져오고 있습니다. 이 경우에는 쿼리마다 값이 달라지니 미리 레디스에 값을 반영할 수도 없는 상황입니다. 그리고 DB에서는 10개의 값을 리턴시키는데, 이런 상황에서는 캐시를 사용할 수 없는 건가요? 반드시 인덱스를 통해서만 성능을 확보해야 하나요?

  • java
  • spring
  • mysql
  • redis
  • 이력서
kongminoo 댓글 2 좋아요 0 조회수 145

조회수 redis 장애시 fallback 관련해서 질문!

해결됨

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

강사님 안녕하세요. 조회수 데이터를 Mysql로 백업한 데이터는 redis 장애시를 대비한 걸로 이해했습니다.(장애시 일부 데이터는 유실되지만, 가용성은 챙김) 그렇다면 조회수 조회시 ArticleViewService의 count메서드에서 try-catch로 묶어서 catch문에 mysql에서 조회수를 조회하는 코드를 추가하면 되는걸까요? 혹여나 강의 내용을 놓친거라면 죄송합니닷..!

  • java
  • mysql
  • spring-boot
  • redis
  • fallback
soap 댓글 2 좋아요 0 조회수 249

환경세팅 질문있습니다.

미해결

15일간의 빅데이터 파일럿 프로젝트

java와 이클립스 대신 인텔리제이25버전과와 자바21버전 설치해도 되나요? 오라클에서 뒤져봤는데 17버전을 도저히 못찾겠어서요. 혹시 17버전 링크라도 알려주실 수 있나요? 그리고 벌쳐박스도 7..1로 설치해도 되나요? 혹시 구버전도 링크 알려주실수있나요?

  • 빅데이터
  • hadoop
  • kafka
  • zookeeper
  • redis
  • flume
  • impala
  • 데이터-엔지니어링
zzzzz 댓글 2 좋아요 0 조회수 164

프로메테우스에서 쿼리 카운터 검색이 안됨

해결됨

6주 완성! 백엔드 이력서 차별화 전략 4가지 - 똑같은 이력서 속에서 돋보이는 법

강의를 보고 제 프로젝트에도 적용할려고 그대로 따라 쳤음미다... 로컬에서는 이렇게 프로메테우스에서 검색이 됩니다. 그대로 ec2서버에서도 적용할려고 했는데 이렇게 검색이 되지 않습니다... 설정 차이라고는 로컬에서의 prometheus.yml ec2에서의 prometheus.yml(빨간줄은 무시) 프로메테우스랑 ec2서버랑 연결은 잘되는 거 같아요. executor_thread 같은 쓰레드들은 잘 가져옵니다. 하지만 제가 원하는 쿼리 집계 함수들은 로컬에서는 잘되고 ec2서버에서는 가져올 수가 없는데 뭐가 문제일까요...?

  • java
  • spring
  • mysql
  • redis
  • 이력서
kongminoo 댓글 2 좋아요 0 조회수 171

프론트엔드 코드

해결됨

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

안녕하세요 선생님 강의 정말 잘들었습니다. 제가 이 강의를 듣고 게시판을 직접 만드는 것이 목표였는데, 프론트 코드를 만드는데 어려움을 겪고 있습니다. 혹시 뼈대만이라도 프론트엔드 코드를 제공해 주실 수 있을까요 ? 무리한 부탁인 것을 알고 있지만, 간절하여 질문글로 남깁니다

  • java
  • mysql
  • spring-boot
  • kafka
  • redis
댓글 2 좋아요 0 조회수 142

comment_v2에서 unique index 를 추가하지 않고 table 생성 시 path에 unique 제약을 걸어도 효과가 같을까요?

해결됨

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

안녕하세요 쿠케님. 우선 좋은 강의 감사합니다. 다름이 아니라 댓글 무한 depth - 테이블&구현 설계에서 unique index를 작성하는 부분이 나오는데 unique index 대신 index로 구현하고 table 생성 시 path에 unique 제약을 걸어도 효과가 같을지 궁금합니다.

  • java
  • mysql
  • spring-boot
  • kafka
  • redis
홍성주 댓글 2 좋아요 0 조회수 103

hot article 로직 변경

해결됨

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

안녕하세요 선생님 ! 선생님 코드로 구현을 완료하고 제가 커스텀 해보고 있는 중에 고민이 있어 질문글 남깁니다. 추천 수가 특정 개수 이상일때 hot article이 되고, 매일 갱신하는 것이 아닌, 한번 hot article이 되면 계속해서 hot article 게시판에 게시하고 싶습니다. 이럴 때 hot article을 데이터베이스에 저장하는 것이 좋을까요 아니면 redis에 저장하는 것이 좋을까요 ? 선생님의 의견이 궁금하여 질문 남깁니다.

  • java
  • mysql
  • spring-boot
  • kafka
  • redis
댓글 2 좋아요 0 조회수 83

MSA -> 모놀리식 패턴으로 수정

해결됨

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

안녕하세요 선생님 현재 애플리케이션을 MSA에서 모놀리식으로 바꾸고 있습니다. MSA 에서는 hot-article 애플리케이션에서는 각각의 서비스들과 통신하지 않고 데이터를 저장하기 위해 ArticleCommentCountRepository, ArticleViewCountRepository, ArticleLikeCountRepository 를 따로 만든 것으로 이해했습니다 . 모놀리식에서는 이 3개의 Count Repository를 따로 만들지 않고 각각의 서비스에 있는 Count Repository 에서 가져오는 것이 더 좋을까요, 아니면 아니면 MSA hot-article 패키지에 따로 count repository를 만드는 것이 좋을까요 .. 선생님의 의견이 궁금합니다 .

  • java
  • mysql
  • spring-boot
  • kafka
  • redis
댓글 2 좋아요 0 조회수 139

RedisTemplate<String, String>

해결됨

6주 완성! 백엔드 이력서 차별화 전략 4가지 - 똑같은 이력서 속에서 돋보이는 법

RedisTemplate<String, String> 빈으로 등록하지 않고 생성자 주입으로 사용하던데 빈으로 등록하지 않아도 스프링 내에서 자동으로 빈 등록해주나요?

  • java
  • spring
  • mysql
  • redis
  • 이력서
kongminoo 댓글 2 좋아요 0 조회수 113

redis 개발 환경 수정 시 질문 입니다.

미해결

개발자라면 알아야 할 redis 기본

안녕하세요. 일반적은 DB는 운영되고 있는 것은 개발로 구성할 때 운영에 사용되는 테이블을 백업 받아 개발로 이동시켜 테이블들을 구성합니다. redis도 위와 같은 작업을 해야 되는 건가요?

  • redis
  • nosql
  • database
  • devops
TaeJoon Park 댓글 2 좋아요 0 조회수 137

노션에 오타가 있서요

해결됨

6주 완성! 백엔드 이력서 차별화 전략 4가지 - 똑같은 이력서 속에서 돋보이는 법

첫번째로딩:5 두번째로딩:5 이 맞는 거 같아요 5주차 15) 대표적인 문제 사례 1, 2 해결 방법 에 있습니다

  • java
  • spring
  • mysql
  • redis
  • 이력서
kongminoo 댓글 2 좋아요 0 조회수 120

@Async 여부의 차이가 궁금합니다.

해결됨

6주 완성! 백엔드 이력서 차별화 전략 4가지 - 똑같은 이력서 속에서 돋보이는 법

@Async @TransactionalEventListener(phase = TransactionPhase.AFTER_COMMIT) public void handleEventJoinCompleted(EventJoinCompletedEvent event) { try { kakaoTalkMessageApi.sendEventJoinMessage( event.getPhoneNumber(), event.getEventName() ); } catch (Exception e) { log.error("알림 발송 실패. eventId={}, eventName={}", event.getEventId(), event.getEventName(), e); } } 이 로직은 비동기적으로 이벤트를 처리하는 알림서비스 로직입니다. @TransactionalEventListner(Aftercommit)를 사용하면 메인 로직이 commit 된 이후에 해당 이벤트가 실행하는 걸로 알고있는데 @Asnyc를 붙히지 않았더라도 메인 로직에서 끝마치고 해당 이벤트를 실행하니깐 똑같은 결과가 나오지 않나요? 차이가 궁금합니다!

  • java
  • spring
  • mysql
  • redis
  • 이력서
kongminoo 댓글 2 좋아요 0 조회수 222

인기 태그

인프런 TOP Writers

주간 인기글