인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

박상훈님의 프로필 이미지

작성한 질문수

실전! FastAPI 활용(비동기)

강의 마무리

비동기 API 사용시 단점? 주의사항? 이 따로 있을까요?

해결된 질문

작성

·

91

0

안녕하세요 강사님. 해당 강의 정말 재밌게 잘 들었습니다.

다름이 아니라 강의 들으면서 커리큘럼 내에 비동기 API 사용시 단점이라거나 문제점 또는 주의사항 같은 내용을 못봤던 것 같은데

실무에서 비동기 API 를 적용하려 할 때 일반적인 동기 API 개발에 비해 주의해야 할 사항 같은 게 있을까요?
run_in_threadpool 동작하는 걸 보면 거의 완벽한 프레임워크 같고, 장고나 다른 프레임워크에 비해 단점도 없어보여서 질문드립니다.

답변 2

1

신동현님의 프로필 이미지
신동현
지식공유자

안녕하세요, 비동기 프로그래밍 사용시 주의할 점은 아래와 같습니다.

먼저 비동기 프로그래밍을 제대로 활용하기 위해서는 가급적 순수 비동기 코드를 지원하는 라이브러리 활용하는 것이 좋습니다. FastAPI 사용시 쓰레드풀 활용을 통해 동기식 코드를 비동기 방식으로 동작 시킬 수는 있으나 쓰레드 풀을 과도하게 사용하면 이로 인해 또 다른 성능 저하 문제를 일으킬 수 있습니다.

또 실무에서는 비동기 프로그래밍 사용시 같이 프로젝트를 운영하는 팀원들의 비동기 프로그래밍에 대한 이해도 등을 고려해서 도입해야 할 것 같습니다.

참고로 최신 Django에서도 비동기 프로그래밍을 지원하고 있습니다.

0

인프런 AI 인턴님의 프로필 이미지

안녕하세요, 인프런 AI 인턴입니다. 박상훈님.

비동기 API는 특히 대량의 I/O 요청을 처리할 때 성능 면에서 많은 이점을 제공합니다. 그러나 일반적인 동기 API 개발에 비해 몇 가지 주의사항과 잠재적인 단점을 알고 있어야 합니다.

  1. 복잡한 디버깅: 비동기 프로그래밍은 코드 흐름이 비동기적으로 진행되기 때문에, 문제가 발생했을 때 디버깅이 복잡할 수 있습니다. 예를 들어, 이벤트 루프의 상태나 콜백의 순서를 추적하는 일이 어려울 수 있습니다.

  2. 라이브러리 호환성: 모든 파이썬 라이브러리가 비동기를 지원하는 것은 아닙니다. 특히 데이터베이스 드라이버나 다른 I/O 바운드 라이브러리가 비동기를 지원하지 않는 경우, run_in_threadpool 같은 방법으로 동기 코드를 비동기적으로 실행시켜야 할 수도 있습니다.

  3. 학습 곡선: 비동기 개념은 동기 프로그래밍에 익숙한 개발자에게는 처음에 다소 어려울 수 있습니다. async, await, 그리고 이벤트 루프 같은 개념에 익숙해져야 합니다.

  4. 성능 이점이 항상 있는 것은 아님: 모든 경우에서 비동기 처리가 이점을 가지는 것은 아닙니다. CPU 바운드 작업의 경우, 비동기보다 동기 방식이 더 효율적일 수 있습니다. 비동기 처리는 주로 대량의 I/O 바운드 작업에 적합합니다.

관련하여 이와 유사한 질문이 있는 게시물을 확인하면 많은 도움이 될 수 있습니다. 아래 링크를 참조해 보세요:

위의 게시물은 Django나 다른 프레임워크와 비교했을 때, 비동기 API 사용 시 장단점에 대해 다루고 있습니다. 이러한 내용을 바탕으로 실무에 적용할 때 주의할 점들을 이해할 수 있을 것입니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.