항해99

· 항해99
피드백 안녕하세요 18기 여러분, 어느덧 내일이 마지막 멘토링이네요. 원래 최종 발표회 하고 그 주의 토요일이 마지막 멘토링으로 알고있었는데, 이번에는 설 때문에 조금 변경이 된 것 같습니다. 내일 멘토링해드릴 내용은, 이력서 작성 방법, 면접 보는 방법, 개발자로서 학습 방법과 좋은 회사 고르는 법 등 앞으로 개발자로 살아가는데 도움이 될만한 것들을 정리해서 알려드릴 예정입니다. 따라서, 내일 만큼은 모든 조원 분들이 멘토링을 참여해주실 수 있도록 해주시면 좋을 것 같습니다. 편안한 저녁 되세요. AWS MSK 에서 EC2 kafka로 변경 EC2에 도커 설치 하여서 MSK, Zookeeper에서 Kraft 사용으로 변경 대기 번호 뷰 단 제작
· 항해99
간단 소개 영상 제작 좀비 몰려오고 → 트래픽 몰리는 짤 → 서비스 빠르게 소개 → 로봇 촥촥촥 나오고 편안 → 로고 보여주고 방탄 콘서트 티켓팅 시작한대 (5000만 아미 몰려오는 중) - 좀비 몰려올 때 방탄이 콘서트를 연다고….? - 혼자 있는 좀비각 뒤돌아볼 때 이번에도 서버 터지는 거 아니야? - 브래드 피트 아미가 몇 명인데 대비하겠지 - 아저씨 ⭐️서버 폭발⭐️ → 좀비가 장벽에서 바로 떨어지는 장면 좀비 떨어질 때 자르고 - 낙하할 때 사이트 접속이 원활하지 않습니다 짤 나오고 극한 직업지금까지 이런 서비스는 없었다 이것은 고가용성인가? 확장성인가? 네 티켓팅 사이트 티모미입니다 아 단체요? 100만명 가능합니다. 안정적인 트래픽, 순서보장, 대기 번호? 고가용성, 분산 오토 스케일링, ..
· 항해99
스크럼 회의 Ticket test coverage 수정. 보완해야할 점 수정하기. 발표 영상 제작. 깃허브 리드미 작성. 테스트 커버리지 작성 티켓 테스트 커버리지 예매 테이블 ElasticSearch로 변경한 것 테스트 커버리지 보완해야할 점 수정하기. 회원가입 할 때 이미 있는 유저면 “유저 정보가 존재하지 않습니다.”라고 응답이 옵니다. TicketResponseDto 반환할 때, id값이 아닌 필요한 정보 담아서 전달하도록 수정 필요. 내 티켓 조회할 때 paging 처리할 것인지. - 현재 티켓 테이블은 티켓이 계속해서 쌓이는 구조. - 만약 내 티켓을 조회 했을 때, 티켓이 200-300개를 조회하게 됨. - 성능 이슈. 컨슈머에서 좌석 목록(스탠딩,VIP 등등)을 보여준 후 각 좌석 목록을 ..
· 항해99
대기열을 처리가 지연되는 이슈 원인 스케쥴러가 스레드가 1개여서 느리다고 판단 SchedulingConfigurer로 Pool Size 10개로 증가. @Async로 비동기로 스케쥴러 실행 스케줄러 로직상 문제라고 판단. 레디스에서 큐에 담겨져있는 모든 사람들을 가져와서 반복문을 실행 → O(n) 그 후에 일치 한 키가 있는 경우 Rank를 가져와서 SSE에 Send → O(n) * O(logn) 해결 여기서 1번에서 10만명이 큐에 담겨져 있으면 부하가 엄청나게 발생하게 됩니다. Rank를 바로 가져와서 SSE에 Send 할 수 있도록 개선 @Component @RequiredArgsConstructor public class ReservationScheduler { private static fina..
· 항해99
멘토링 CD가 무엇이냐면 Continous Delivery Gradle 빌드, 이미지 만들기, 이미지 배포 보통 CI/CD 나눠서 표현하지 않고 CI/CD를 묶어서 말을 한다고 합니다. CI/CD를 Github Actions으로 하고 있다고 표현하는게 맞다. MSK 같은거는 되도록 사용하지 말자, 가상화 된 리눅스 서버위에 카프카를 띄우는걸 원한다. 완전 자동화된걸 사용하지 말자, OpenSearch, Redis(ElasticCache for Redis) 포함 단위테스트 후에 서비스 로직을 수정을 해야하는데 안했다. 그라파나 TPS는 최소 단위가 1 이상이여야한다. 그라파나는 필요한 데이터만 확인하는것만 정리를 하는게 좋다. 프로듀서, 웹, 컨슈머 보안 정책이 다르기때문에 시큐리티는 따로 띄우는게 맞다...
· 항해99
Spring boot 에서 aws msk iam-auth 이슈 원인 배포할 때 spring boot에서 kafkaConfig를 bean 생성에 실패하는 오류 발생 Feb 29 17:04:29 ip-172-31-10-98 web[118840]: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'kafkaConfig': Injection of autowired dependencies failed Feb 29 17:04:29 ip-172-31-10-98 web[118840]: #011at org.springframework.beans.factory.annotation.AutowiredAnnotationB..
· 항해99
MSK 연결이 되지 않는 이슈 원인 EC2 Producer 인스턴스에, Kafka Client 설치 후, 연결 테스트 진행. kafka_2.13-3.5.1/bin/kafka-topics.sh --create --bootstrap-server b-2.tmomicluster.aoe4ts.c3.kafka.ap-northeast-2.amazonaws.com:9098 --replication-factor 3 --partitions 1 --topic MyTopic 위의 명령어를 통해 Topic을 생성했을 때 java.lang.OutOfMemoryError: 자바 힙 스페이스 오류 발생. 분석 위의 명령어는 IAM 인증 포트를 사용하는 명령어로, 명령어에는 인증을 읽고 사용하는 명령어가 없는 것으로 분석. 아래와 같..
· 항해99
SSE 연결 해제 시 AccessDeniedException 발생 이슈 원인 SSE으로 연결 후, 응답 반환 뒤에 연결이 해제 되도록 되어있음. 해제되면 권한이 없기 때문에 Spring Security에서 예외가 발생. jakarta.servlet.ServletException: Unable to handle the Spring Security Exception because the response is already committed. at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:144) ~[spring-security-web-6.2.1.jar:6.2..
· 항해99
예매 테이블 MySQL에서 ElasticSearch 변경 MySQL에서 ElasticSearch로 변경완료 불필요한 클래스들 삭제 Domain에 Reservation 폴더 구조 변경 테스트 확인 완료 [트러블슈팅] 티켓 구매 시 락 유효성 검사 좌석을 선택 한 사람이 구매를 무조건 해야한다. Redis에서 따로 해당 좌석의 키로 이메일을 저장을 한다. 그 후 구매 할 때 비교를 한다. @Transactional public void updateReservationStatusWithLocked(ElasticReservationRequestDto elasticReservationRequestDto, String email) throws InterruptedException { String uuid = ela..
· 항해99
ElasticSearch가 저장소인가? spring boot application -> elastic search app - logstash -> elastic search elasticSearch만 쓰기보다는 logstash와 kibana를 이용해 저장과 모니터링을 구축하는게 좋다. 테스트 코드 작성시, junit이 실무에서 사용하기 더 유리한지? spock많이 사용 안하는지? 테스트 코드는 junit이 디폴트라 가장 많이 쓰지만 spock을 써도 상관없고, 둘 다 섞어쓰지만 않으면 된다. 본인(멘토님)은 spock을 선호하고 많이 쓴다. redis를 컨슈머에서만 사용하는데, 멀티모듈 루트 서버인, 티모미에서 RedisConfig를 설정해서 사용하는 게 맞는지, 아니면 컨슈머 모듈에서 RedisConf..
blablax5
'항해99' 카테고리의 글 목록