먼저 강의 내용이 아닌 책내용을 질문하게 되서 죄송합니다. 하지만 여기 말고 질문할 곳이 마땅치 않아 부득이하게 이곳에 적게 되었습니다. 부디 사정을 봐주시길 부탁드립니다. Real MySQL 1권의 10.2 실행 계획 확인(415pg)에서는 EXPLAIN ANALYZE 실행 시 나타나는 결과에서는 다음과 같은 규칙이 적용된다고 설명되어 있습니다. 들여쓰기가 같은 레벨에서는 상단에 위치한 라인이 먼저 실행 들여쓰기가 다른 레벨에서는 가장 안쪽에 위치한 라인이 먼저 실행 이 말대로라면 아래 그림에서의 실행순서는 F, D, E, C, B, A 가 됩니다. 하지만 책에서는 실행순서가 D, F, E, C, B, A 로 된다고 적혀있습니다. 들여쓰기가 다른 레벨에서는 가장 안쪽에 위치한 라인이 먼저 실행된다고 하여 F 가 가장 먼저 실행될 줄 알았는데 D 부터 시작된다고 적혀있어서 혼동이 왔습니다. 혹시 왜 D 부터 시작하는지 설명을 부탁드릴 수 있을까요? 감사합니다.
안녕하세요, 좋은 강의 감사합니다. 제공해 주신 코드를 분석해 보고있는데요, 구현한 헥사고날 아키텍쳐에 대한 다이어그램이나 설명이 있으면 이해하기 쉬울것 같은데 혹시 작성하신 게 있으실까요? 예를들어서, 이런 부분의 코드는 어디서 메시지를 가져오는지 intellij 로 검색해봐도 나오질 않아서요. package com.example.paymentservice2.payment.adapter.`in`.stream @Configuration @StreamAdapter class LedgerEventMessageHandler ( private val paymentCompleteUseCase: PaymentCompleteUseCase ) { @Bean fun ledger(): Function<Flux<Message<LedgerEventMessage>>, Mono<Void>> { return Function { flux -> flux.flatMap { message -> paymentCompleteUseCase.completePayment(message.payload) .then(Mono.defer { message.headers.get(KafkaHeaders.ACKNOWLEDGMENT, ReceiverOffset::class.java)!!.commit() }) }.then() } } } 그리고, adapter 내부의 in, out 폴더와 application 내부의 in, out 폴더의 차이점은 뭔가요?? P.S 수준 높은 코드라서 매우 좋습니다. 다른 강의도 이정도 수준이면 수강할 것 같습니다. 타강사님들의 강의는 쉬운것들이 많아서 경쟁력이 있으신것 같아요.
이커머스를 기반으로 가정하고 사용자의 결제가 진행되는 과정을 정리했을 때 다음과 같이 고려해볼 수 있을 것 같습니다. 단일 구매 혹은 장바구니를 통해 결제 페이지로 이동 결제 페이지에서 사용자가 필요한 데이터를 작성한 후 결제하기 버튼을 클릭 백엔드 서버는 해당 결제 요청으로부터 PSP에게 결제 진행을 요구하기 위해서 요청을 보내고 토큰과 같은 형태로 받아옴 토큰을 사용자에게 반환한 후 사용자가 결제를 진행 결제가 성공적으로 진행되었을 경우 백엔드 서버는 결제 승인 요청을 PSP로 전송 결제 승인 응답이 돌아오면 결제 완료 이커머스는 상품의 유효성 검증은 2번과 3번 모두 검증한다고 해도 재고 감소와 같은 로직 및 주문 번호를 생성하는 로직은 어느 시점에 두어야 될 지 고민이 됩니다. 재고 수량의 감소를 3번에서 진행하는 것으로 고려하고 있는데 이와 같은 경우 결제 페이지로 사용자가 결제에 필요한 데이터를 입력하고 재고가 부족하다는 입력을 받을 수 있어서 사용자 경험 측면에서 안좋을 수 있다고 생각이 되긴 합니다. 하지만 2번에서 진행할 경우 재고를 결제 페이지로 이동할 때 감소시켜야 하기 때문에 실제로 결제가 이루어지지 않을 수 있는 많은 상황이 있을 수 있기 때문에 이 또한 고려해야 되는 부분이라고 생각합니다. 어떤 시점에 재고를 감소시키는 것이 좋을지 의견을 듣고 싶습니다. 추가적인 질문으로 현재 강의에서 진행하고 있는 결제 이벤트를 DB에 반영하는 시점이 정확히 어떤 시점인지 헷갈립니다. NOT_STARTED 상태로 저장되는 시점이 결제 페이지로 이동하는 시점인지 아니면 결제 구매 버튼을 누른 시점인지 알려주시면 감사하겠습니다!
현재 주문 번호를 생성하는 방식은 결제 페이지로부터 들어오는 데이터들을 이용해서 그것을 String 형태로 변형해줌으로써 모든 요청들이 같은 형태의 String Key값을 가지게 되고 그것을 주문 번호로 사용하는 것으로 이해했습니다! 주문 번호의 경우 쿠팡이나 다른 이커머스사들을 확인해보면 숫자 혹은 거기에 문자정도로 생성되어 있고 결제 완료시 주문 번호를 확인해볼 수 있습니다. 이와 같은 방식으로 주문 번호를 생성하려면 위와 같은 방식이 아닌 별도의 로직을 통해서 주문 번호를 생성해야되며, 요청이 1번만 처리되기 위해서 Unique한 값으로 생성되어야 됩니다. 현재 제가 진행하고 있는 프로젝트에서는 결제 페이지로 사용자가 진입했을 때 주문 번호를 특정 로직을 통해 Unique한 값으로 생성해주고 DB를 확인하고 Redis에 기록하는 절차를 진행하여 멱등성을 보장하고 있습니다. 이와 같이 진행하다 보니 주문 번호를 생성하기 위해서 DB에 쿼리를 1회 이상 날리는 상황이 발생하게 되는데 이와 같이 진행하는 것은 안좋은 형태일까요?
안녕하세요. 강의를 잘 듣고 있는 수강생입니다. 강의를 듣다가 좀 다른 결일 수도 있는 궁금증이 있습니다. 범위기반 데이터 조회에 아래 예시에서 order by finished_at, id 부분에서 finished_at이 범위검색 쿼리로 들어가는데 이런 경우 뒤에 있는 id는 인덱스를 타지 않는 것으로 알고 있습니다. 그럼 id로 범위 검색하려고 하면 finished_at으로 검색된 범위 안 전체 데이터를 전부 스캔하게 되나요? select * from payments where finished_at ≥ ‘시작날짜’ and finished_at < ‘종료날짜’ and id > 8 order by finished_at, id limit 30
[코드팩토리] [초급] NestJS REST API 백엔드 완전 정복 마스터 클래스 - NestJS Core
백엔드를 이 강의로 처음 알아가고 있는데 . Horizontal Scaling 가 정확히 뭔지모르겠어요 설명해주시는 것중에서 Redis , in-memory 등 서버들이 같은정보를 바라보고서 사용자 정보를 우리가 판단 한다.. 이게 무슨말인지 아예 와닿질않아요 설명 해주실 수 있을까요
안녕하세요. 강의 잘 듣고 있습니다. R2DBC로 실습 환경을 구축해주셨는데요. R2DBC 이용하면서 DatabaseClient 를 이용해주셨는데요. 혹시 Jooq 를 이용안하신 이유가 있을까요? 그리고 실무에서도 DatabaseClient 를 이용하시는지 궁금합니다. 추가로 DatabaseClient 를 사용시에 동적 쿼리를 어떻게 작성을 해야 하는지 팁 주시면 감사하겠습니다! (where 절 고정이 아닌 특정값이 있을 경우에만 where절 생성 이라던지 ㅎ ) 감사합니다!
제목 그대로 입니다. 저는 지금 11.4.2-MariaDB-ubu2404 버전을 사용 하고 있는데요.. lateral 키워드를 인식을 못합니다. 검색 해서 알아보니 마리아디비 및 mysql 에서는 lateral 키워드를 완벽히 지원 못한다는 내용이 있던데요.. 원래 PostgreSQL 에서 지원하는 기능 이었다고 하던데요.. mysql 8 강의에서 소개를 하고 있다면 사용 가능한 것 일텐데.. 저의 데이터베이스 세팅 등이 이상한 걸까요? mysql 8 버전으로 테스트를 해봐야 할까요? lateral 설명을 보니 많은 도움이 될 것 같아 꼭 사용 하고 싶은 기능인데.. 왜 안되는지 알 수가 없네요.. 왜 그럴까요?? SELECT e.emp_id, e.emp_name, l.recent_salary, l.salary_date FROM employees e LEFT JOIN LATERAL ( SELECT salary AS recent_salary, date AS salary_date FROM salary_history sh WHERE sh.emp_id = e.emp_id ORDER BY date DESC LIMIT 1 ) AS l ON TRUE; 하면 SQL Error [1064] [42000]: (conn=9) You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '( 이런 에러가 생깁니다. LATERAL 을 인식 못하는 것 같습니다.
[코드팩토리] [초급] NestJS REST API 백엔드 완전 정복 마스터 클래스 - NestJS Core
Nest js 패키지들은 어디서 설치하고 어디서 찾아 볼 수 있나요? Express 개발시에는 npm 사이트 검색 설치 및 사용 Nest도 npm에서 가능할까요?? @nestjs/ <<< 붙은 친구들은 사용 가능한건가요?? 주로 Nest에서 개발하면서 필요한 패키지들을 찾는 루트가 있을까요??
[코드팩토리] [초급] NestJS REST API 백엔드 완전 정복 마스터 클래스 - NestJS Core
데이터 베이스를 사용하면서 궁금한점이 postgres-data폴더에 db관련 정보들이 저장되는것 같은데 entity의 변경과 같은 이유로 초기화를 해야 할때 초기화 후 기존에 저장했던 부분을 살릴 수 있는 방법이 없을까요?? (ex postgres-data폴더의 어떤 파일을 살려라 등)
[코드팩토리] [초급] NestJS REST API 백엔드 완전 정복 마스터 클래스 - NestJS Core
강사님이 알려주신 방식을 듣고 다양한 이미지 처리 방식을 공부하기 위하여 Presigned URL 방식을 구현중에 있습니다. 백엔드에 요청을 통해 발급받은 S3 url 주소에 PUT 요청으로 이미지를 업로드하고 있습니다. 이 떄, 일반적인 form-data 형식은 들어가지지 않는 것 같은데, binary 형태는 매우 잘 들어가집니다. 현업에서도 presigned-url을 활용할 떄 binary 형태로만 전달을 해야하나요, 아니면 다른 방식이 있는지 알고 싶어 식견을 구하고자, 질문드립니다!!