study
-
Kafka Producer 커스터마이징하기 #2study/Kafka 2024. 5. 11. 06:16
다중 인터페이스를 정의하는 경우https://sillydev.tistory.com/72 Kafka Producer 커스터마이징하기 #10. Maven Dependency 정의 org.springframework.kafka spring-kafka 1. Bean 주입@Configurationpublic class KafkaProducerConfig { @Value("${spring.kafka.bootstrap-servers}") private String bootstrapServers; // Kafka Broker host (VM argument or propertiessillydev.tistory.com 이전 글을 통해 Kafka Producer Bean 을 주입하는 방법에 대해 정리했다. 그런데 전송하고..
-
Kafka Producer 커스터마이징하기 #1study/Kafka 2024. 5. 11. 04:13
0. Maven Dependency 정의 org.springframework.kafka spring-kafka 1. Bean 주입@Configurationpublic class KafkaProducerConfig { @Value("${spring.kafka.bootstrap-servers}") private String bootstrapServers; // Kafka Broker host (VM argument or properties 값을 사용) @Bean public ProducerFactory producerFactory() { Map configProps = new HashMap(); configProps.put(ProducerConfig..
-
SQLP 준비study/DB 2022. 12. 31. 16:13
SQLD 자격을 취득한지도 벌써 2년 반이 넘게 지났다(20년 6월). 당시에 공부하면서 SQLP는 무리일 거라고 생각해서 시도하지 않았는데, 현업에 계속 있으면서 SQL 튜닝에 대한 필요성도 많이 느끼게 되면서 공부를 더 하고싶어졌다. 특히 최근에 회사 제품의 로깅을 개선하라는 요건이 있었다. 문제는 많은양의 데이터에 대한 쓰기와 읽기 성능이 보장되지 않는다는 점이었다. 데이터의 양은 1시간에 최소 1.3억 ~ 최대 7.7억 row 이고 이런 테이블이 하나 더 있었다. 성능 개선을 하면서 DB 엔진을 바꿔보기도 하고, SQL 튜닝, 애플리케이션의 HA 구성 등 많은 부분을 변경하고 테스트 해봤다. 그러면서 공부도 많이 되고, 데이터 처리 성능에 대한 의존도가 상당히 크다고 느꼈다. 아무튼 SQLP도 취..
-
Message Queue(RabbitMQ) 장점 알아보기study/MQ 2022. 6. 18. 20:44
이전 포스팅에서 Message Queue를 적용할 수 있는 간단한 사례에 대해 설명했다. 이번 포스팅에서는 MQ중에서도 RabbitMQ의 장점에 대해 알아보려고 한다. 그저 선입선출(FIFO)의 자료구조인가? MQ의 적용 사례야 어느정도 알았는데, 이 메세지 큐(메세지 브로커)가 CS에서 배우는 자료구조와 별다를 것이 없다면 사용하는데에 이점이 별로 없을 것이다. 하지만 그렇지 않다. RabbitMQ는 개발자 관점에서 편리하고 강력한 기능을 제공한다. 그 내용은 아래와 같다. - 와이어 레벨 프로토콜 RabbitMQ가 AMQP(Advanced Message Queuing Protocol)을 구현했기 때문에 나타나는 장점인데, 바이트 스트림으로 데이터를 조작하므로 구현 언어에 관계없이 상호 운용이 가능하다..
-
Message Queue(RabbitMQ)와 AMQPstudy/MQ 2022. 5. 21. 04:41
이번에 회사에서 햇수로 3년차라고(...)20년 12월에 입사하여 실제 일한 기간은 18개월이다 제품 설계부터 진행하라고 미션을 줬다. 바로 API의 비동기 처리인데, 이를 위해 Message Queue를 도입하기로 했다. 이번 포스팅에서는 그 과정의 첫 부분에 대해서 다뤄보려고 한다. Why Message Queue? 위와 같이 사용자가 어떤 상품을 구매하기 위한 시스템이 있다고 하자. (생략이 많이 된 그림이다.) 서버는 주문을 받는 시스템이고, 외부연동 API는 결제 시스템이다. 이렇게 외부연동 시스템이 있을 때 Synchronous로 구성하게 되면 대기시간이 발생하여 비즈니스 처리 시간이 증가하고, 요청이 늘어나게 되면 서버 부하가 커지게 된다. 그래서 Asynchronous로 처리하는 방향으로 ..
-
MySQL, MyBatis foreach문으로 여러건의 데이터 처리 (List)study/DB 2022. 4. 5. 20:01
개발을 하다보면 여러 건의 데이터를 한번에 넣어줘야 하는 경우가 있다. 이 때 아래처럼 그냥 서버에서 트랜잭션을 걸고 반복문을 돌려서 처리하는 방법으로 할 수도 있지만, @Transactional public 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 ..
-
운영체제 - 프로세스study/Computer science 2022. 4. 4. 23:59
프로세스 상태 - 생성, 준비, 실행, 종료, 대기 프로세스 개념 - 실행중인 프로그램을 의미함 - CPU, 메모리, 입출력장치, 파일 등 실행에 필요한 자원을 한당 - 생성, 준비, 실행, 종료, 대기의 다섯 상태 중 하나로 존재함 - 스케줄링, I/O 대기 등에 따라 준비, 실행, 대기 등으로 상태가 변화되며 동작함 - 프로세스 제어블록은 프로세스를 명시해주는 다양한 내용을 포함 - 쓰레드(Thread)란 하나의 프로그램내에서 제어의 단일 순차적 흐름으로 정의되며, 하나의 쓰레드 내에서는 하나의 실행점만이 존재함 - 하나의 프로세스 내에 하나 이상의 쓰레가 존재할 수 있어 쓰레드를 생성하여 다중처리가 가능 - 스케줄링을 위해 상위, 하위, 중간 단계의 스케줄링 사용 - 새로운 프로세스 생성 ex) f..
-
운영체제 - 스케줄링 알고리즘study/Computer science 2022. 4. 3. 19:32
FCFS 스케줄링(First-Come First-Served) - 비선점 스케줄링 알고리즘 - 준비 큐에 도착한 순서대로 디스패치 - 장점 : 가장 간단한 알고리즘 - 단점 : 처리시간이 짧은 프로세스가 긴 프로세스를 기다리거나, 중요한 프로세스가 나중에 수행될 수 있음(비효율적) 프로세스가 도착하는 순서에 따라 평균 반환시간이 크게 변함(예측이 힘들다) SJF 스케줄링(Shortest Job First) - 비선점 스케줄링 알고리즘 - 준비 큐에서 대기중인 프로세스 중 실행시간이 가장 짧다고 예상되는 작업을 먼저 디스패치 - 장점 : 일괄처리 환경에서 구현하기 쉽다 - 단점 : 실행 예상 시간을 사용자의 추정치에 의존하여 정확한 시간을 예상할 수 없음 SRT 스케줄링(Shortest Remaining ..