Table Range Partitioning
📦 Database/SQL2023. 12. 17. 04:13Table Range Partitioning

📘 Table Range Partitioning 이번에 로그 테이블과 통계 처리 테이블의 효율적인 관리를 위해 테이블 파티셔닝을 사용하게 되어 작성합니다. 통계 테이블은 Redis에서 통계 처리 로직을 거친 데이터들이 들어오게 되는데, 데이터의 양이 많고 Insert가 많이 일어나는 테이블, 특정 주기를 기준(Range)으로 파티션 테이블의 삭제 등, 로그, 통계 데이터의 관리 방법으로 테이블 파티셔닝(Range Partitioning 방식)을 선택하게 되었습니다. 📕 파티션 테이블이란? DB 테이블의 데이터가 너무 많아서 어떤 데이터를 조회하려고 할때 시간이 너무 많이 소요될때, 여러 방법중 파티셔닝을 하는 방법을 사용할 수 있습니다. 파티션 테이블은 논리적으로 1개의 테이블이지만 물리적으로 여러개의 ..

Throughput Optimization - 처리량 최적화 & 성능 테스트 (Apache Jmeter)
📘 Backend/Concurrency2023. 12. 3. 18:17Throughput Optimization - 처리량 최적화 & 성능 테스트 (Apache Jmeter)

📘 처리량 최적화 - 개념 이번에는 성능 정의 중 2번째인 처리량에 대해 알아보겠습니다. 처리량이란 주어진 기간에 완성되는 작업의 수를 뜻합니다, 보통 처리량은 시간 단위 / 초 단위로 작업을 나눠 측정합니다. 처리량 향상을 위한 2가지 접근법 Thread Pooling 📘 어플리케이션의 처리량 개선 방법 하나의 작업을 완수하는데 T의 시간이 걸리면 이룰수 있는 최소 처리량은 1/T 가 됩니다. 작업은 하위 Task로 나눌 수 있다면 T/N의 최대 처리량을 얻을 수 있습니다. 하지만, 하위 Task로 작업을 나누더라도 T/N 보다 낮은 처리량을 얻을 확률도 높습니다. 지연 시간을 최적화 할 때와 같은 단점을 가지고 있기 떄문입니다. 📕 1. 작업을 하위작업으로 나누기 (지연 시간을 최적화 할 때와 같은 ..

Image Processing - Latency Optimization (지연시간 최적화)
📘 Backend/Concurrency2023. 12. 3. 00:03Image Processing - Latency Optimization (지연시간 최적화)

📘 Image Processing 어떤 사진에 1가지 종류의 꽃이 있고, 동일한 종의 꽃이지만 색깔은 2가지(흰색, 보라색)로 나뉘는 사진이 있습니다. 이 사진은 3036 x 4048이며 대략 1200만 픽셀로 이루어져 있고, 각 픽셀의 색깔은 ARGB로 불리는 4가지 Byte로 표현됩니다. A (Alpha) : 픽셀의 투명도 값을 나타냄 R (Red) : 빨간색 G (Green) : 초록색 B (Blue) : 파란색 RGB의 조합으로 모든 색을 표현할 수 있습니다. 모든 꽃의 색깔을 보라색으로 만들기 위해 보라색으로 칠할 곳을 식별합니다. 색상 Re-Coloring 알고리즘을 Sequantial 버전으로 구현 구현을 모듈화해서 멀티스레드 작업으로 나누기 📘 Single Threading ImagePro..

Thread Blocking (Count Down Latch)
📘 Backend/Concurrency2023. 11. 28. 09:50Thread Blocking (Count Down Latch)

📘 CountDownLatch 란? CountDownLatch는 특정 스레드가 다른 스레드에서 작업이 완료될 때까지 기다릴 수 있도록 해주는 클래스이며, 스레드간 통신이 가능하고, Main Thread와 Reactive Stream의 처리를 동기화 하기 위해 사용합니다. 예를 들어 CountDownLatch(3) 이라고 가정하면 3개의 Task를 실행 시키면서 countDown()를 호출해 Count 값을 감소시킵니다. Count가 0이 되면 차단된 스레드가 해제되고 나머지 작업을 수행합니다. 즉, CountDownLatch의 수치가 0이 될때까지 해당되는 스레드를 Block 시키면서 Latch는 Await 합니다. CountDownLatch의 장점은 Thread.join()보다 유연하며, 스레드의 참조..

Spring WebClient
📘 Backend/Spring2023. 11. 27. 22:09Spring WebClient

📘 Spring WebClient란? Spring WebClient를 계속 써왔었는데, 글로 남기는걸 자꾸 미루다가 이제서야 포스팅합니다. Spring WebClient는 RestTemplate을 대체하는 HTTP Client 입니다. 기존 Sync API를 제공하며, Non-Blocking & Async 방식을 지원해서 효율적인 통신이 가능합니다. WebClient는 Builder 방식의 인터페이스를 사용하며, 외부 API로 요청을 할 때 리액티브 타입의 전송과 수신을 합니다. (Mono, Flux) 📕 WebClient의 특징 Single Thread 방식 Non-Blocking 방식 Json, Xml의 쉬운 응답 📕 제어권 반환 : Blocking & Non-Blocking Blocking Appl..

Convert RTSP Stream to HLS (FFmpeg)
📘 Backend/Streaming2023. 11. 9. 15:01Convert RTSP Stream to HLS (FFmpeg)

📘 RTSP to HLS OS환경은 Windows 기준으로 개발 하였습니다. 브라우저에서 지원이 안되는 RTSP를 FFmpeg을 이용해 HLS로 변환하여 브라우저에서 실시간 영상을 스트리밍 합니다. 😯 Windows FFmpeg Link https://ffmpeg.org/download.html 😯 설치 후 시스템 환경변수 설정 setx PATH "%PATH%;{ffpmeg 경로}" 📘 EC2 Setting 😯 RPM 기반 FFmpeg & Java 17 설치 #!/bin/bash # FFmpeg 설치 cd /usr/local/bin mkdir ffmpeg cd ffmpeg wget https://www.johnvansickle.com/ffmpeg/old-releases/ffmpeg-4.2.1-amd64-..

2023. 10. 13. 21:43Access Control System - 전체 코드 리팩터링 & 기능 테스트 / 추가

보호되어 있는 글입니다. 내용을 보시려면 비밀번호를 해주세요.

image