본문 바로가기
Come on IT/참고용

동기와 비동기 그리고 병렬과 순차

by JONGSKY 2023. 8. 23.
728x90
SMALL

1. 글을 쓰게 된 계기

 

동기, 비동기 그리고 병렬과 순차에 대해서 프로그래밍하는 사람이라면 많이 들어봤을 것이다.

이번에 초기 스타트업을 진행하면서

기존과 다르게(연구, 프로젝트 성 업무) 우리는 서비스를 만들게 되었다.

 

서비스를 만들때 고려해야 할 것이 굉장히 많다는 것을 배우고 있다.

여기서 "속도"는 굉장히 큰 이슈이다.

client가 우리 service를 사용하는데 "속도"에 문제가 있어 "불편함"이 있으면 안된다.

 

그래서 해당 개념에 대해서 다시 한번 정리하고자 글을 작성하게 되었다.

 

2. 동기와 비동기

출처 : https://www.crocus.co.kr/1686

동기 (Synchronous)

  • 동기 방식은 작업들이 순차적으로 진행되는 방식이다.
  • 한 작업이 시작하면 그 작업이 완료될 때까지 다른 작업들은 기다려야 한다.
  • 호출한 함수나 작업이 반환될 때까지 다음 코드로 진행하지 않는다.

비동기 (Asynchronous)

  • 비동기 방식은 작업들이 동시에 진행되는 방식이다.
  • 한 작업이 시작되더라도 다른 작업들이 기다리지 않고 계속 실행된다.
  • 비동기 작업은 백그라운드에서 처리되며, 작업이 완료되면 알림(콜백, 프라미스, 비동기 함수 등)을 받아 처리할 수 있다.
  • 주로 네트워크 호출이나 파일 읽기와 같이 시간이 오래 걸리는 작업을 다룰 사용된다.

3. 병렬과 순차

출처 : https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=hyungjungkim&logNo=221420011711

병렬 (Parallel)

  • 병렬 실행은 여러 작업이 동시에 실행되는 방식이다.
  • 병렬 처리를 위해 별도의 하드웨어나 스레드가 필요할 수 있다.
  • 병렬 처리는 작업들을 분리하여 각각 독립적으로 실행하여 전체 작업을 빠르게 완료할 수 있다.

순차 (Sequential)

  • 순차 실행은 작업들이 하나씩 차례대로 실행되는 방식이다.
  • 한 작업이 완료될 때까지 다음 작업은 대기해야 한다.
  • 병렬 처리가 아닌 일반적인 실행 방식이다.

 

4. 어떤 상황일 때 어떤 걸 써야 할까요?

  • 동기 vs 비동기:

동기: 사용자가 웹 페이지를 열 때, 페이지의 모든 이미지를 한 번에 불러오고 로드할 때 동기적인 방식을 사용하다. 페이지가 모든 이미지를 로드할 때까지 사용자는 기다리게 된다.

비동기: 사용자가 웹 페이지를 열 때, 페이지의 기본 내용은 바로 보여지고, 이미지는 비동기적으로 로드되는 방식을 사용하다. 이렇게 하면 페이지 로딩이 빨라지고 사용자는 이미지 로딩을 기다리지 않아도 된다.

 

  • 병렬 vs 순차:

병렬: 데이터베이스에서 여러 사용자의 요청을 동시에 처리하여 응답 시간을 단축하는 경우 병렬 처리를 사용하다. 각 사용자의 요청은 별도의 스레드에서 병렬로 실행된다.

순차: 사용자가 회원가입을 위해 양식을 작성하고 제출하면, 양식 검증, 데이터 저장 등의 작업이 순차적으로 실행된다. 양식 검증이 완료되기 전까지는 데이터 저장 작업이 시작되지 않는다.

 

 

실제 선택할 때에는 다음과 같은 고려사항이 도움이 될 수 있다

  • 작업의 복잡도: 작업이 얼마나 복잡하고 시간이 오래 걸리는지 고려하여 비동기 또는 병렬 처리를 선택한다.
  • 의존성: 작업 간의 의존성을 고려하여 순차 또는 동기 처리가 필요한지를 결정한다.
  • 하드웨어 및 환경: 사용 가능한 하드웨어 자원과 실행 환경에 따라 병렬 처리가 가능한지 여부를 고려한다.
  • 사용성 및 성능: 비동기와 병렬 처리는 작업 처리 시간을 줄이거나 동시에 다른 작업을 수행할 수 있는 장점을 가지지만, 코드 복잡도가 증가할 수 있다. 이에 대한 성능과 코드 유지보수성을 고려한다.

마지막으로, 선택한 실행 방식에 따라 코드를 작성하고 테스트하여 실제로 어떤 결과를 얻는지 확인하는 것이 중요하다.

 

728x90
LIST