본문 바로가기

공부25

728x90
[NCP] Load Balancer 적용 사내 프로젝트에 Load Balancer 적용이 필요하여네이버 클라우드 플랫폼을 이용한 로드벨런서 적용기를 남긴다 도입 계기로드벨런서는 순간적으로 몰리는 트래픽 분산과 특정 서버가 장애가 발생 된 경우 대응하기 위해 적용하기로 하였다 구성1대의 로드벨런서2대 이상의 서버구현 1. 애플리케이션 로드 벨런서 생성각각의 로드벨런서 별로 지원하는 프로토콜이 다르니 필요 한 부분을 체크하여 진행하자 2. 각각 항목에 맞는 정보를 입력해준다VPC가 생성되어있지 않다면 생성해줘야한다 2대의 서버 세팅 당시 설정했음으로 글에서는 패스하도록 한다.서브넷 생성이 안되어있다면 생성을 진행하자나는 공인 IP가 필요함으로 공인 IP를 신청한다. 3. 서브넷 생성필요한 정보를 입력해주고 꼭 용도를 LoadBalancer용으로 변.. 2024. 8. 13.
[Swagger] 스웨거 오류 Parser error on line 2unexpected end of the stream within a flow collection 스웨거를 작성 중 아래와 같은 오류가 발생되었다Unable to render this definitionThe provided definition does not specify a valid version field.Please indicate a valid Swagger or OpenAPI version field. Supported version fields are swagger: "2.0" and those that match openapi: 3.0.n (for example, openapi: 3.0.0). 처음 이 오류를 해결하고 다시 같은 오류를 2번이나 마주했고 구글에도 특별한 자료가 안보여 기록을 한다 Controller에서 @RequestBody로 받는 DTO중 @ApiModelProper.. 2024. 6. 28.
[Mybatis] IndexOutOfBoundsException이 발생되었을때 요약 : DTO의 @NoArgsConstructor 기본 생성자를 확인해보자 프로젝트를 진행 중 IndexOutOfBoundsException이 발생되었다. nested exception is org.apache.ibatis.exceptions.PersistenceException: Error querying database. Cause: java.lang.IndexOutOfBoundsException: Index 21 out of bounds for length 21 Mapper의 쿼리도 정상적으로 출력되는것을 확인했고 Mapper의 Result Type을 확인해도 이상이 없고DTO 역시 모든 대소문자 오차없이 정확히 일치한다 Mapper SELECT ~~ .. 2024. 6. 25.
[Java] Mybatis 동시성 제어 회사에서 개발을 진행하던 중 실 사용자가 신청하는 로직을 개발하게 되었는데 문제는 사이트가 오픈되면 동시에 많은 인원이 신청을 하게되지만 신청자에는 제한이 있는 경우도 존재한다. 바로 동시성 제어가 필요하다 라는 생각을 했지만 JPA로는 동시성 제어를 해본 경험이있지만 Mybatis는 해본적이 없고 물어볼 선임이 없는 상황이라 혼자 테스트를 진행하며 기록한다. 환경 SpringBoot 2.7.1 Java 18 Junit 5 MyBatis 최초 테스트 코드 요청 횟수 : 1000번 쓰레드 수 : 100 제한 : 100 @Autowired private UserCommonMapper userCommonMapper; @Test void test() throws InterruptedException { int .. 2023. 9. 27.
[Java] 덱(Deque) 자료구조 덱(Deque)이란? Deque(Double Ended Queue)는 양쪽 끝에서 삽입과 삭제가 모두 가능한 자료구조입니다. 즉, 큐(Queue)와 스택(Stack)의 기능을 모두 갖춘 자료구조입니다. 사용법 Deque deque = new LinkedList(); // 또는 ArrayDeque(); Deque는 다음과 같은 주요한 연산들을 지원합니다: Push/Pop: 양쪽 끝에 요소를 추가하거나 제거합니다. addFirst(element): Deque의 맨 앞에 요소를 추가합니다. addLast(element): Deque의 맨 뒤에 요소를 추가합니다. removeFirst(): Deque의 맨 앞의 요소를 제거하고 반환합니다. removeLast(): Deque의 맨 뒤의 요소를 제거하고 반환합니다.. 2023. 5. 11.
[ParkNav] 코어 로직 동시성제어 테스트 코드 작성 테스트 코드 작성 테스트 방법 선택 동시성 제어 테스트를 위해 테스트 코드작성을 하려고 계획을 했고 가장 처음 만난 문제는 동시성 제어는 단위테스트로 작성해야 하는가 통합테스트로 작성해야 하는가? 에 고민에 빠졌고 동시성 제어는 멀티스레드 환경에서 테스트를 진행해야하고 단위테스트는 각 메서드나 함수 단위로 테스트를 해야하기때문에 통합 테스트로 진행하기로 했다. 테스트 흐름 아래의 순서대로 로직을 작성했고 동시성제어는 성공적으로 작동했다. 하지만 문제점이 발생했다. 객체를 생성하여 실제 DB에 저장을 한다 저장 된 객체를 모두 불러온다. 동시성 제어 테스트를 위해 동시에 서비스 로직을 호출한다 입차가 성공한 수와 입차가 실패한 수를 모두 저장한다 입차 성공수와 입차 실패수가 모두 맞는지 검증한다 1차 문제.. 2023. 4. 27.