일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- gitActions
- programmers
- 비동기
- Algorithm
- EC2
- Infra
- swapmemory
- 백업
- Java
- 알고리즘
- ci/cd
- TaskExecutor
- mysql
- R2DBC
- 백업스크립트
- mono
- GCS
- @async
- actions
- 파일업로드
- GoogleCloudStorage
- 프로그래머스
- AWS
- 백준
- 스왑메모리
- github
- JPA
- webflux
- CompletableFuture
- SUbmodule
- Today
- Total
목록Spring (4)
쿵야지식떨이
이전 글에서 정리한 것처럼 비동기 처리를 할 수 있는 방법은 다양하다. 이번 글에서는 내가 진행하고 있는 프로젝트에 어떤 비동기 처리 기법을 적용할 것인지, 이유는 무엇인지 정리해보려 한다. 고민했던 두 가지는 @Async와 WebFlux의 Mono였고 최종적으로 선택한 것은 @Async이다. 둘의 공통점과 차이점, 현재 진행하고 있는 프로젝트에 더 적합한 것을 선택하여 정리해보려 한다. @Async와 WebFlux Mono의 공통점과 차이점 @Async Mono 공통점 - 비동기 처리 - 블로킹하지 않고 비동기 작업의 결과를 반환할 수있다. 차이점 - 별도의 스레드에서 메서드 실행 - 일반적인 비동기 처리에 사용 - Future를 통해 비동기 작업의 결과를 가져온다. - 리액티브 스트림을 통해 데이터를..
동기와 비동기에 대해 정리를 하다 보면 Blocking과 Non-Blocking이라는 개념이 계속 나오게 된다. 맨 처음 글에서 정리했던 동기와 비동기를 간단하게 다시 보면서 Blocking과 Non-Blocking을 연관 지어 정리해보려 한다. 📚Blocking 자신의 작업을 진행하다가 다른 주체의 작업이 시작되면 다른 작업이 끝날 때까지 기다렸다가 자신의 작업을 시작하는 것. 특정 작업이 완료될 때까지 실행 스레드가 대기 상태에 머무르는 것이다. 보통 파일을 읽거나 데이터베이스 쿼리를 실행하는 등의 I/O 작업이 일반적으로 Blocking 작업이다. 📚Non-Blocking 다른 주체의 작업에 관련 없이 자신의 작업을 하는 것. 작업이 완료될 때까지 스레드가 대기 상태에 머무르지 않고 작업이 완료되면..
spring 프레임워크에서 제공하는 비동기 처리 기능에는 여러 가지가 있다. 이번 글에서는 spirng에서 제공하는 비동기 처리에 대해 간단하게 정리해보려 한다. 📚 @Async Spring의 전통적인 비동기 처리 방식 제공 @Async를 메서드에 붙이면, 해당 메서드는 별도의 스레드에서 실행된다. 이를 통해 메소드의 실행이 비동기적으로 이루어진다. @Async를 사용하면 메서드의 반환 값은 Future 또는 CompletableFuture 객체를 통해서 제공된다. 해당 객체를 통해 비동기 작업의 결과를 얻거나 비동기 작업이 완료될 때까지 기다릴 수 있다. @EnableAsync를 설정 클래스에 추가하면 @Async가 붙은 메서드를 별도의 스레드에서 실행될 수 있도록 Spring이 자동으로 처리. 더보기..
팀 프로젝트를 진행하면서 ai 서버와 통신을 하는 부분들이 많아졌다. npc에게 채팅을 요청하고, scenario를 받고, intro 요청을 하는 등등.. 요청하고 받아야 하는 것들이 늘어나면서 하나의 요청이 끝날 때까지 아무것도 못하는 동기 처리보다는 결과가 나오는데 시간이 걸리더라도 다른 작업을 할 수 있는 비동기 방식을 적용하는 게 좋겠다는 생각이 들었다. 동기 처리와 비동기 처리에 대한 부분부터 spring Boot에서 적용할 수 있는 @Async를 프로젝트에 실 적용하는 과정과 공부한 내용을 모두 기록해보려고 한다. 동기, 비동기란? 동기(Synchronous) 작업이 순차적으로 진행된다. → 한 작업이 끝나야 다음 작업이 시작된다. 요청을 하면 시간이 얼마나 걸리던지 요청한 자리에서 결과가 주..