# Asynchronous Programming

Asynchronous Programming
Synchronous Programming 우선 CPU의 스레드에 대해 알아보자. 스레드란 작업을 하는 가장 작은 유닛을 말한다. 위의 이미지를 보자. 1+1이라는 작업1을 실행하려고 한다. 작업 1이 시작되면 1+1이라는 계산을 CPU가 해야하고,작업 1이 완료될 때 까지 CPU를 사용할 수 없다. 작업 1이 완료되면 다음 작업인 작업 2(2+2) 를 시작하게 되고, 마찬가지로 완료될 때까지 CPU를 사용할 수 없다. 이것이 문제가 될 때는 서버요청을 받게 될 때이다. 아래 이미지를 보자. 어떤 서버에 접근하여 주소 정보를 가져온다고 가
Promise, Async & Await
Promise 함수의 리턴으로 다시 함수를 호출하는 경우가 계속되는 일명 콜백지옥으로부터 가독성을 높이기 위해 사용하는 것이다. 처음에는 status가 pending 상태에 있다가 resolve가 호출되면 fulfilled, reject가 호출되면 rejected가 된다. 자세한 설명은 유튜브 참고 Async / Await 최근에 나온 비동기 처리 패턴 JavaScript는 single thread 기반 언어이기 때문에 메인스레드가 멈추지 않고 계속 진행하기 위해 비동기 처리가 필수이다. 그러나 비동기 처리 결과는 예측할 수 없기 때문에 callback이나 promise와 같은 동기식 처리가 필요한데, 이런 기존 동기식 처리의 단점을 보완하고 가독성을 높이기 위해 async와 await을 활용한다. [3](https://devlog-wjdrbs96.tistor

[Onboarding] : 비동기 프로그래밍
비동기 프로그래밍(Asynchronous Programming)이란 일련의 명령문이 기본 프로그래밍 흐름과 독립적으로 실행되는 병렬 프로그래밍의 한 형태이다. 동기적으로 작업을 수행한다면 블로킹 작업이 있을 때 해당 작업의 결과를 기다려야 한다. 하지만 비동기적으로 수행한다면 프로그램 실행을 멈추지 않기에 병목을 피할 수 있다. 병렬 프로그래밍이라고 했지만 비동기 프로그래밍과 멀티쓰레딩은 같은 것이 아니다. 요리에 비유하자면 비동기 프로그래밍은 한명의 요리사가 동시에 여러 작업을 수행하는 것이고 멀티쓰레딩은 요리사 여러 명이 각각 작업을 수행하는 것을 의미한다. 또한, 비동기 프로그래밍이 언제나 곧 더 나은 성능과 속도를 의미하지는 않는다. 상황에 따라서 비동기 프로그래밍 사용 시 성능과 속도가 나빠질 수 있다. 또한 코드 작성, 디버그 및 유지 관리가 어렵다는 단점이 있다. C#에서는 아래와 같이 async 및 await 키워드를 사용하여 비동기 프로그래밍을 수행할 수 있다

스프링에서 비동기 프로그래밍으로 무거운 로직 처리
전에 다니던 회사에선 Vert.x라는 완전 비동기 프레임워크를 사용해서 반강제적으로 비동기 프로그래밍에 대해서 많이 공부를 하게 되었었다. 사실, 효율성 측면에서 Vert.x가 좋은 프레임워크 일 수는 있으나, 필연적으로 코딩을 할때 지속적으로 람다 함수를 사용을 할 수 밖에 없고, 그렇기 때문에 코드가 지저분해지고 유지 보수 측면에서도 매우 비효율적이다. 따라서 Vert.x를 공부하고 싶다는 사람이 있다면 정말 뜯어 말리고 싶고, 정말 컴퓨팅적인 효율성을 위해서 완전 비동기 프레임워크를 사용해야 한다고 하더라도 차라리 스프링 웹플럭스라는 보다 커뮤니티가 활성화 돼있는 프레임워크를 사용하는 편이 훨씬 낫다고 생각한다. 비동기 프로그래밍이란? 컴퓨터 통신에는 동기와 비동기 프로그래밍이 존재한다. 동기 방식은 어떠한 프로세스가 주어졌을때, 해당 프로세스를 순차적으로 처리하는 방식이고, 비동기 방식에서는 해당 프로세스들을 순서에 상관 없이 처리를 하게 된다. 비동기 방식에서는 순서

asynchronous/synchronous
들어가며 오늘은 집에 손님이 왔다. 손님에게 물만 줄 수는 없는것이다. 음식을 대접해야지. 파스타와 감바스, 바지락 술찜으로 정했다. 파스타부터 준비해보자. 물을 올리고 소금을 뿌리고, 끓기 시작하면 면을 넣는다. 11분을 기다리고, 면이 다 삶아졌다. 팬을 달구고 소스를 부어 데운 다음 면과 같이 덖는다. 파스타 완성. 이제 감바스를 해야겠다. 팬에 오일을 두르고 마늘을 넣고, … 이렇게 해서는 누군갈 대접할 수 없다. 감바스를 하는 사이에 파스타는 불어버릴 것이고, 아직 술찜은 시작도 하지 않았다. 요리를 해봤거나 일머리가 있는 사람들은 알 것이다. 바지락 술찜 먼저 불에 올려 놓고, 면 삶는 시간에 소스를 데우면서 감바스도 같이 하면 시간을 효율적으로 쓸 수