Published on

비동기와 동기의 차이 및 활용

Authors
  • avatar
    Name
    devnmin
    Twitter

☕ 비동기와 동기의 차이, 커피숍에서 배워보자!

개발 개념을 배울 때 가장 좋은 방법은? 현실 속 예시로 이해하는 것! 자, 오늘은 동기(Synchronous)와 비동기(Asynchronous)의 차이를 커피숍에서 주문하는 상황을 예로 들어 알아보겠습니다.

1. 동기(Synchronous)란?

동기 방식은 "한 줄 서서 주문하고, 커피가 나올 때까지 기다리는 방식"입니다. 커피가 나오기 전까지는 아무것도 못 하고 하염없이 대기해야 하죠.

☕ 동기 방식 예시

  1. 카운터에서 주문
  2. 바리스타가 커피를 만듦
  3. 커피가 나올 때까지 기다림
  4. 커피를 받음
  5. 다음 손님이 주문 가능

이 방식은 직관적이지만, 바쁜 시간대에는 손님들이 길게 줄을 서야 하고, 시간이 오래 걸릴 수 있습니다.

💻 동기 코드 예제 (Python)

import time

def make_coffee():
    print("☕ 커피 주문 완료. 커피 만드는 중...")
    time.sleep(2)  # 2초 동안 커피 만들기
    print("✅ 커피 완성! 손님에게 전달.")

print("👤 첫 번째 손님 주문")
make_coffee()
print("👤 두 번째 손님 주문")
make_coffee()

이렇게 하면, 첫 번째 손님이 커피를 받기 전까지 두 번째 손님은 주문조차 하지 못합니다.

2. 비동기(Asynchronous)란?

비동기 방식은 "번호표를 받고 기다리는 방식"입니다. 주문을 하고 나서 카페에서 책을 읽거나 친구와 대화하다가, 번호가 호출되면 커피를 받으러 가면 됩니다. 즉, 기다리는 동안 다른 일을 할 수 있는 거죠!

☕ 비동기 방식 예시

  1. 카운터에서 주문 후 번호표 받음
  2. 바리스타가 커피를 만듦 (손님은 다른 일을 할 수 있음)
  3. 번호가 호출되면 커피 받으러 감
  4. 동시에 여러 손님이 처리 가능

이 방식은 카페 운영이 훨씬 효율적이지만, 번호를 잘 듣고 있어야 하고, 호출되는 순서가 다를 수 있습니다.

💻 비동기 코드 예제 (Python - asyncio)

import asyncio

async def make_coffee(name):
    print(f"☕ {name}님의 커피 주문 완료. 커피 만드는 중...")
    await asyncio.sleep(2)  # 2초 동안 커피 만들기
    print(f"✅ {name}님, 커피 완성! 가져가세요.")

async def main():
    await asyncio.gather(make_coffee("첫 번째 손님"), make_coffee("두 번째 손님"))

asyncio.run(main())

이렇게 하면 첫 번째, 두 번째 손님의 커피가 동시에 준비되므로 전체 대기 시간이 단축됩니다!

3. 동기와 비동기의 비교

☕ 비교 항목동기(Synchronous)비동기(Asynchronous)
주문 방식한 명씩 줄 서서 주문 및 수령번호표 받고 대기
처리 속도하나씩 순차적으로 처리여러 개를 동시에 처리
코드 복잡도단순하고 직관적상대적으로 복잡할 수 있음
사용 사례단순한 작업, 예측 가능한 상황네트워크 요청, 대량 데이터 처리

4. 언제 어떤 방식을 사용할까?

🧑‍💻 동기 방식이 적합한 경우

  • 실행 순서가 중요한 작업 (ex: UI 업데이트)
  • 작은 규모의 작업
  • 이해하기 쉬운 코드가 필요한 경우

🚀 비동기 방식이 적합한 경우

  • 네트워크 요청 (API 호출, 웹 크롤링 등)
  • 대량의 데이터 처리 (데이터베이스 쿼리 등)
  • 실시간 이벤트 처리 (WebSocket, 메시지 큐 등)

5. 결론

동기와 비동기 방식은 각각의 장점이 있으며, 개발하는 애플리케이션의 성격에 따라 적절한 방식을 선택해야 합니다.

  • "응답 속도가 중요하다!" 👉 비동기
  • "순차적으로 진행해야 한다!" 👉 동기

현명한 개발자는 두 가지 방식을 적절히 조합하여 효율적인 시스템을 설계할 수 있습니다. 다음에 카페에 가면, 커피를 주문하는 방식에서 동기와 비동기를 떠올려 보세요! ☕😉