일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 |
- kotlin spring
- Kubernetes
- 코틀린 코루틴의 정석
- kotlin coroutine
- Elasticsearch
- mysql 튜닝
- kotlin
- IntelliJ
- CKA
- APM
- AWS EKS
- MySQL
- 기록으로 실력을 쌓자
- CKA 기출문제
- kotlin querydsl
- CloudWatch
- 티스토리챌린지
- aws
- 정보처리기사 실기 기출문제
- 정보처리기사실기 기출문제
- Pinpoint
- Linux
- 공부
- 오블완
- Java
- 정보처리기사 실기
- minikube
- AI
- PETERICA
- Spring
- Today
- Total
피터의 개발이야기
비동기 개발의 중요성, Netty 창시자 이희승님 이야기를 읽고... 본문
ㅁ 들어가며
비동기를 사랑하는 오픈소스 개발자, 이희승을 읽고 비동기의 중요성에 대해 지나가는 생각을 정리해 보았다.
ㅁ 비동기 개발의 중요성
IT환경이 발전하면서 그만큼 트래픽이 증가하였다.
동기 방식은 하나의 요청이 처리되는 동안 다른 요청이 처리되지 못하며 요청이 완료되어야만 다음 처리가 가능한 방식이다.
이에 반해 비동기 방식은 하나의 요청 처리가 완료되기 전에 제어권을 다음 요청으로 넘겨 Blocking 되지 않으며 다음 요청을 처리하는 방식이다. 비동기 방식의 장점은 CPU사용량이 적은 트래픽 처리 속도의 향상이다.
나의 출근 상황을 예로 들어보자.
아이가 셋인 아침에 해야할 일이다.
1. 아침에 아이를 깨우는 일
2. 아이들 아침을 준비하는 일
3. 아이들 옷을 입히는 일
4. 아이들 가방 챙겨 집을 나서는 일
5. 내가 출근할 수 있도록 준비하는 일
동기 모델(Blocking)의 경우
1. 아침에 아이를 깨우고 일어날 때까지 기다렸다가,
2. 아침을 준비하고 아이들에게 아침을 먹이고,
3. 식사를 완료하면 옷을 준비하여 옷을 입히고,
4. 가방을 챙겨 아이들에게 매고,
5. 내가 출근할 준비를 한다고 가정하자.
그러면 시간이 50분 이상이 소요될 것이다.
비동기 모델(Non-Blocking)의 경우
1. 아침 모닝 노래를 틀어서 아이들을 깨우는 동시에 2. 아침식사를 세팅한다.
2. 아침 식사를 먹도록 아이들을 식탁에 유도한 다음 3. 아이들 옷을 미리 세팅하고, 내가 출근할 준비를 완료한다.
3. 아이들 옷을 입히고 4. 가방을 챙겨서 집을 나간다.
이럴 경우 30분 안에 모든 과정을 마칠 수 있다.
아빠인 나는 이벤트 위주로 순차적으로 일을 처리하지만
결과적으로 동시에 여러 일을 처리하는 과정에서 시간이 단축된다.
이것이 비동기 방식의 중요성이다.
하나의 일에 종속되지 않고
여러개의 일이 순차적으로 발생하는 이벤트에 따라 여러 일을 처리한다.
ㅁ 함께 보면 좋은 사이트
'개발이야기' 카테고리의 다른 글
성장하는 개발자의 자세, InterBeing!! (1) | 2023.04.17 |
---|---|
프로젝트 관리 시스템 정의 (0) | 2023.04.12 |
[소프트웨어 공학] 소프트웨어 생명 주기 Software Life Cycle (0) | 2021.02.19 |
Mac에서 port 프로세스 kill하기 (0) | 2021.02.06 |
웹페이지 내에 PDF 웹 뷰어 만들기 (0) | 2021.01.21 |