묻고 답해요
156만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결실습으로 배우는 선착순 이벤트 시스템
쿠폰 발급 개수 제한
쿠폰을 100개까지만 발급하고 싶으면 조건이 count >= 100 return이 맞지 않을까요?
-
미해결15일간의 빅데이터 파일럿 프로젝트
자바 설치 관련 질문
안녕하세요. 개발 환경 구성에서 자바를 설치하는 부분에 궁금한 점이 있어 글을 남깁니다. 제가 이미 JDK 17이 설치되어 있는데, 혹시 다시 1.8을 설치해야 하나요? 만약 해야 한다면, 충돌하는 문제는 없을까요? 답변 부탁드립니다.감사합니다 :)
-
해결됨스프링부트로 직접 만들면서 배우는 대규모 시스템 설계 - 게시판
안녕하세요! 강의 잘 듣고 있습니다!!
게시글 구현까지 보고 질문드립니다!지식공유자님의 깊이가 느껴지는 강의인 것 같습니다.. 구현 난이도(저점-고점)에 상관없이 쭉쭉 구현해나가시는게 대단하십니다조그맣게 몇가지 질문이 있습니다강의와 관련된 질문과 그렇지 않은 질문이 섞여있는점 양해부탁드립니다..! 테스트코드@Test를 만드시고, 따로 밑에 메서드를 추가하시는건 반복호출을 위해서인게 맞을까요!? 그렇다면 JUnit의 @ParameterizedTest, @CsvSource 이거를 활용하면 좋을것같은데 사용 안하신 이유나 실무에서 요거를 잘 안쓰시는지 궁금합니다!저도 WebClient나 RestClient로 api테스트를 하긴 하는데요! 그 API Docs 만들어주는 RestDocs는 테스트객체: RestTemplate, WebTestClient, RestClient 와 테스트방법(WebMvcTest, SpringBootTest)과 상관없이 플러그인만 추가하면 api docs가 만들어지는걸까요? 지식공유자님은 현업에서 Swagger, RestDocs중에 어떤걸 쓰시는지 궁금합니다TestContainer 등의 방법은 사용하지 않으시는지!?JPA & SpringController에서 @PageableDefault()로 받는 방법은 주로 사용되지 않는 것일까요..?DTO로 반환해서 Response를 내려주시긴 하시지만 ResponseBody나 ResponseEntity 등으로 감싸서 내려주시지는 않으시는데, 이유가 있으신지요!?강의에서처럼 커버링인덱스와 무한스크롤을 구현하려면 nativeQuery를 사용하지 않고 JPA와Hibernate로 해결하는 방법(JQPL/QueryDsl/Creteria)이나 Raw Library(Spring Data JDBC/JdbcTemplate)으로 해결하는 방법은 없는걸까요? Next제가 아직 모든 강의를 다 본것은 아니지만.. 챕터를 보면 각각 다른 모듈끼리 Join을 하는 경우는 없는 것 같아보입니다..! 혹시 나중에 또 강의를 내신다면 샤드키와 DB 이중화의 fail over에 대한 실전강의, 다른 DB 스키마, 모듈을 사용하는 상황에 하나의 View에 다건의 Join이 들어갈 경우 설계 방법..이나DDD, 클린 아키텍처에 대해서도 다룰 에정이 있으신지 궁금합니다!마지막 덧붙임정말 잘 보고 있습니다!! 미취업자(취준생)에 비해서 중-고급 경력직은 그렇게 많지 않아서 강의 수요가 적기도 하고 각자 나름의 위치에서 배운 self best practice가 있어서 그들만의 생각이나 태클이 들어올 수 있을 것 같은데..이런저런 이유에도 불구하고 이런 귀한 중고급 강의를 내주셔서 정말 감사합니다!강의 끝까지 수강하고 궁금한점 생기면 종종 질문 올리겠습니다
-
미해결15일간의 빅데이터 파일럿 프로젝트
yum install python27 커맨드 에러
안녕하세요 강사님.4.탐색 파일럿 실행 2단계 - 03.휴(Hue) 구성 강좌를 실습 중인데,아래와 같이 yum install centos-release-scl 커맨드와 yum install scl-utils 커맨드는 모두 정상 수행하였으나 이후 yum install python27 커맨드에서 에러가 발생하여 질문드립니다. 에러 메세지로는 패키지가 없다고 뜨는데, 이전 커맨드에서도 mirrorlist 문제가 발생하여서 다른 질문과 답변에 남겨주신 아래 mirrorlist로 갱신을 하였습니다. centos EOS 이슈인 듯 한데.. 혹시 추가로 더 수행해야할 작업이 있을까요? $ echo "http://vault.centos.org/6.10/os/x86_64/" > /var/cache/yum/x86_64/6/base/mirrorlist.txt$ echo "http://vault.centos.org/6.10/extras/x86_64/" > /var/cache/yum/x86_64/6/extras/mirrorlist.txt$ echo "http://vault.centos.org/6.10/updates/x86_64/" > /var/cache/yum/x86_64/6/updates/mirrorlist.txt$ echo "http://vault.centos.org/6.10/sclo/x86_64/rh" > /var/cache/yum/x86_64/6/centos-sclo-rh/mirrorlist.txt$ echo "http://vault.centos.org/6.10/sclo/x86_64/sclo" > /var/cache/yum/x86_64/6/centos-sclo-sclo/mirrorlist.txt
-
해결됨스프링부트로 직접 만들면서 배우는 대규모 시스템 설계 - 게시판
실무에서 Primary Key 생성 전략 질문 있습니다.
Primary Key 생성 전략에서 많은 것들을 알기 쉽게 설명해주셔서 감사합니다 🙂 제가 개인적으로 생각하는 가장 베스트 방법 2가지만 설명 드리도록 하겠습니다. Primary Key 값을 Snowflake 알고리즘으로 해결장점인덱스 탐색에 있어서 정렬된 순서로 차례대로 저장 하다보니 범위 검색에 있어서 장점이 될 수 있다.단점Secondary Index 생성시 각각 Leaf Node 에 PK 값 (포인터) 를 가지고 있다보니 아무래도 생성된 Snowflake 알고리즘 값은 길이가 길어서 인덱스 저장용량이 증가 될 수 있다.PK 생성 전략을 Auto_Increment 로 하고 샤딩키(article_id) 값을 Snowflake 알고리즘으로 설정 해서 저장 한다. (단 client 에게는 PK 값 대신 article_id 으로 노출 한다.)장점Secondary Index 생성시 각각 Leaf Node 에 PK 값 (포인터) 값이 용량이 작아 인덱스 저장 용량 부담이 없다.인덱스 탐색에 있어서 정렬된 순서로 차례대로 저장 하다보니 범위 검색에 있어서 장점이 될 수 있다.단점client 으로 부터 요청시 샤딩키(article_id) 값으로 데이터 조회를 해야 하기 떄문에 Secondary Index -> Clustered_Index 까지 두번 인덱스 트리를 탐색 해야 하는 단점이 있다. 일단 이렇게 각각의 장단점을 설명 드렸습니다.여기서 제가 궁금한것은 실무에서 데이터베이스 테이블 설계시 이 두가지 방법 중 하나를 선택 하는데 있어서 각각 어떤 경우에 적합한지 판단 내리기가 힘든 부분이 있습니다. 각각 케이스 마다 장단점을 알고 있지만 아무래도 자세하게 수치화 된 지표 가 없어 선택하는데 있어서 어려움이 있는데요.선생님 경우는 실무에서 이 두가지 중 선택시 어떤 경우에 적절하게 판단 하시는지 노하우를 알려주시면 정말 감사 하겠습니다 🙂
-
해결됨스프링부트로 직접 만들면서 배우는 대규모 시스템 설계 - 게시판
멀티 모듈 방식 질문입니다.
안녕하세요 강의 잘 듣고 있습니다.현재 게시글 조회수 부분 보고있는데요 헷갈리는게 있습니다.멀티 모듈 방식 이라 aricle과 view 모듈이 나눠져 있는데요현재는 게시글 조회 api와 게시글 조회수 증가 api가 나뉘어져 있는거같은데요 프론트에서 게시글 조회 시 이 2개의 api를 사용하는 걸까요?게시글 조회 api에서 게시글 조회 -> redis 조회수 1 증가 이렇게 하나의 api가 아니라 실무에서도 api를 나누는 방식으로 진행하는걸까요?
-
해결됨스프링부트로 직접 만들면서 배우는 대규모 시스템 설계 - 게시판
강의자료 파워포인트 기준 361~362 페이지를 보면
이렇게 나타나고 있는데요.path > '00a0z' 아닌가요??
-
해결됨스프링부트로 직접 만들면서 배우는 대규모 시스템 설계 - 게시판
ArticleRepository의 네이티브 쿼리부분 질문드립니다...
안녕하세요~~ 강의 너무 잘 듣고 있는 1인입니다.다름이 아니라 네이티브 쿼리 작성 부분에서 에러가 나는데 이게 이곳저곳 찾아봐도 해결이 안돼서요ㅠㅠ 자꾸 아래 부분에서 에러가 납니다... 참고로 툴은 vscode로 spring extension받아서 사용중입니다... LIMIT :limit OFFSET :offset " @Query( value = "SELECT article.article_id, article.title, article.content, article.board_id, article.writer_id, " + "article.created_at, article.modified_at " + "FROM ( " + " SELECT article_id " + " FROM article " + " WHERE board_id = :boardId " + " ORDER BY article_id DESC " + " LIMIT :limit OFFSET :offset " + ") t " + "LEFT JOIN article ON t.article_id = article.article_id", nativeQuery = true ) List<Article> findAll( @Param("boardId") Long boardId, @Param("offset") Long offset, @Param("limit") Long limit );
-
해결됨스프링부트로 직접 만들면서 배우는 대규모 시스템 설계 - 게시판
Selet All 쿼리에서 반복적으로 Clustered Index 탐색 하는지 궁금 합니다.
select * from article where board_id = 1 order by article_id desc limit 30 offset 1499970; 해당 SQL 문을 실행하면 선생님이 설명 해주신 것 처럼 먼저 Secondary Index 에서 offset 0 부터 탐색이 일어나는데요.Secondary Index 에서 offset 0 조회 한 다음 Clustered Index 에서 데이터를 찾는다고 해주셨습니다. 이러한 과정을 offset 1499999 까지 반복 과정이 발생 하는데왜 Secondary Index 에서 탐색 후 Clustered Index 에 데이터를 찾는 과정이 필요한지 궁금 합니다. 그러니깐 Secondary Index 에서만 일단 1499999 번 탐색한 다음에 Clustered Index 을 통해 그 외 데이터 (select *) 을 가져오면 되는것이 아닌가요? 제가 아직 인덱스에 대한 지식이 부족해 이런 질문을 한건데요ㅠ 다시 정리해서 질문 드리자면 왜 Secondary Index 을 통해 offset 순번 1499999 까지 도착 하지 않았는데 불필요하게 Clustered Index 까지 탐색하는가 입니다!
-
해결됨스프링부트로 직접 만들면서 배우는 대규모 시스템 설계 - 게시판
게시글 CRUD API 구현 10:39에서 에러 발생
현재 ArticleApplication.java를 실행하면 다음과 같은 에러가 발생하고 있습니다.동작에는 문제가 없어서 후에 나오는 ArticleApiTest를 작성하고 실행을 해보니, 비밀번호와 아이디가 일치하지 않는다는 에러가 나오고 있습니다.하지만 저는 docker exec -it kuke-board-mysql bashmysql -u root -proot(비밀번호)로 구성되어 있으며 application.yml 또한 아래 처럼 구성되어 있습니다.server: port: 9000 spring: application: name: kuke-board-article-service datasource: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://locahost:3306/article username: root password: root jpa: database-platform: org.hibernate.dialect.MySQLDialect open-in-view: false show-sql: true hibernate: ddl-auto: none 그래서 gpt에게 물어본 결과 mysql plugin 문제일 수 있다고 해서 아래와 같이 변경까지 해봤습니다. 하지만 그럼에도 에러는 해결되지 않고 계속해서 이런 에러가 나와 질문드립니다.
-
미해결15일간의 빅데이터 파일럿 프로젝트
하둡, 주키퍼 등 설치 중 데이터베이스
이 화면이 나오지 않고 지나갑니다. 데이터베이스 따로 설정해야하나요??
-
미해결카프카 완벽 가이드 - 코어편
IntellJ에서 JDK 설정
안녕하세요! JAVA17을 설치하였는데, IntellJ에서 JDK 경로에 JAVA가 안 뜹니다...ㅠㅠ 계속 이렇게 loading중이라고만 뜨고, jdk가 설치된 경로를 넣어도 그런데... 혹시 어떻게 해야할까요? cmd java 버전도 이렇게 설치된 버전이 나오고 시스템 변수 설정에도 이렇게 설정하였습니다..!
-
미해결카프카 완벽 가이드 - 코어편
연결 에러
PM 4:18:45: Executing ':producers:com.example.kafka.SimpleProducer.main()'…> Task :producers:compileJava UP-TO-DATE> Task :producers:processResources NO-SOURCE> Task :producers:classes UP-TO-DATE> Task :producers:com.example.kafka.SimpleProducer.main()[main] INFO org.apache.kafka.clients.producer.ProducerConfig - ProducerConfig values: acks = -1 batch.size = 16384 bootstrap.servers = [192.168.56.101:9092] buffer.memory = 33554432 client.dns.lookup = use_all_dns_ips client.id = producer-1 compression.type = none connections.max.idle.ms = 540000 delivery.timeout.ms = 120000 enable.idempotence = true interceptor.classes = [] key.serializer = class org.apache.kafka.common.serialization.StringSerializer linger.ms = 0 max.block.ms = 60000 max.in.flight.requests.per.connection = 5 max.request.size = 1048576 metadata.max.age.ms = 300000 metadata.max.idle.ms = 300000 metric.reporters = [] metrics.num.samples = 2 metrics.recording.level = INFO metrics.sample.window.ms = 30000 partitioner.class = class org.apache.kafka.clients.producer.internals.DefaultPartitioner receive.buffer.bytes = 32768 reconnect.backoff.max.ms = 1000 reconnect.backoff.ms = 50 request.timeout.ms = 30000 retries = 2147483647 retry.backoff.ms = 100 sasl.client.callback.handler.class = null sasl.jaas.config = null sasl.kerberos.kinit.cmd = /usr/bin/kinit sasl.kerberos.min.time.before.relogin = 60000 sasl.kerberos.service.name = null sasl.kerberos.ticket.renew.jitter = 0.05 sasl.kerberos.ticket.renew.window.factor = 0.8 sasl.login.callback.handler.class = null sasl.login.class = null sasl.login.connect.timeout.ms = null sasl.login.read.timeout.ms = null sasl.login.refresh.buffer.seconds = 300 sasl.login.refresh.min.period.seconds = 60 sasl.login.refresh.window.factor = 0.8 sasl.login.refresh.window.jitter = 0.05 sasl.login.retry.backoff.max.ms = 10000 sasl.login.retry.backoff.ms = 100 sasl.mechanism = GSSAPI sasl.oauthbearer.clock.skew.seconds = 30 sasl.oauthbearer.expected.audience = null sasl.oauthbearer.expected.issuer = null sasl.oauthbearer.jwks.endpoint.refresh.ms = 3600000 sasl.oauthbearer.jwks.endpoint.retry.backoff.max.ms = 10000 sasl.oauthbearer.jwks.endpoint.retry.backoff.ms = 100 sasl.oauthbearer.jwks.endpoint.url = null sasl.oauthbearer.scope.claim.name = scope sasl.oauthbearer.sub.claim.name = sub sasl.oauthbearer.token.endpoint.url = null security.protocol = PLAINTEXT security.providers = null send.buffer.bytes = 131072 socket.connection.setup.timeout.max.ms = 30000 socket.connection.setup.timeout.ms = 10000 ssl.cipher.suites = null ssl.enabled.protocols = [TLSv1.2, TLSv1.3] ssl.endpoint.identification.algorithm = https ssl.engine.factory.class = null ssl.key.password = null ssl.keymanager.algorithm = SunX509 ssl.keystore.certificate.chain = null ssl.keystore.key = null ssl.keystore.location = null ssl.keystore.password = null ssl.keystore.type = JKS ssl.protocol = TLSv1.3 ssl.provider = null ssl.secure.random.implementation = null ssl.trustmanager.algorithm = PKIX ssl.truststore.certificates = null ssl.truststore.location = null ssl.truststore.password = null ssl.truststore.type = JKS transaction.timeout.ms = 60000 transactional.id = null value.serializer = class org.apache.kafka.common.serialization.StringSerializer[main] INFO org.apache.kafka.common.utils.AppInfoParser - Kafka version: 3.1.0[main] INFO org.apache.kafka.common.utils.AppInfoParser - Kafka commitId: 37edeed0777bacb3[main] INFO org.apache.kafka.common.utils.AppInfoParser - Kafka startTimeMs: 1735715926395[kafka-producer-network-thread | producer-1] INFO org.apache.kafka.clients.Metadata - [Producer clientId=producer-1] Resetting the last seen epoch of partition simple-topic-0 to 0 since the associated topicId changed from null to wPaCJ0MWQ1iZ8YrJVqk8zA[kafka-producer-network-thread | producer-1] INFO org.apache.kafka.clients.Metadata - [Producer clientId=producer-1] Cluster ID: 7AaNgISvTZmWslFvoaATIA[kafka-producer-network-thread | producer-1] WARN org.apache.kafka.clients.NetworkClient - [Producer clientId=producer-1] Error connecting to node min-VirtualBox:9092 (id: 0 rack: null)java.net.UnknownHostException: min-VirtualBox: nodename nor servname provided, or not known at java.base/java.net.Inet6AddressImpl.lookupAllHostAddr(Native Method) at java.base/java.net.InetAddress$PlatformNameService.lookupAllHostAddr(InetAddress.java:933) at java.base/java.net.InetAddress.getAddressesFromNameService(InetAddress.java:1529) at java.base/java.net.InetAddress$NameServiceAddresses.get(InetAddress.java:852) at java.base/java.net.InetAddress.getAllByName0(InetAddress.java:1519) at java.base/java.net.InetAddress.getAllByName(InetAddress.java:1377) at java.base/java.net.InetAddress.getAllByName(InetAddress.java:1305) at org.apache.kafka.clients.DefaultHostResolver.resolve(DefaultHostResolver.java:27) at org.apache.kafka.clients.ClientUtils.resolve(ClientUtils.java:110) at org.apache.kafka.clients.ClusterConnectionStates$NodeConnectionState.currentAddress(ClusterConnectionStates.java:511) at org.apache.kafka.clients.ClusterConnectionStates$NodeConnectionState.access$200(ClusterConnectionStates.java:468) at org.apache.kafka.clients.ClusterConnectionStates.currentAddress(ClusterConnectionStates.java:173) at org.apache.kafka.clients.NetworkClient.initiateConnect(NetworkClient.java:984) at org.apache.kafka.clients.NetworkClient.ready(NetworkClient.java:301) at org.apache.kafka.clients.producer.internals.Sender.sendProducerData(Sender.java:354) at org.apache.kafka.clients.producer.internals.Sender.runOnce(Sender.java:327) at org.apache.kafka.clients.producer.internals.Sender.run(Sender.java:243) at java.base/java.lang.Thread.run(Thread.java:833) 그리고 sudo vi/ etc/hosts로192.168.56.101 min hosts 세팅은 완료했습니다
-
미해결카프카 완벽 가이드 - 코어편
broker message 뜨게 하는 명령어
안녕하세요 강사님강의 잘 듣고 있습니다.혹시 Consumer Group과 Consumer Rebalancing 실습 부분에서 제일 위에 broker message 뜨게 하는 명령어가 어떤 건지 알 수 있을까요?
-
해결됨스프링부트로 직접 만들면서 배우는 대규모 시스템 설계 - 게시판
강의 자료 질문입니다.
학습 관련 질문을 최대한 상세히 남겨주세요!고민 과정도 같이 나열해주셔도 좋습니다.먼저 유사한 질문이 있었는지 검색해보세요.인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. os는 window를 사용하고 있고요 자료 다운로드 후 볼려고 하는데 제pc 문제 인지 파일 문제인지 읽지를 못하네요. 확인해주시면 감사하겠습니다.그리고 코드 참고를 하려 하는데 github 주소나 파일이 있을까요??
-
해결됨대용랑 채팅 TPS에 대한 stateful 서비스 구축하기
채팅 메세지에 관한 카프카와 DB 구성도
안녕하세요 강의 잘 들었습니다.근데 채팅방에서 메시지를 보내고 받는 부분은 카프카를 사용하지 않고 바로 db로 저장하더라구요. 근데 실제로 카프카를 사용해서 채팅 서버를 구성할때는 기본적으로 아래, FE -> BE - > kafka -> DB식으로 동작하는게 맞다고 보시나요?
-
미해결15일간의 빅데이터 파일럿 프로젝트
프론터 여부
아직 수업 듣기전인데 이 프로젝트에 프론트도 포함되어 있나요? 결과물을 화면과 연계해서 보고 싶습니다
-
미해결카프카 완벽 가이드 - 코어편
배치 상황에서 하나의 레코드만 실패 될때 어떤 방식으로 작동되는지 질문드립니다!
배치 상황을 고려해서 궁금증이 생겨 질문드립니다!B0, B1이 같은 배치로 묶여 있고 B0이 broker에서 저장이 실패되었 을때 producer에 저장 실패로 retry를 보내고 broker에서는 B0, B1 모두 저장에 실패 되나요? 아니면 B1은 저장되고 B0만 retry로 다시 send를 보낼 수 있는 기회가 생기나요?
-
미해결15일간의 빅데이터 파일럿 프로젝트
안녕하세요, 강사님
안녕하세요, 강사님강의를 들으며 꾸준히 배우고 성장하고 싶었는데, 예상치 못한 일정들로 인해 충분히 강의를 소화하지 못한 점이 아쉬움으로 남습니다.현재 수강 기간이 얼마 남지 않아, 남은 강의를 보다 충실히 학습할 수 있도록 수강 기간 연장을 요청드려봅니다..
-
미해결카프카 완벽 가이드 - 코어편
컴프런트 카프카 현재 가장 최근 버전 중 실무에서 사용하기 적합한 버전은 뭘까요?
안녕하세요 개발자님.컴프런트 카프카 최근 버전들 중 실무에서 사용하기 좋은 버전은 뭐가 있을까요?(connect, ksql 등 호환 잘되는) ubuntu 22.04 LTS 카프카 와 주키퍼 버전이 궁금합니다. 오래전 집에서 강의 따라 해보고, 실무에 사용 해보고 싶어서 다시 처음 부터 듣고 있는데, 카프카 와 주키퍼 호환에 대해 궁금 하여 문의 드리게 되었습니다.공식 문서를 참조 하라는 인강 내용이 있었지만, 확실한 마음이 놓이지 않아 문의 드리게 되었습니다.최신 버전이면서, 실무에 사용해도 적합한 버전이 궁금합니다,