항해99

· 항해99
리뷰 Kafak 순서 전략은 어떻게 하는지? 파티션이 분산되더라도 발행한 날짜가 있을텐데, 타임 스탬프 기준으로 순서를 기준으로 하면 되지 않을까? 병렬 소비자는 컨슈머가 인스턴스가 한 대 일경우임, 일반적인 경우에는 파티션 하나에 컨슈머 하나임 병렬 소비자는 적용할 만 함, 대신에 처음에는 바로 하는 것 보다는 서버를 나누고 시작 - 나누는 이유는 서버를 분리 안하면 DB로 처리하는게 훨 빠른데 구지 kafka를 사용 할 필요가 없음 - 인스턴스를 나눠야함 - publisher server - broker server - consumer server - 그 다음 병렬 소비자 적용 - cosumer group - 그룹 단위로 하면 여러개를 붙힐수가 있다. 버저닝을 타임 스탬프로 하는게 어떤가? 실무에서도..
· 항해99
Kafka 순서 보장 전략 라운드 로빈 또는 스프레이 해싱 키 파티션 사용자 정의 파티션 병렬 소비자 ✅ 참고 사이트 https://www.baeldung.com/kafka-message-ordering https://d2.naver.com/helloworld/7181840#그냥-파티션-늘리면-안-돼 https://github.com/confluentinc/parallel-consumer https://stackoverflow.com/questions/67224363/parallel-processing-and-maintaining-order-in-the-consumer-end-kafka-camel Pinpoint Tmomi 적용 첫 번째 docker-compose 필요없는 도커들은 제외를 했다 redis..
· 항해99
Docker에 Kafka 설치 ZooKeeper를 사용 안하고 KRaft를 사용하는 이유 주요 아키텍처 점검을 통해 배포가 단순화되고 확장성이 향상되었으며 성능이 향상 KRaft(Kafka Raft metadata) 모드에서 AMQ Streams를 실행하면 Kafka 클러스터는 ZooKeeper 대신 컨트롤러의 내부 쿼럼으로 관리됩니다. 최신버전의 Kafka 기준으로 KRaft를 사용하면은 ZooKeeper를 설치를 안해도 된다. Apache Kafka KRaft 모드 구성 KRaft 모드는 다음 값을 제공하여 활성화할 수 있습니다. - `KAFKA_CFG_PROCESS_ROLES`: Kafka KRaft 역할의 쉼표로 구분된 목록입니다. 허용되는 값: `controller,broker`, `contro..
· 항해99
MVP 통합테스트 기능 Method API 주소 통과 오류 및 개선 내용 수정내용 로그인 POST /api/v1/login ✅ 로그인 시 데이터 없어서 오류 발생 null 체크 필요 회원가입 POST /api/v1/signup ✅ 티켓 구매 POST /api/v1/tickets ✅ 티켓 환불 POST /api/v1/tickets/{ticketId}/refund ✅ 행사 검색 GET /api/v1/search?query= ✅ LIKE문으로 검색되게 수정 필요 JPA Repository에서 수정 행사 상세 조회 GET /api/v1/events/ ✅ 행사 생성 POST /api/v1/admin/events ✅ 요청 시 The given id must not be null 오류 발생 @RequestBody 누..
· 항해99
질문 리뷰 JPA를 사용하는데, 티켓을 보면 연관관계로 키를 받는데, 복합키를 사용해서 써야되는지 아니면 쓰지 않고 사용해도되는지? 쓰지 않았을 때는 티켓을 생성하면, 4개의 조회 쿼리가 발생하게 되는데, 100개의 티켓을 생성하면 400개의 조회쿼리가 발생하게 돼서 코드가 맞는건지? Facade -> Service -> Repository -> Entity N+1은 fetch join, entity graph 저번 기수 분들의 프로젝트를 벤치마킹을 했는데, 테이블의 수가 세 개인 분들이 있습니다. 저희 테이블이 과한건지, 여기서 더 줄일 수 있는 부분이 있는건지 궁금합니다. 프로젝트마다 다르다, 사바사 필요하면 정규화 해야한다. 양방향을 무조건 안쓰는 게 좋은건지? 양방향 맵핑을 써야하는 순간이 있지만..
· 항해99
Call by reference란 무엇이고 보통 어떻게 쓰이나요? Call by Reference: 메모리 주소를 넘겨서 원본의 메모리 값에 영향을 줌 Call by Value: 메모리 주소를 안넘기고 매개변수의 값만 넘겨서 원본의 메모리값에 영향을 안줌 Override 와 Overload 를 설명해주실 수 있을까요? Overload: 같은 메소드 명에 매개변수가 다른 것 Override: 같은 메소드 명에 매개변수가 같은 것, 재정의 하는 것 JPA는 언제 필요하고 언제 필요하지 않은지 설명해주실 수 있을까요? 간단한 쿼리 작성, 생산성 향상, 유지보수 용이성 JPA를 사용하는게 좋음 속도 이슈나 복잡한 쿼리를 사용 할 경우에는 필요하지 않습니다. JPA의 더티 체킹이란 무엇인가요? 영속성 컨테이너가 ..
· 항해99
스크럼 스프링 시큐리티 + JWT 트러블 슈팅 controller에서 V1 패키지 유무 트러블 슈팅 목록 토큰은 생성되지만, 보관을 해야함(쿠키,헤더,등등) 컨트롤러단에 ResponseServlet에 쿠키에 JWT 저장으로 진행 requestMatchers.permitAll();을 했지만 jwt 생성이 되지 않아 예외를 발생하는 문제. &와 && 차이 였다. & 는 앞의 조건식이 false 여도 뒤의 조건식이 true인지 false 인지 판별한다. 어차피 결과는 false인데도 말이다. && 는 앞의 조건식이 false 라면, 뒤의 조건식은 true인지 false인지 신경쓰지 않는다. 어차피 결과는 false이기 때문이다. Security 버전문제에 따른 메서드 변경필요. (SecurityConfig.C..
· 항해99
오늘 한 것 RestController 공연장, 좌석, 등급 구현 GlobalExceptionHandler 적용 GlobalExceptionHandler @RestControllerAdvice, @ControllerAdvice 오류가 나는 경우 받아옴 @ExceptionHandler 어떤 오류인지 선언 @RestControllerAdvice public class GlobalExceptionHandler { // 리소스를 못 찾을 경우 @ExceptionHandler(EntityNotFoundException.class) protected ResponseEntity handleMethodEntityNotFoundException(EntityNotFoundException ex) { return Respo..
· 항해99
DTO에서 객체 연관관계는 Id로 받는걸로 진행 네이버 코딩 컨벤션으로 진행 복수형은 List를 뒤에 붙히는 걸로 복수형으로 단어를 찾거나 확인하는 수고를 덜기 위해 List를 뒤에 붙히는게 좋다고 생각 최적의 이름길이 변수 이름의 길이가 평균적으로 10~16일 때 프로그램을 디버깅하기 위해서 들이는 노력을 최소화 할 수 있고, 변수의 평균 길이가 8~20인 프로그램은 디버깅하기가 쉽다. 모든 변수의 이름을 10~16의 길이로 작성하기 위해 애쓸 필요는 없겠지만, 길다면 그 이름이 적당한지 확인할 필요가 있다. [너무 긴 이름] numberOfPeopleOnTheUsOlympicTeam numberOfSeatsInTheStadium maximunNumberOfPointsInMordernOlympics [..
· 항해99
오늘의 목표 1000만건 데이터 저장/조회 전략 확정 NoSQL를 사용을 할 것 인지? 사용이유, 장점, 단점 구분 기술 선택 데이터베이스 기술 선택 MySQL와 PostgreSQL는 서로 다른 영역에서 성능을 발휘 Mysql 스토리지 엔진의 유연성 속도와 안정성 서버 최적화를 위한 옵션이 필요할 때 가장 사용하기 쉬운 데이터베이스 시스템 클라우드 지원 DBMS 다중 버전 동시성 제어(MVCC) 및 ACID 규정 준수가 필요하고 테이블이 손상될 위험을 감수할 수 있을 때 PostgreSQL RDBMS가 아닌 ORDBMS가 필요할 때 복잡한 읽기-쓰기 작업을 수행 가장 다양한 데이터 유형에 대한 최고의 NoSQL 지원과 지원을 원할 때 초대형 데이터베이스를 관리 최상의 다중 버전 동시성 제어(MVCC)가 ..