본문 바로가기

반응형

Spring Boot

[AWS] AWS SNS와 SQS를 사용한 이벤트 처리 구현하기 (w.Spring Boot) Spring 환경 (gradle) plugins { id("org.springframework.boot") version "2.7.2" id("io.spring.dependency-management") version "1.0.12.RELEASE" kotlin("jvm") version "1.6.21" kotlin("plugin.spring") version "1.6.21" kotlin("plugin.jpa") version "1.6.21" kotlin("kapt") version "1.6.21" } ... extra["springCloudVersion"] = "2021.0.3" ... dependencies { implementation(platform("software.amazon.awssdk:bom.. 더보기
영상 인코딩 및 최적화를 위한 FFmpeg 사용법과 Spring Boot 연동 예제 영상 인코딩 영상 데이터를 압축하고 표준화된 형식으로 변환하는 과정 인코딩을 할땐 코덱이 사용되며, 원본 영상 데이터의 크기를 줄이고 호환성을 높이는 역할을 한다. 이로 인해 네트워크 전송 시 빠르게 전송되고 저장곤간을 절약할 수 있다. 코덱 코덱은 영상 데이터를 압축하고 해석하는데 사용되는 소프트웨어이다. 압축률, 품질, 호환성 등 다양한 측면에서 차이가 있으며 H.264, H.265, VP8, VP9 등이 대표적인 예이다. 컨테이너 컨테이너는 영상, 오디오, 메타데이터 등 다양한 데이터를 하나의 파일로 묶어 호환성과 재생을 보장하는 역할 MP4, AVI, MKV, MOV 등의 포멧이 있다. 영상 인코딩 및 최적화를 하는 이유 품질 유지 - 원본 영상의 품질을 최대한 보존하면서 효율적인 포맥으로 변환이.. 더보기
[구조패턴] 퍼사드(fasade) 패턴과 slf4j 퍼사드(fasade) 패턴이란 - 여러 라이브러리, 프레임워크 또는 클래드들의 복합한 집합을 단순화시켜주는 인터페이스를 제공하는 구조의 디자인 패턴 대표적인 예로는 스프링 부트의 slf4j 가 있다. 퍼사드 패턴 적용의 장점 - 대표적으로 퍼사드 패턴이 적용된 프레임워크인 slf4j는 log4j, log4j2, logback 등 을 코드 수정 없이 적합한 프레임워크를 slf4j 만의 인터페이스를 통해 info, error 등의 로그 기능을 통합하여 단순하게 사용할 수 있게 해준다. 따라서 slf4j 를 사용하여 Spring Boot 의 로깅 시스템을 구현한다는 가정을 했을경우 log4j2를 사용도중 심각한 보안 이슈가 터졌을 경우 자바 또는 코틀린 코드 수정이 없이 설정 파일 추가만으로 logback 으.. 더보기
JMeter를 활용하여 댓글 조회 기능 성능 개선 (with Spring Boot) 상황 댓글 약 1만개 댓글 좋아요 약 1만개 유저 차단 약 1만개 대댓글 약 1만개 주요 조회 데이터 및 조건 댓글 10개 조회(limit 10) 작성자 정보 조회 유저 좋아요 여부 (sub query) 받은 좋아요 개수 (sub query) 작성자 차단 여부 (sub query) 테스트 조건 1초당 100번 요청 5번 수행 1초당 500번 요청 4번 수행 1초당 100번 요청 2번 수행 개선 전 쿼리 성능 전체 조회 쿼리1(서브쿼리3 + 커버링 인덱스x) 결과 커버링 인덱스 적용 후 쿼리 성능 커버링 인덱스 쿼리1 + 전체 조회 쿼리1(서브쿼리3) 결과 모든 요청에 따른 성능이 눈에띄게 개선 되었다. 특히 처리량과 표준편차의 경우 초당 1000번의 요청에서 크게 개선되었다. 하지만 초당 500번 이상의.. 더보기
[Spring Cloud] Resilience4j 를 이용한 circuitbreaker 기능 구현 Circuitbreaker란 circuitbreaker란 전기 회로의 회로 차단기에서 차용한 개념이며 주식 용어에서도 사용이 된다. 평상시에는 전기가 흐르거나 거래를 자유롭게할 수 있지만(close state) 급격한 이상 현상이 발생했을 때 회로를 차단 또는 주식 시장의 거래를 정지하여(open state) 각각 회로 보호와 시장의 안정을 위한 장치이다. 여기서 close state가 정상적인 상태이고 open state가 차단상태인지 헷갈릴 수 있는데 이는 전기회로에서 스위치의 개념을 이해해야한다. 왼쪽 회로와 같이 스위치가 닫혀있어야지 전류가 흐르고 회로가 정상 작동하게 되고 오른쪽과 같이 스위치가 열려있으면 전류는 흐리지 못하고 회로는 차단이 된다. micro service 에서도 이와 같은 개념.. 더보기
[Spring Boot] 소켓 통신을 위한 Websocket 서버 구성 spring boot websocket 종속성 추가 implementation("org.springframework.boot:spring-boot-starter-websocket") 위가 같이 종속성을 추가하면 사용중인 spring boot의 버전과 호환되는 버전으로 설정된다. websocket 환경설정 @Configuration @EnableWebSocketMessageBroker class WebsocketConfig( private val env: Environment ) : WebSocketMessageBrokerConfigurer { override fun configureMessageBroker(config: MessageBrokerRegistry) { config.enableSimpleBro.. 더보기
[Jenkins] Docker Jenkins로 Spring Boot 빌드 및 배포 - 2 (파이프라인 작성 및 빌드 테스트) 시스템 환경 jenkins 인스턴스 (ec2 ubuntu 20.04) server 인스턴스 (ec2 ubuntu 20.04) 개발 데스크탑 (mac 12.0.1) 구현할 파이프라인 구조 개발 데스크탑에서 코드 작성 후 github push github에서 webhook -> jenkins instance jenkins 파이프라인실행 git clone gradle build docker build docker image push jenkins 인스턴스에서 server 인스턴스로 ssh 접속 server 인스턴스 docker image pull server 인스턴스 docker image run server 인스턴스 기존에 같은 서비스 존재 시 기존 서비스 종료 jenkins에서 메일 또는 슬랙으로 결과 전.. 더보기
[Jenkins] Docker Jenkins로 Spring Boot 빌드 및 배포 - 1 (Jenkins 권한 및 플러그인 설정) 시스템 환경 jenkins 인스턴스 (ec2 ubuntu 20.04) server 인스턴스 (ec2 ubuntu 20.04) 개발 데스크탑 (mac 12.0.1) 구현할 파이프라인 구조 개발 데스크탑에서 코드 작성 후 github push github에서 webhook -> jenkins instance jenkins 파이프라인실행 git clone gradle build docker build docker image push jenkins 인스턴스에서 server 인스턴스로 ssh 접속 server 인스턴스 docker image pull server 인스턴스 docker image run server 인스턴스 기존에 같은 서비스 존재 시 기존 서비스 종료 jenkins에서 메일 또는 슬랙으로 결과 전.. 더보기

반응형