1. 글을 쓰게 된 계기
동기, 비동기 그리고 병렬과 순차에 대해서 프로그래밍하는 사람이라면 많이 들어봤을 것이다.
이번에 초기 스타트업을 진행하면서
기존과 다르게(연구, 프로젝트 성 업무) 우리는 서비스를 만들게 되었다.
서비스를 만들때 고려해야 할 것이 굉장히 많다는 것을 배우고 있다.
여기서 "속도"는 굉장히 큰 이슈이다.
client가 우리 service를 사용하는데 "속도"에 문제가 있어 "불편함"이 있으면 안된다.
그래서 해당 개념에 대해서 다시 한번 정리하고자 글을 작성하게 되었다.
2. 동기와 비동기
동기 (Synchronous)
- 동기 방식은 작업들이 순차적으로 진행되는 방식이다.
- 한 작업이 시작하면 그 작업이 완료될 때까지 다른 작업들은 기다려야 한다.
- 호출한 함수나 작업이 반환될 때까지 다음 코드로 진행하지 않는다.
비동기 (Asynchronous)
- 비동기 방식은 작업들이 동시에 진행되는 방식이다.
- 한 작업이 시작되더라도 다른 작업들이 기다리지 않고 계속 실행된다.
- 비동기 작업은 백그라운드에서 처리되며, 작업이 완료되면 알림(콜백, 프라미스, 비동기 함수 등)을 받아 처리할 수 있다.
- 주로 네트워크 호출이나 파일 읽기와 같이 시간이 오래 걸리는 작업을 다룰 때 사용된다.
3. 병렬과 순차
병렬 (Parallel)
- 병렬 실행은 여러 작업이 동시에 실행되는 방식이다.
- 병렬 처리를 위해 별도의 하드웨어나 스레드가 필요할 수 있다.
- 병렬 처리는 작업들을 분리하여 각각 독립적으로 실행하여 전체 작업을 빠르게 완료할 수 있다.
순차 (Sequential)
- 순차 실행은 작업들이 하나씩 차례대로 실행되는 방식이다.
- 한 작업이 완료될 때까지 다음 작업은 대기해야 한다.
- 병렬 처리가 아닌 일반적인 실행 방식이다.
4. 어떤 상황일 때 어떤 걸 써야 할까요?
- 동기 vs 비동기:
동기: 사용자가 웹 페이지를 열 때, 페이지의 모든 이미지를 한 번에 불러오고 로드할 때 동기적인 방식을 사용하다. 페이지가 모든 이미지를 로드할 때까지 사용자는 기다리게 된다.
비동기: 사용자가 웹 페이지를 열 때, 페이지의 기본 내용은 바로 보여지고, 이미지는 비동기적으로 로드되는 방식을 사용하다. 이렇게 하면 페이지 로딩이 빨라지고 사용자는 이미지 로딩을 기다리지 않아도 된다.
- 병렬 vs 순차:
병렬: 데이터베이스에서 여러 사용자의 요청을 동시에 처리하여 응답 시간을 단축하는 경우 병렬 처리를 사용하다. 각 사용자의 요청은 별도의 스레드에서 병렬로 실행된다.
순차: 사용자가 회원가입을 위해 양식을 작성하고 제출하면, 양식 검증, 데이터 저장 등의 작업이 순차적으로 실행된다. 양식 검증이 완료되기 전까지는 데이터 저장 작업이 시작되지 않는다.
실제 선택할 때에는 다음과 같은 고려사항이 도움이 될 수 있다
- 작업의 복잡도: 작업이 얼마나 복잡하고 시간이 오래 걸리는지 고려하여 비동기 또는 병렬 처리를 선택한다.
- 의존성: 작업 간의 의존성을 고려하여 순차 또는 동기 처리가 필요한지를 결정한다.
- 하드웨어 및 환경: 사용 가능한 하드웨어 자원과 실행 환경에 따라 병렬 처리가 가능한지 여부를 고려한다.
- 사용성 및 성능: 비동기와 병렬 처리는 작업 처리 시간을 줄이거나 동시에 다른 작업을 수행할 수 있는 장점을 가지지만, 코드 복잡도가 증가할 수 있다. 이에 대한 성능과 코드 유지보수성을 고려한다.
마지막으로, 선택한 실행 방식에 따라 코드를 작성하고 테스트하여 실제로 어떤 결과를 얻는지 확인하는 것이 중요하다.
'Come on IT > 참고용' 카테고리의 다른 글
jupyter notebook 서버설정, 원격접속 설정(feat. ubuntu 22.04) (0) | 2023.11.06 |
---|---|
Load Key "~~.pem": bad permissions 해결방법 (0) | 2023.08.27 |
(Mac) port 확인 방법 및 5000 port 삭제 방법 (0) | 2023.05.16 |
AI 관련 용어 정리 ('23.05.05 update) (0) | 2023.05.05 |
Mac 업그레이드 이후 xcrun: error: invalid active developer path 에러 해결하기 (1) | 2023.02.19 |