분류 전체보기
-
Message Queue(RabbitMQ)와 AMQPMQ 2022. 5. 21. 04:41
이번에 회사에서 햇수로 3년차라고(...)20년 12월에 입사하여 실제 일한 기간은 18개월이다 제품 설계부터 진행하라고 미션을 줬다. 바로 API의 비동기 처리인데, 이를 위해 Message Queue를 도입하기로 했다. 이번 포스팅에서는 그 과정의 첫 부분에 대해서 다뤄보려고 한다. Why Message Queue? 위와 같이 사용자가 어떤 상품을 구매하기 위한 시스템이 있다고 하자. (생략이 많이 된 그림이다.) 서버는 주문을 받는 시스템이고, 외부연동 API는 결제 시스템이다. 이렇게 외부연동 시스템이 있을 때 Synchronous로 구성하게 되면 대기시간이 발생하여 비즈니스 처리 시간이 증가하고, 요청이 늘어나게 되면 서버 부하가 커지게 된다. 그래서 Asynchronous로 처리하는 방향으로 ..
-
MySQL, MyBatis foreach문으로 여러건의 데이터 처리 (List)DB 2022. 4. 5. 20:01
개발을 하다보면 여러 건의 데이터를 한번에 넣어줘야 하는 경우가 있다. 이 때 아래처럼 그냥 서버에서 트랜잭션을 걸고 반복문을 돌려서 처리하는 방법으로 할 수도 있지만,@Transactionalpublic int insertSometing(List list) { for (Object obj : list) { mapper.insert(obj); }}반복을 많이 하게 될 수록 DB와 연결하는 데에 자원과 시간을 많이 쓰게 된다.또한 Transaction, Index 도 반복하는 수가 많을수록 성능이 나빠지는 원인이다. 따라서 DBMS에서는 솔루션을 제공하는데 그게 BULK INSERT 이다.INSERT INTO your_table VALUES (1,2);INSERT INTO your_table VALUES..
-
운영체제 - 프로세스Computer science 2022. 4. 4. 23:59
프로세스 상태 - 생성, 준비, 실행, 종료, 대기 프로세스 개념 - 실행중인 프로그램을 의미함 - CPU, 메모리, 입출력장치, 파일 등 실행에 필요한 자원을 한당 - 생성, 준비, 실행, 종료, 대기의 다섯 상태 중 하나로 존재함 - 스케줄링, I/O 대기 등에 따라 준비, 실행, 대기 등으로 상태가 변화되며 동작함 - 프로세스 제어블록은 프로세스를 명시해주는 다양한 내용을 포함 - 쓰레드(Thread)란 하나의 프로그램내에서 제어의 단일 순차적 흐름으로 정의되며, 하나의 쓰레드 내에서는 하나의 실행점만이 존재함 - 하나의 프로세스 내에 하나 이상의 쓰레가 존재할 수 있어 쓰레드를 생성하여 다중처리가 가능 - 스케줄링을 위해 상위, 하위, 중간 단계의 스케줄링 사용 - 새로운 프로세스 생성 ex) f..
-
운영체제 - 스케줄링 알고리즘Computer science 2022. 4. 3. 19:32
FCFS 스케줄링(First-Come First-Served) - 비선점 스케줄링 알고리즘 - 준비 큐에 도착한 순서대로 디스패치 - 장점 : 가장 간단한 알고리즘 - 단점 : 처리시간이 짧은 프로세스가 긴 프로세스를 기다리거나, 중요한 프로세스가 나중에 수행될 수 있음(비효율적) 프로세스가 도착하는 순서에 따라 평균 반환시간이 크게 변함(예측이 힘들다) SJF 스케줄링(Shortest Job First) - 비선점 스케줄링 알고리즘 - 준비 큐에서 대기중인 프로세스 중 실행시간이 가장 짧다고 예상되는 작업을 먼저 디스패치 - 장점 : 일괄처리 환경에서 구현하기 쉽다 - 단점 : 실행 예상 시간을 사용자의 추정치에 의존하여 정확한 시간을 예상할 수 없음 SRT 스케줄링(Shortest Remaining ..
-
HttpClient 연결 유지 관리삽질 2022. 4. 2. 06:38
Spring Application에서 HTTP 요청을 할 때 Framework에 내장된 RestTemplate를 사용하는 경우가 많다. 더보기 사실 RestTemplate는 Spring 5버전 부터는 WebFlux의 WebClient가 등장하면서 DERECATED 될 예정이다. 아래 노트를 보면 새로운 기능 추가는 없을 것이고 버그 수정이나 있을 듯 하다. NOTE: As of 5.0, the non-blocking, reactive org.springframework.web.reactive.client.WebClient offers a modern alternative to the RestTemplate with efficient support for both sync and async, as well..
-
Eclipse 소스 변경 반영 안될 때삽질 2022. 4. 1. 11:22
이클립스에서 xml, java 소스 등을 변경하여 저장해도 수정사항이 반영되지 않을 때가 있다. 이럴 때는 Tomcat deploy가 잘못되었거나 IDE에서 컴파일이 잘못된 경우일 수 있다. Tomcat launch configuration에서 서버, deploy path를 확인할 수 있는데, 따로 설정해주지 않았으면 {워크스페이스 주소}\.metadata\.plugins\org.eclipse.wst.server.core\tmp0 (tmp0, tmp1, tmp2 ... 식으로 인덱스로 생성된다.) 해당 path에 deploy가 제대로 되지 않았을 경우 아래와 같이 clean을 해줘야 한다. (Tomcat 인스턴스가 중지(Stopped) 상태에서 진행) Tomcat clean을 한 경우에도 수정한 소스가 ..
-
Javascript 부모, 자식 요소 찾기 및 DOM 탐색하기JavaScript 2021. 1. 1. 00:00
위와 같이 부모 요소에, 두개의 자식요소가 있다고 하자. vanilla javascript 에서 요소를 찾으려면, parent = document.querySelector('.parent'); 이런식으로 document.querySelector()으로 찾거나, document.getElementsByClassName('parent')[0]; document.getElementsByClassName()[0] 으로 가져올 수도 있다. (index값을 주지 않으면 배열 객체로 가져온다.) 자식을 찾을때도 마찬가지이다. children = document.querySelector('.parent .child1'); children = document.querySelectorAll('.parent .child1'..