본문 바로가기
반응형

Spring5

프로모션을 대비한 대기열 시스템 구성하기 (Redis, WebSocket, Spring) 회사내 기술블로그에 작성했던 글인데.. 기술블로그 오픈에 대한 내용이 홀딩되면서 1년이 지난 시점에 재작성 해봣다. BackEnd 위주 구성에 대한 내용들이니 참고하길 바랍니다~! ✔개요 대기열 시스템의 탄생 배경 이번에 회사에서 새로운 상품을 오픈하기 위해 대대적인 마케팅?을 진행한다는 것을 전달받아 대기열 시스템을 설계, 개발을 진행했습니다. 왜? 우리는 대기열 시스템이 필요했을까? 현재 대고객 서비스를 위한 개발 및 운영하고 있으며, 상품에 대한 주요정보 등을 코어영역와의 통신을 통해 처리하고 있다. (우리는 고객을 상대하는 채널이다.) 우리가 도입하려는 대기열 시스템은 고객의 동접을 대응하지 못할때 FIFO(선입선출) 방식으로 순차적으로 트래픽을 처리하기 위한 방안입니다. 레거시 시스템의 경우에는.. 2022. 8. 10.
[Spring, Java] SLF4J Logger 올바른 사용법. (log4j2, logback) 새로운 직장으로 회사를 옮기면서 레거시 시스템을 보는일이 생기게 되었고, Logger를 세가지 방법으로 사용하는 것을 보고 공유가 필요하다고 느꼇다. (정확히 레거시의 개발자는 누군지 모르겠다. 많은 사람들의 손을 탄거 같다.) 우선, Spring 에서 Logger를 세가지를 쓸 수 있다, Log4j2, log4j, logback 이다. 세개의 차이는 " " 에서 확인해 보면된다. 이 글은 어떤 라이브러리를 쓰든 공통으로 지켜야할 약속이라고 생각한다. (성능적으로 가독성 측면으로) Log의 발생이 성능적으로 큰 이슈가 될 수 있음을 경험해 봤는데, 스트레스 테스트를 10만 건을 진행했을때 Logger를 어느정도 사용했냐 안했냐에 따라 성능적인 지표가 크게 차이났기 때문이다. 보통의 개발자는 신경쓰지 않지.. 2021. 11. 20.
[Spring] 트랜잭션 설정 propagation (전파속성) @Transactional 종류 / propagation 전파속성 Spring framework 환경하에서 개발하다보면 필요한 Transaction에 대한 기본적인 설정들이다. 간혹 설정을 제대로 안해놔서 rollback이 되버리는 case도 존재하기도 했었다. REQUIRED와 REQUIRES_NEW를 보통 사용했는데, 다른 격리수준도 확인차 정리한다. REQUIRED(기본값) 부모 트랜잭션이 없다면 새로운 트랜잭션 생성.해당 메써드가 호출한 곳와 별도의 쓰레드라면 어떤 동작이 일어날까? 답은 전파 레벨과 상관 없이 무조건 별도의 트랜잭션을 생성하여 해당 메써드를 실행한다. Spirng은 내부적으로 트랜잭션 정보를 ThreadLocal 변수에 저장하기 때문에 다른 쓰레드로 트랜잭션이 전파되지 않는다 중.. 2021. 3. 19.
[Spring Boot, kafka] 스프링 프로젝트에 kafka 리스너 적용기. Kafka와 zookeeper 설치와 실행이 완료됬다면 spring 프로젝트에서 접근이 가능하다. kafka가 로컬에 실행하였다면 간단하게 토픽이 생성되는 것 까지 볼수있다. 1. gradle Kafka 추가. bulid.gradle implementation 'org.springframework.kafka:spring-kafka' 2. yml (properties) 셋팅 application.yml 3. Consumer 셋팅 @Slf4j @EnableKafka @EnableRetry @Configuration public class KafkaConsumerConfig { @Value("${spring.kafka.bootstrap-servers}") private String bootstrapServer.. 2020. 6. 29.
REDIS Key Evict 하는 두가지 방법 (키 삭제, 키 초기화) REDIS 를 사용하여 운영중 REDIS 특정 key를 삭제해야하는 경우가 있다. redis 서버에 들어가서 특정 key를 삭제할때는 Del key명 만 입력하면된다. Del Key명 JAVA쪽에서는 연결된 redis 의 key를 제거하는 방법이 두가지있다. (실제 나는 evict 하는 기능을 API 프로젝트에서 작업했다. 보통 관리자가 사용하는 admin에서 data가 변경되었을때 redis key 수정이 필요하기 때문에 key를 삭제하는 것이다. 이 후 해당 key를 사용하는 페이지에 재접속하게 되면 서비스에서는 key가 재생성 될 것이다.) 1. 특정 key명을 Evict하는 방법. 2. 원하는 key 명을 조회해서 Evict하는 방법. (다만 2번은 REDIS 설정에 따라 가능여부가 다르다. Sc.. 2020. 3. 13.
반응형