Notice
Recent Posts
Recent Comments
Link
반응형
관리 메뉴

쿵야지식떨이

[Spring] 비동기 처리 @Async 적용 (1) - 동기, 비동기란? 본문

Spring

[Spring] 비동기 처리 @Async 적용 (1) - 동기, 비동기란?

김쿵야 2024. 2. 24. 12:20
반응형

팀 프로젝트를 진행하면서 ai 서버와 통신을 하는 부분들이 많아졌다. npc에게 채팅을 요청하고, scenario를 받고, intro 요청을 하는 등등.. 요청하고 받아야 하는 것들이 늘어나면서 하나의 요청이 끝날 때까지 아무것도 못하는 동기 처리보다는 결과가 나오는데 시간이 걸리더라도 다른 작업을 할 수 있는 비동기 방식을 적용하는 게 좋겠다는 생각이 들었다. 

 

동기 처리와 비동기 처리에 대한 부분부터 spring Boot에서 적용할 수 있는 @Async를 프로젝트에 실 적용하는 과정과 공부한 내용을 모두 기록해보려고 한다. 


동기, 비동기란?

동기(Synchronous)

  • 작업이 순차적으로 진행된다. → 한 작업이 끝나야 다음 작업이 시작된다.
  • 요청을 하면 시간이 얼마나 걸리던지 요청한 자리에서 결과가 주어져야 한다. 
  • 🧐예를 들자면?
    • 네트워크를 통해 데이터를 요청하고 받아오는 작업을 실행 중!
    • 동기 방식에서는 데이터 요청을 보내고, 응답이 돌아올 때까지 프로그램은 기다리게 된다.
    • 응답이 오기 전까지는 다른 작업을 수행하지 않는다.
    • 응답이 돌아오면 그때서야 다음 작업(받아온 데이터 표시하기 등..)을 수행하게 된다.

비동기(Asynchronous)

  • 작업이 동시에 진행될 수 있다. 한 작업이 끝나기를 기다리지 않고, 다음 작업을 시작할 수 있다. 
  • 요청과 응답이 다른 시간대에 존재하기 때문에 요청 내용에 대해 지금 바로, 혹은 당장 응답받지 않아도 된다.(바로 응답이 와도 됨)
  • 🧐예를 들자면?
    • 네트워크를 통해 데이터를 요청하고 받아오는 작업을 실행 중!
    • 비동기 방식에서는 데이터 요청을 보내고 바로 다음 작업(화면에 로딩 중..을 표시 하는 작업)을 수행한다.
    • 응답이 오기를 기다리지 않고 다른 작업을 수행할 수 있다.
    • 응답이 돌아오면 그때서야 응답을 처리하는 작업(받아온 데이터 표시하기 등..)을 수행하게 된다.
    • 위 작업을 콜백(CallBack)이라 부르며 응답이 돌아온 후 호출되는 함수를 의미한다.

동기, 비동기 장 ▪ 단점

  동기 비동기
장점 코드의 흐름이 자연스럽고 이해하기 쉽다. 1. 여러 작업을 동시에 처리할 수 있어 프로그램의 효율성이 높아진다.
2. 프로그램의 반응성과 성능을 크게 향상 시킬 수 있다. 
단점 1. 한 작업이 오래 걸리게 되면, 그 작업이 완료될 때까지 프로그램 전체가 멈춰있게 된다. 
2. 프로그램의 반응성이나 성능이 저하될 수 있다. 
1. 코드의 흐름이 복잡해지고, 작업의 순서를 제어하기 어렵다.
2. 여러 작업이 동시에 실행되는 경우, 그 작업들 사이의 동기화 문제를 해결해야 한다.

 

 

동기와 비동기 방식이 어떤 실제 문제를 해결하는데 도움이 될까?

  1. 사용자 인터페이스
    • 만약 웹 페이지에서 데이터를 서버에 요청하고 결과를 받는 로직이 동기 방식으로 되어 있다면?
      • 😥사용자는 결과가 나올 때까지 무한 대기를 해야 한다.
    • 비동기 방식을 사용하여 서버로부터 응답이 오는 동안에 사용자가 인터페이스와 상호작용 할 수 있게 할 수 있다!
  2. 네트워크 통신
    • 만약 네트워크 요청을 하고 응답을 받는 로직이 동기 방식으로 되어 있다면?
      • 😥 프로그램이 네트워크 응답을 기다리는 동안 멈춰있게 된다.
    • 비동기 방식을 사용하여 네트워크 응답을 기다리는 동안에도 다른 작업을 수행하게 할 수 있다!
  3. 대용량 데이터 처리
    • 대용량 데이터 처리 시에는 동기와 비동기 방식을 함께 사용할 수 있다.
    • 🧐 예를 들자면?
      • 데이터를 순차적으로 처리해야 하는 경우 → 동기 방식
      • 데이터 처리 작업을 병렬로 처리해야 하는 경우 → 비동기 방식
반응형