들어가기 앞서서..
처음 공부는 java spring으로 입문을 해서,
회사에 들어가니 바로 javascript nodejs를 급하게 익혀서 사용해야했어서, 언어나 프레임워크의 이해도가 다소 떨어진다 느껴저서 강의를 보고....했지만..
따로 공부를 해도 사실 크게 체감이 되는 부분이 없어서
부끄럽지만 그동안 나는 단순하게
동기 = 순서대로진행
비동기 = 처리순서가 빠른대로 진행
async await = 비동기 환경에서 동기처럼 처리하기위한 것
이렇게만 생각을 해왔다..
이번에 python을 사용해서 프로젝트를 진행하게 되어, 맞는 프레임워크를 찾아보다가
fastAPI를 입문을 하게 되었다.
python이 느린건.. 사실 코테공부를 python으로 했어서 느린건 익히 알고있었는데,
fastAPI의 장점이 Django나 다른 친구들보다 빠르고 간편하게 사용할 수 있다는 점이 와닿아 사용을 하게 되었는데( 급하게 시작을했어야해서 새로운 프레임워크 공부에 큰 시간을 쓸 수가 없었다)
사용을 하다보니 알겠더라..
FastAPI의 장점중 하나 "빠르다"가 async await을 지원한다 라는게 하나의 주요 원인중 하나였는데,
처음에 너무 단순하게 생각했던 나는..
어차피 함수 앞에 async안붙이면 javascript랑은 다르게 동기함수가 되는건데,
비동기로 갈거 아니면 async 붙일 필요가 있어..? 라는 오만한 생각을 하게 된다..
그렇게 코드를 완성하고.. 서버 api막 만들어서 프론트랑 작업을 하고 배포도 해서 테스트를 하는데..
한 부분이 느리면.. 전체가 멈춰버리는 것이다..
아니.. 자바스크립트에서는 이런적이없는데.. 여긴 기본이 동기여서그런가..?
하고 원인을 분석하다가
문뜩, async await쪽을 건들여보기 시작했다..
그러다보니 문뜩.. NodeJS공부할때 EventLoop쪽이 생각이났다..
공부했을때는..
아.. 그냥 그렇구나~ 저래서 동기처럼 작동을 하는구나~
저래서 빠르구나~~
하고 그냥 달달암기만 하고있었는데.. 이번에 뽝 느낌이 왔다.. 이거였구나..
결론부터 얘기하자면
동기는 결과를 “기다리면서 멈추는 것”이고,
await는 “기다리지만 멈추지 않고 다른 일을 할 수 있게 하는 것”
async await가 동기"처럼" 에 "처럼"을 깨닫는 순간이였다..
그러니까, fastapi의 장점중에 "빠르다" 가
비동기를 지원하기때문에, await를 사용하면 동기처럼 행동해도 다른곳에서 멈추지 않는다
즉, 동기만 가능한 프레임워크보다 빠르다 였구나 라는걸 한번에 확 체감 가능한 순간이였다..
그동안.. 자바스크립트 await이거 고생을 엄청해서.. 조금 미워했는데..
너에겐 큰 뜻이 있었구나..
그래서 시간이 오래걸리고, 굳이 async를 붙이지 않게해서 동기로 만든 함수들
전부 async붙이고 await사용해서 수정을했고,
그렇게 처리가 오래걸림으로 인해, 서비스가 멈추던 모든 이슈들이 해결되었답니다.. ㅎ
나는 진짜.. 바본가보다.. 아무리 공부해도 겪어봐야.. 아 이게 그거구나.. 하고있다 ㅠㅠ