0. 시작하기 전
채팅 서비스를 구현하기 위해 네트워크 프레임워크인 Netty 를 사용해야 했다. 네트워크 프레임워크에 대해 무지한 상태이기 때문에 Netty 학습을 들어가기 전 네트워크 프레임워크에 대해 짧게 학습하고자 한다.
순서는 아래와 같다.
1. 동기 vs. 비동기
2. 블로킹 vs. 논블로킹
3. 네트워크 프레임워크
4. 이벤트 기반 네트워크 프레임워크
5. 네트워크 프레임워크 vs. 이벤트 기반 네트워크 프레임워크
1. 동기 vs. 비동기
동기 (Synchronous)
- 순서대로 실행되는 것을 의미
- 한 작업이 시작되면 그 작업이 끝날 때까지 다른 작업이 실행되지 않음
- 한 작업이 끝나야 다음 작업이 실행됨
비동기 (Asynchronous)
- 작업이 동시에 실행됨
- 한 작업이 실행되는 동안 다른 작업이 동시에 실행됨
- 작업이 완료될 때까지 기다릴 필요 없이 다음 작업을 실행할 수 있음
예시
라면을 끓을 때
동기 : 물이 다 끓고 나서 스프를 넣고 면을 넣는다.
비동기 : 물,스프 그리고 면을 넣고 한 번에 끓인다.
2. 블로킹 vs. 논블로킹
블로킹(Blocking)
- I/O 작업 시 시스템 콜이 반환될 때까지 프로그램 멈춤
- 동기식 작업
논블로킹(Non-blocking)
- I/O 작업 시 호출된 시스템 콜이 즉시 반환 -> 스레드가 다른 작업 수행할 수 있음
비동기식 작업 - 이벤트 기반 아키텍처에서 사용 (프로그램이 블로킹되지 않고 많은 작업을 처리할 수 있음)
3. 네트워크 프레임워크
- 네트워크 상에서 데이터를 주고 받는데 필요한 여러 기능을 제공하는 소프트웨어 프레임워크를 의미
- 동기식 프로그래밍 모델을 사용하여 네트워크 애플리케이션 작성
- 클라이언트 요청에 대한 응답을 기다리는 동안 프로그램이 일시 중지될 수 있음
- TCP/IP 소켓 통신, HTTP 통신, SSL/TLS 암호화 등 기능들을 사용할 수 있도록 추상화된 인터페이스를 제공함
4. 이벤트 기반 네트워크 프레임워크
- 이벤트를 처리하는콜백함수를 등록하여 비동기식(non-blocking) 으로 처리하는 프레임워크
- 비동기식 프로그래밍 모델을 사용하여 네트워크 애플리케이션 작성
- 클라이언트 요청에 대한 응답을 기다리지 않고 계속 실행할 수 있음
- 이벤트 기반 아키텍처에서 발생하는 이벤트를 처리하도록 설계됨
- 이를 통해 여러 클라이언트와 동시에 효율적으로 네트워크 통신을 처리할 수 있음 => 높은 처리량과 저렴한 자원 사용을 가능하게 함
5. 네트워크 프레임워크 vs. 이벤트 기반 네트워크 프레임워크
구분 | 차이점 | 공통점 |
네트워크 프레임워크 | 서버 스레드를 생성하여 클라이언트 요청 처리 | 네트워크 애플리케이션 개발 도구 |
이벤트 기반 네트워크 프레임워크 |
클라이언트 요청 동시에 처리 가능 (이벤트가 발생할 때마다 콜백 함수 호출) |
'공통' 카테고리의 다른 글
[error] No mapping found for HTTP request with URI 에러 (0) | 2024.01.07 |
---|---|
[ect] 객체지향 설계 SOLID 5 원칙 (0) | 2023.02.15 |
[Git] 검색하기 귀찮아서 모아둔 명령어 (0) | 2023.01.04 |
[etc] Git pull 오류 해결 (2) | 2022.04.30 |
[etc] GitHub CLI 명령어 모음 (0) | 2022.03.14 |