URLSession
하나의 URLSession에서 여러 개의 URLSessionTask 인스턴스를 만들 수 있으며, URLSessionTask 각각은 데이터를 fetch하거나, 업로드하거나, 파일을 다운로드하는 역할을 할 수 있다.

URLSession은 다른 HTTP 통신과 마찬가지로 Request와 Response를 기본 구조로 가진다.
Request
URL 객체를 통해 직접 통신하는 형태URLRequest 객체를 만들어서 옵션을 설정하여 통신하는 형태Response
Task의 Completion Handler 형태로 response를 받는 형태URLSessionDelgate를 통해 지정된 메소드를 호출하여 response 를 받는 형태간단한 response → Completion Handler
백그라운드에서도 지원하거나, 인증, 캐싱을 default 옵션으로 사용하지 않을 때 → Delegate 패턴
Session configuration을 결정, Session을 생성 (shared 제외)