피드 작성을 하면서 S3에 요청할 일이 많았습니다. 하지만, 반복문을 통해 S3에 요청을 보내면서 시간이 너무 많이 걸린다는 것을 API 요청만으로도 느낄 수 있었습니다. 그래서, 이 작업에 대해 비동기 처리를 하게 되었고, 그에 대한 테스트 결과입니다. 사용자는 20건의 요청을 한번에 보내게 되고, 한번의 테스트 당 10개의 이미지(최대 10개로 잡았습니다.)를 보내도록 하였습니다. 1. 단순 반복문 사용기존 반복문을 사용하였을 때의 결과입니다.다음과 같이 for문을 이용하여 데이터를 저장해주었습니다.최소 787ms, 최대 1266ms, 평균 911ms라는 시간이 걸렸습니다. 2. S3 요청 비동기 처리이미지 처리를 다른 서비스로 넘기면서, Async 처리를 해주었습니다.또한 초기 쓰레드의 수를 최대 ..
스프링의 특징을 생각해보면 보통 DI와 IoC, 그리고 AOP를 주로 큰 특징으로 떠올립니다. 이번 포스팅에서는 AOP가 무엇인지에 대해 중점적으로 알아보도록 하겠습니다. AOP란?AOP(Aspect Oriented Programming)이란, 관점 지향 프로그래밍으로, 관점을 기준으로 다양한 기능을 분리하여 보는 프로그래밍입니다. 여기서 관점(Aspect)이란, 부가 기능과 그 적용처를 적용하고 합쳐서 모듈로 만든 것입니다.Java는 OOP(Object Oriented Programming) 언어로서, OOP 에서 모듈화의 핵심 단위는 클래스인 반면, AOP에서 모듈화의 단위는 관점 Aspect 입니다. 따라서 어떠한 행위의 이전 시점, 이후 시점, 해당 시점 등이 중요합니다. 이러한 Aspect는 여..
프로젝트를 진행하면서 WebSocket과 STOMP를 이용해서 채팅기능을 구현하였습니다. 특히 REST API를 이용하여 JWT토큰으로 사용자 인가 처리를 하기 때문에 WebSocket에서도 이를 사용하기 위해 Spring Security와 결합하였습니다. WebSocketConfig.java 설정 우선 WebSocket과 STOMP를 함께 쓰기 위해서 스프링에서는 WebSocketMessageBrokerConfigurer 인터페이스를 구현해야 합니다. @Order(Ordered.HIGHEST_PRECEDENCE + 99) @Configuration @EnableWebSocketMessageBroker // 웹소켓 메세지 핸들링 활성화 @RequiredArgsConstructor public class ..