묻고 답해요
161만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨비전공자도 이해할 수 있는 MSA 입문/실전 (feat. Spring Boot)
카프카에서 발행한 이벤트를 처리중에 실패한 경우 보통 어떻게 처리하는지 궁금합니다
안녕하세요 강사님 카프카에서 컨슈머가 메시지를 읽은 후 처리 과정에서 실패했을 때 재처리 전략을 어떻게 잡으면 좋은지 궁금합니다.consume 이후 비즈니스 로직 실행중에 예외가 발생하여 실패한 경우OOM 등의 이유로 서버가 비정상적으로 종료되어 실패한 경우위의 두가지 상황에서 일반적으로 어떻게 처리하는지 궁금합니다.
-
해결됨은행 서버 프로젝트 실습을 통해 배우는 코틀린 마스터 클래스
Kotlin data class 엔티티에서 copy로 수정 후 save하는 이유가 있을까요?
data class로 엔티티를 정의해서 copy로 변경 후 save하는 방식을 사용하셨는데, 일반적으로는 JPA의 더티 체킹을 이용해 변경 감지를 활용하는 경우가 많습니다.혹시 copy 방식을 사용하신 게 의도하신 설계 방향일까요?
-
해결됨스프링부트로 직접 만들면서 배우는 대규모 시스템 설계 - 게시판
게시글 정보와 게시글 조회수 동시에 필요한 API 조회 질문
현재처럼 서비스 구조가 거의 테이블 단위로 DB와 API 서비스가 분리될 때,이런 구조에서 화면에서 리스트 형태로 두 도메인 데이터를 함께 조회해야 하는 경우가 있을 것 같습니다.예를 들자면 게시글과 게시글 조회 수를 함께 보여주는 리스트 API가 필요한 상황에서,단건 조회라면 프론트에서 별도로 API를 호출해도 괜찮을 것 같은데,페이징 처리나 리스트 형태로 여러 데이터를 묶어서 조회해야 할 때,실무에서는 보통한 서비스에서 다른 서비스를 RestClient(Feign 등) 로 호출해서 데이터를 합치는 방식으로 처리하는지,아니면, 같은 도메인 서비스로 묶어버린다던지아니면 프론트엔드에서 각각의 API를 호출한 뒤 병합하는 방식으로 처리하는지궁금합니다.실제 현업에서는 이런 경우 어떤 접근 방식을 주로 사용하나요?
-
해결됨스프링부트로 직접 만들면서 배우는 대규모 시스템 설계 - 게시판
실제 실무에서도 이런식으로 쿼리를 작성하는지 궁금합니다!
학습 관련 질문을 최대한 상세히 남겨주세요!고민 과정도 같이 나열해주셔도 좋습니다.먼저 유사한 질문이 있었는지 검색해보세요.인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.안녕하세요.향로님의 추석 챌리지에서 우연히 제목을 보고 바로 구매했는데 아직 완강하지는 못했지만 정말 좋은 강의 같습니다!선배 개발자님이 개발하시는 느낌으로 보고있습니다! ㅎㅎ궁금한 점은 혹시 실무에서도 이런식으로 서브쿼리를 이용해서 대규모 데이터에 대해서 처리를 하는지가 궁금해져서 질문 남겨봅니다!
-
해결됨스프링부트로 직접 만들면서 배우는 대규모 시스템 설계 - 게시판
Path Enumeration 방식 적용 후 redis 적용 방법 관련 질문
안녕하세요 강사님.강의에서 Path Enumeration 방식을 활용해 데이터베이스 조회 성능을 최적화하는 방법을 매우 유익하게 배웠습니다.실제 대규모 서비스 환경에서 이 조회 결과를 Redis로 캐싱하려고 할 때, 캐시를 저장하는 자료구조 선택에 대해 강사님의 의견을 듣고 싶습니다.현재는 Path를 기반으로 DB에서 계층 구조를 유지하며 정렬된 댓글 목록을 조회하고 있습니다. 이 결과를 Redis에 저장하는 방법으로 아래 두 가지를 고려하고 있습니다.1. List 구조 (LRANGE)장점: DB에서 조회한 정렬 순서를 그대로 Redis에 저장할 수 있어, 조회 시 한 번에 가져올 수 있습니다.고민: CUD(특히 중간 삽입) 발생 시 전체 List를 삭제하고 DB에서 다시 조회해 재저장해야 하므로 비효율적일 수 있습니다.2. Sorted Set 구조 (ZADD)장점: 각 댓글을 멤버로 저장하고 Path 값이나 정렬 기준을 score로 부여하면, CUD 발생 시 해당 멤버만 ADD/REMOVE로 처리할 수 있어 갱신이 효율적입니다.고민: Path 기반의 정렬 값을 Redis의 score로 매핑하는 과정이 다소 복잡합니다.이처럼 캐싱 로직의 구현 복잡도(Sorted Set)와 갱신 효율성(List의 TTL 전략) 사이의 균형을 고려할 때,강사님께서는 무한 depth 댓글 구조를 캐싱할 때 어떤 Redis 자료구조가 더 적합하다고 생각하시는지 궁금합니다.감사합니다.
-
해결됨가장 쉽고 깊게 알려주는 Kafka 완벽 가이드 [ By. 비전공자 & Kakao 개발자 ]
OutBox 패턴에 대한 질문입니다.
안녕하세요 ! 강의 잘 듣고 있습니다.최근 OutBox 패턴을 사용해보려고 시도중입니다 !CDC도구를 사용하지않고 어플리케이션에서 폴링을 구현한다고 하였을 때 폴링전용 어플리케이션을 따로 두어야 하는지 궁금합니다.ex) 주문서버에서 DB에 저장 -> 폴링 서버에서 DB에 저장된 이벤트를 폴링으로 조회 후 메시지 발행이렇게 생각한 이유는 주문서버에 폴링을 구현한다면 스케일 아웃 상황에서 폴링 로직도 저절로 스케일아웃되기때문입니다.여러개의 폴링 로직이 같이 돌아가면 데이터가 꼬일 수도 있지 않을까 합니다.어플리케이션 폴링구조의 outbox 패턴 구현에 대한 정석이 있는지 궁금합니다.
-
해결됨가장 쉽고 깊게 알려주는 Kafka 완벽 가이드 [ By. 비전공자 & Kakao 개발자 ]
kafka 컨슘은 실시간 인가요?
실시간 이라면 stream하고 어떻게 차이가 나는걸까요?
-
해결됨가장 쉽고 깊게 알려주는 Kafka 완벽 가이드 [ By. 비전공자 & Kakao 개발자 ]
메세지 저장 관련 질문입니다
카프카 메시지 저장 방식에 대한 질문카프카에 대해서 잘 알지 못할때 카프카에 메시지가 저장되어 편리하다는 이야기를 들었습니다. 그래서 AWS SQS에서 카프카로 전환하면 별도의 메시지 저장소가 필요 없을 것 같았는데, 강의를 들어보니 장기 보관이 필요하면 결국 따로 저장해야 하는 것 같더라고요.질문:장기 보관이 필요한 메시지는 별도 저장소(DB, S3 등)에 저장하시나요?카프카 자체 저장만으로 충분한 경우와 별도 저장이 필요한 경우를 어떻게 구분하시나요?
-
해결됨카카오 개발자와 함께하는 워크플로우 기반의 대용량 트래픽 처리 기법 [ By. 비전공자 & Kakao 개발자 ]
전체적인 플로우에 대해 질문드립니다.
이론 부분을 제가 이해를 잘 못해서 질문드리는 것 같은데요,Kafka와 Debezium 까지의 전반적인 그림은 그려지는데temporal(acitivity나 workFlow클래스 등) 까지 합쳐졌을 때의 플로우가 잘 이해가 가지 않는데구상하신 아키텍처를 모두 합친 플로우가 궁금합니다!
-
해결됨카카오 개발자와 함께하는 워크플로우 기반의 대용량 트래픽 처리 기법 [ By. 비전공자 & Kakao 개발자 ]
Temporal에 대해서 더 알고 싶어요.
교육을 듣다보니 Temporal에 대해서 더 알고 싶은데Temporal 공식 사이트는 너무 방대하고, 사용법 위주로 설명되어 있어서, 혹시 내부 아키텍처 같은 내용을 참고할 수 있는 자료가 있을까요?
-
해결됨스프링부트로 직접 만들면서 배우는 대규모 시스템 설계 - 게시판
sharding의 기준, shard key 사용에 대해
대부분 하나의 DB만을 사용하다보니 shard key가 고려되지 않은 테이블 설계를 보고 많이 사용했는데 처음부터 shard key는 고려하면서 설계를 하는것이 좋을까요?저같은 경우처럼 shard key가 고려되지 않은 테이블에서 샤딩을 하기위해서 shard key를 추가하는 작업은 어느정도의 난이도가 있을까요?강사님이 생각하시는 데이터베이스 샤딩을 위한 기준같은게 있으신지 궁금합니다.
-
미해결장애를 허용하는 견고한 시스템 만들기
안녕하세요. 타임아웃 시간에 관하여 질문있습니다.
제가 아직 신입이다 보니 타임아웃에 대하여 어떻게 테스트하고 어떻게 결정을 하지에 관하여 터득하지 못하여서실무에서는 어떤식으로사용하나 궁금합니다감사합니다
-
미해결비전공자도 이해할 수 있는 MSA 입문/실전 (feat. Spring Boot)
Kafka 비동기방식 적용하면서 질문 있습니다!
안녕하세요.강의 잘 듣고 있습니다!강의 2개째 듣고 있는데 항상 초보자들이 이해하기 쉽게 잘 설명해주시는 것 같아요! 그리고 질문을 드리자면, 카프카 적용 전에는 다음과 같은 프로세스로 진행됐었죠. 그리고 동시에 3.활동 점수 부여에서 실패하면 1,2에 보상트랜잭션을 적용하는 saga패턴을 사용했었는데요.포인트 차감게시글 저장활동 점수 부여 근데 카프카를 적용하면서, 만약에 3. 활동 점수 부여(=consumer) 에서 에러가 발생하면 producer쪽인 board-service에서는 이를 감지할 수 없기때문에, 기존에 작성했던 SAGA 패턴이 의도한대로 동작을 안할 것 같은데... 제가 이해한게 맞을까요?카프카 이점을 도입하기위해 어쩔 수 없이 SAGA 패턴의 이점을 뒤로 미루도록 설계한 것인지가 궁금합니다! 제가 놓친부분이나 잘 못 이해한 부분이 있거든 답변 부탁드리겠습니다! 남은 연휴 잘 보내시길 바라겠습니다감사합니다 😃
-
해결됨스프링부트로 직접 만들면서 배우는 대규모 시스템 설계 - 게시판
강의 언급 기술 도입 기준
조금 애매한 질문일 수 있는데요...강의에서 언급되는 분산DB, Redis, Kafka, CQRS 등의 기술들을 도입하실때, 나름대로 고려하시는 판단 기준이 있다면 알고 싶습니다.
-
미해결장애를 허용하는 견고한 시스템 만들기
분산 시스템 인증/인가 관련 질문 ..
안녕하세요. 강의 잘 들었습니다.분산 시스템이 맞는지는 모르겠지만,, 다른 회사의 API들을 여러개 사용할때에 궁금증이 있어서 질문 드립니다.문제 상황은 아래와 같습니다.우리 쪽에서는 이미 사용자가 토큰 기반으로 인증된 상태이며,이 사용자의 요청을 대신해 외부(회사1, 회사2)의 API를 호출해야 하는 상황입니다.또한, 사용자가 버튼을 눌렀을 때 새 브라우저 창을 띄워 회사2의 웹 애플리케이션으로 이동해야 하는데,이때 로그인 과정을 생략하고 자동으로 접속(SSO) 되도록 만들고 싶습니다.질문 1⃣API 인증 전파 관련우리 서버가 회사1·2 서버로 요청을 보낼 때,상대 서버에서는 “이 요청이 실제 인증된 사용자로부터 온 것”임을 어떻게 검증하는 게 일반적인가요? 2⃣브라우저 SSO 관련새 탭을 열어 회사2 웹 서비스로 이동 시,재로그인 없이 자동으로 인증(Single Sign-On) 되게 하려면 어떤 방식이 많이 사용되나요?
-
해결됨스프링부트로 직접 만들면서 배우는 대규모 시스템 설계 - 게시판
도커 설치
윈도우 버전 이슈로 로컬에 도커를 설치 못하는 상황인데요 (예전에도 설치 이슈있어서 해결하려다가 실패) 혹시 해결 방법 알고 계실까요?해결이 어려우면 깃허브 코드스페이스에서도 실습이 가능한 내용일까요
-
미해결장애를 허용하는 견고한 시스템 만들기
안녕하세요 주문처리에 관하여 질문있습니다 ㅠ ㅁ ㅜ
안녕하세요. 주문 처리에 관련해서 질문 있습니다!!고민하다가 질문드려요 ㅠ!중복 주문을 해결하기 위해 주문 생성 API , 주문 처리 API를 나누는걸로 이해하고 있습니다.만약 쇼핑몰에서 사용자가 주문을 할때 주문 생성 API를 요청하고 결제처리 (PG사) 성공하면 주문 처리 API(재고차감 등등) 를 하는걸로 알고 있습니다.하지만 주문 생성 API에서 수량을 검증한다고 하더라도 결제를 완료하고 주문 처리를 할때 다른 사용자에 의해서 재고가 부족할수 있는 상황이 있다고 생각합니다.이럴때는 실무에서 어떻게 해결하는지가 궁금합니다!!!!비동기적으로 보상해준다고 하면 뭔가 사용자입장에서 결제까지 했는데 재고가 부족해서 주문처리가 실패하여 환불까지된다?.... 이게 좀 비효율적이라 생각해서요!!답변 부탁드립니당실무에서는 어떻게 사용하나요 ! 궁금해요ㅠㅁㅠ
-
미해결Kafka & Spark 활용한 Realtime Datalake
IDE - Pycharm / VSCode
안녕하세요 강사님! Airflow 강의에 이어 Kafka & Spark 강의도 열심히 듣고 있는 수강생입니다. 지난 Airflow 강의에서는 VSCode를 기반으로 실습을 진행했었는데, 이번 강의는 Pycharm으로 진행하시더라구요. 혹시 Pycharm 대신 VSCode를 사용하면 실습을 따라가는 데 있어서 신경써줘야 할 부분들이 좀 많을까요? 그게 아니라면 기존에 쓰던 VSCode를 기반으로 실습을 따라가고 싶어서요! 항상 좋은 강의, 그리고 친절한 답변 감사드립니다 :)
-
해결됨스프링부트로 직접 만들면서 배우는 대규모 시스템 설계 - 게시판
macOS Docker kafka 오류 관련
질문은 아니고 kafka 개발환경 세팅 시에 저랑 같은 문제 겪으신 분들 계시면 참고하시라고 공유 드립니다. macOS 15.6.1 버전(m4 Pro 칩)에서 도커로 kafka 컨테이너 띄울 때 아래와 같은 오류가 발생했어요. # A fatal error has been detected by the Java Runtime Environment: # # SIGILL (0x4) at pc=0x0000ffff9ad3fc5c, pid=1, tid=7 # # JRE version: (21.0.4+7) (build ) # Java VM: OpenJDK 64-Bit Server VM (21.0.4+7-LTS, mixed mode, sharing, tiered, compressed oops, compressed class ptrs, g1 gc, linux-aarch64) # Problematic frame: # j java.lang.System.registerNatives()V+0 java.base@21.0.4 https://issues.apache.org/jira/browse/KAFKA-19007이래저래 찾아보다가 그냥 3.9.1 버전으로 받아서 띄워봤는데 잘 됐어요. 같은 문제 겪으신 분들도 그렇게 해보시기를 권해드립니다.
-
미해결비전공자도 이해할 수 있는 MSA 입문/실전 (feat. Spring Boot)
가용성에대한 질의..
안녕하세요 선생님.미션 주신거 이행하면서 궁금해서 질문드려요.다른강의에서 가용성(Availability), 시스템 이중에 대해서 설명해주셨는데..MSA에서 가용성? 시스템 이중을 적용하면..일반 사용자가 서버 끊김을 못느끼게해야하는데..기존의 도커나 쿠버네티스를 2중으로 설정해줘야하는게 맞는지 궁금합니다.예를들어서 강의에서 섷명해주신게이트웨이,사용자서비스,게시판서비스,포인트 서비스가 있다고 할경우..게이트웨이 2개 사용자서비스2개 게시판 서비스2개 포인트 서비스 2개로 해야하는것일까요?