프로그램을 구현하다 보면 좀 더 효율적이고 빠르게 동작하는 프로그램으로 계속 수정해나가야 한다. 이렇게 프로그램의 퍼포먼스를 증가시켜서 더 사용자들에게 프로그램이 진화하고 있다는 것을 보여주는 것이 중요하다. 프로그램을 개발하다 보면 보편적으로 가장 많은 리소스를 차지하는 것이 결국에는 IO 처리이다. 파일을 읽고 쓰고, 네트워크로 데이터를 주고 받고 하는 일련의 과정들이 결국에는 IO인 셈이다. 그럼 이렇게 리소스를 많이 잡아먹고 대기시간을 길게하는 IO 작업을 한없이 기다리게 할 수 없을 것이다. 그래서 일반적으로는 이런 처리를 비동기로 처리하도록 개발한다. 동기와 비동기에 대한 차이를 여기서는 자세히 기술하지 않을 것이다. 간단하게 설명하면 동기 방식으로 프로그램을 구현하면 네트워크에 질의를 하였을..