로직 세분화 하기 예매하기 → 좌석 선택 (락 먹이기) → 결제하기 redis redis + kafka 카프카로 맨 처음에 받고 순서 보장이 되면 redis로 넘기고 락을 먹이는? redis에서 애초에 받으면 끝인건가…? 만약에 카프카로 1000명을 받았는데 10명이 겹쳐서 순서가 나열되어있는데 (순서 보장) redis로 넘어갔는데 취소하면 그 다음 사람이 받는 것 (동시성 제어) 취소하면은 redis 락 시간이 사라질때인데, 이거는 어떻게 할지 redis 유효 시간 TTL 이걸로 사라질텐데 몇분으로 할 지? 5~10분으로 kafka 동시성 제어는 되는데 락을 못먹인다? 예매하기 버튼을 클릭할 때 순서 보장 (kafka)→ 좌석 선택은 순서 보장하지 않고 먼저 누른 사용자가 선점 (redis) → 결제 ..
전체 글
웹 백엔드취준생 입니다.리뷰 Kafak 순서 전략은 어떻게 하는지? 파티션이 분산되더라도 발행한 날짜가 있을텐데, 타임 스탬프 기준으로 순서를 기준으로 하면 되지 않을까? 병렬 소비자는 컨슈머가 인스턴스가 한 대 일경우임, 일반적인 경우에는 파티션 하나에 컨슈머 하나임 병렬 소비자는 적용할 만 함, 대신에 처음에는 바로 하는 것 보다는 서버를 나누고 시작 - 나누는 이유는 서버를 분리 안하면 DB로 처리하는게 훨 빠른데 구지 kafka를 사용 할 필요가 없음 - 인스턴스를 나눠야함 - publisher server - broker server - consumer server - 그 다음 병렬 소비자 적용 - cosumer group - 그룹 단위로 하면 여러개를 붙힐수가 있다. 버저닝을 타임 스탬프로 하는게 어떤가? 실무에서도..
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..
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..
AWS Well-Architected Framework 와 Well-Architected Tool WEll-Architected 프레임워크를 사용해서 아키텍처를 모범 사례에 맞게 만들 수 있음 모범 사례의 주요 치침 우선 필요 용량을 추측하지 말고 가능한 오토스케일링 사용 프로덕션 규모에서 시스템 테스트 자동화를 사용하여 아키텍처 실험을 쉽게 만들어야함 (CloudFormation) 진화하는 아키텍처를 만들어야함, 시간에 따라 변경되기 때문 데이터로 아키텍처를 구동해라, 데이터는 매우 중요해서 옮겨가며 보관해야함 Well-Architected 프레임워크 원칙 운영 우수성 보안 안정성 성능 효율성 비용 최적화 지속 가능성 AWS Well-Architected Tool을 사용하면 정의한 원칙 6개로 검토를 ..
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 누..
CloudFormation - 소개 모든 인프라를 코드로 작성하여 배포를 할 수 있음 수동으로 리소스 만들 필요가 없다. 템플릿을 사용해서 리소스 비용을 쉽게 예측 할 수 있음 절약 전략을 세울 수도 있음 오후 5시에 삭제 오전 9시에 생성 Amazon SES 단순 이메일 서비스 완전 관리형 서비스 이메일을 전 세계로 대규모로 안전하게 보낼 수 있음 애플리케이션에서 SES API나 SMTP 서버를 사용하면 SES가 대량으로 이메일을 보냄 이메일 통계 제공 배달, 반송, 피드백 루프 결과, 이메일을 열었는지 최신 보안 기준 지원 DKIM, SPF 배포도 유연함 공용, 전용, 소유 IP에 특정 IP주소에서 이메일을 보냄 Amazon Pinpoint 확장가능한 양방향 인바운드 및 아웃바운드 마케팅 커뮤니케이션..
질문 리뷰 JPA를 사용하는데, 티켓을 보면 연관관계로 키를 받는데, 복합키를 사용해서 써야되는지 아니면 쓰지 않고 사용해도되는지? 쓰지 않았을 때는 티켓을 생성하면, 4개의 조회 쿼리가 발생하게 되는데, 100개의 티켓을 생성하면 400개의 조회쿼리가 발생하게 돼서 코드가 맞는건지? Facade -> Service -> Repository -> Entity N+1은 fetch join, entity graph 저번 기수 분들의 프로젝트를 벤치마킹을 했는데, 테이블의 수가 세 개인 분들이 있습니다. 저희 테이블이 과한건지, 여기서 더 줄일 수 있는 부분이 있는건지 궁금합니다. 프로젝트마다 다르다, 사바사 필요하면 정규화 해야한다. 양방향을 무조건 안쓰는 게 좋은건지? 양방향 맵핑을 써야하는 순간이 있지만..
Call by reference란 무엇이고 보통 어떻게 쓰이나요? Call by Reference: 메모리 주소를 넘겨서 원본의 메모리 값에 영향을 줌 Call by Value: 메모리 주소를 안넘기고 매개변수의 값만 넘겨서 원본의 메모리값에 영향을 안줌 Override 와 Overload 를 설명해주실 수 있을까요? Overload: 같은 메소드 명에 매개변수가 다른 것 Override: 같은 메소드 명에 매개변수가 같은 것, 재정의 하는 것 JPA는 언제 필요하고 언제 필요하지 않은지 설명해주실 수 있을까요? 간단한 쿼리 작성, 생산성 향상, 유지보수 용이성 JPA를 사용하는게 좋음 속도 이슈나 복잡한 쿼리를 사용 할 경우에는 필요하지 않습니다. JPA의 더티 체킹이란 무엇인가요? 영속성 컨테이너가 ..
AWS의 이벤트 처리 첫 번째 SQS와 Lambda 사용 이벤트가 SQS 대기열에 삽입 Lambda 서비스가 SQS 대기열을 polling 문제가 발생하면 해당 메시지를 다시 SQS 대기열에 입력하고 폴링을 재시도 다섯 번의 재시도 후에는 데드 레터 대기열(DLQ)로 보내도록 SQS 설정 가능 두 번째 SQS FIFO와 Lambda 사용 SQS FIFO에서 문제가 생기면 전체 대기열 처리가 차단되기때문에 DLQ를 구성해서 함수가 계속 동작하도록 가능 세 번째 SNS와 Lambda 사용 SNS에서 비동기식으로 Lambda에 전송 Lambda 함수는 처리하지 못하는 메시지가 발생시 내부적으로 재시도 총 세번까지 하고 처리 안되면 제거하거나 DLQ로 보내도록 구성이 가능 아니면 SQS 대기열로 보내서 나중에 ..