파이썬 데이터 분석을 위한 API 이해, REST API, WebSocket API
파이썬 데이터 분석을 위해서는 대량의 데이터를 자동으로 받을 수 있는 API에 대한 이해가 필수적입니다. API에 대한 개념부터 어떤 API를 고르는 것이 초보 파이썬 데이터 분석가들에게 유리할지에 대해 이해하는 것이 이 포스팅의 목적입니다. 가장 많이 쓰이고 있는 REST API와 실시간 빠른 데이터 수집에 장점이 있는 WebSocket API를 살펴보고, API 선택을 위해 체크해봐야 할 것들을 정리하였습니다.
글의 순서
API
API 종류 : REST API vs. WebSocket API
파이썬 데이터 분석에 활용하기 좋은 API를 고르는 법
API
API(Application Programming Interface)는 응용 프로그램이 상호작용하는데 필요한 모든 것을 뜻합니다. 두 Application Program(응용 프로그램) 사이의 일입니다. 만약 비트코인 가격 정보를 코인 거래소로부터 가져오는 응용 프로그램을 만든다면, 먼저 코인 거래소의 서버에 접속해야 합니다. 서버에 접속한 후에는 서버에 있는 응용 프로그램을 통해 데이터를 받아와야 하는데, 이때 필요한 것이 서버가 제공하는 API인 것입니다.
이 API는 우리가 네이버 금융에 들어가서 종목 정보를 확인할 때 보이는 검색창, 검색 버튼 같은 UI(User Interface)와 대응되는 개념입니다. 여기서 네이버 금융은 서비스에 해당합니다. UI가 사람과 서비스 사이에 연결고리라면, API는 서비스와 서비스 사이의 연결고리라고 할 수 있습니다.
API 종류 : REST API vs. WebSocket API
(1) REST API
요즘 대부분의 웹서버들은 REST API 형태로 서비스를 제공하는데, REST는 Representational State Transfer의 줄임말입니다. REST API는 웹(HTTP)의 장점을 최대한 활용하기 위해 만들어진 아키텍처인 만큼 API 메시지만 보고도 이를 쉽게 이해 할 수 있는 구조로 되어 있습니다. 현재 사용되고 있는 가장 일반적이고 보편적인 API라고 해도 무방합니다.
(2) 웹 소켓 API (WebSocket API)
웹 소켓은 웹 서버와 웹 브라우저 사이의 통신을 위한 양방향 통신 규격입니다. 서버와 클라이언트가 HTTP를 이용해 한 번 연결된 이후에는 통신을 웹 소켓 전용 프로토콜 기반으로 수행할 수 있습니다. 접속 시간을 장시간 유지할 수 있고, 통신 손실이 적습니다. 또한 하나의 연결로 모든 데이터 송수신이 가능하기 때문에, 이 서버에 연결된 다른 응용 프로그램의 영향이 적다는 장점도 있습니다.
WebSocket API는 실시간으로 빠른 시간 안에 정보가 최신화 되어야 할 때 주로 사용하는 API입니다. 예를 들어 코인 거래를 할 때 WebSocket API가 많이 사용되는데, 실시간으로 가격정보를 빠르게 업데이트 해 주기 좋기 때문입니다.
사용방법은 REST API나 WebSocket API가 비슷합니다.
파이썬 데이터 분석에 활용하기 좋은 API를 고르는 법
(1) 문서화가 잘 되어 있는지 확인한다.
API를 활용하는데 필요한 정보가 일목요연하게 정리되어 있어서 한 눈에 파악할 수 있다면 활용하기 좋은 API라고 할 수 있습니다. 한 눈에 파악할 수 있다는 것은 목차로부터 API 기능들을 짐작할 수 있어야한다는 것입니다.
문서의 스타일만 봐도 API의 품질을 평가할 수 있습니다. API에 신경을 많이 쓴 서비스들은 대체로 API의 스타일에도 신경을 많이 쓰기 때문에, API 문서의 스타일이 좋으면 API도 좋다고 볼 수 있습니다.
웹페이지에 수록되어 있는 문서의 반응속도가 빠른지도 문서화의 중요한 요소입니다.
(2) 예제 코드가 있는지 확인한다.
복사, 붙여넣기 해서 바로 실행해볼 코드가 있으면 가장 빠르게 API를 활용할 수 있습니다. 예제 코드가 바로 그 API를 만든 개발자들이 제시하는 가장 좋은 사용방법이라고 할 수 있겠습니다. 예제 코드에서 개발자의 개발 의도까지 파악할 수 있습니다.
API 라이브러리가 따로 제공되고 있는지도 중요합니다. 여기서 라이브러리는 이 서비스 제공자가 API 엔드포인트에 대응하는 함수를 묶어 놓은 코드를 의미합니다. 이 라이브러리를 우리가 만드는 코드에 가져와서 쓸 때 구지 엔드포인트에 대응되는 함수를 일일이 쓰지 않아도 된다는 장점이 있습니다. 라이브러리를 클라이언트 또는 패키지라고도 부르니까, 라이브러리, 클라이언트, 패키지는 같은 것을 의미한다고 보시면 되겠습니다.
(3) API 사용권한을 통제하는지 확인한다.
API Key를 통해서 사용권한을 통제하는 API가 있습니다. 이 과정을 영어로는 authentication이라고 하고, 우리말로는 인증이라고 합니다. 인증(Authentication) 과정을 밝히고 있는 API가 쓰기 편한 경우가 많습니다.
(4) API 버전 정보를 쉽게 확인할 수 있고, 사용자들의 요구사항들을 쉽게 등록할 수 있는지 본다.
일반적으로 이 부분을 쉽게 하기 위해 서비스 업체는 API를 포함한 예제코드를 깃허브(GitHub)에 올려놓습니다. 만약 사용자가 API나 라이브러리를 쓰다가 오류를 발견하거나 개선사항을 발견한 경우 깃허브에 등록하면, 이 API를 사용하는 다른 개발자들도 답변을 같이 달아줄 수가 있기 때문입니다.
(5) 얼마나 많은 사람들이 이 API를 사용하고 있는지 확인한다.
사용자 수를 알 수 있는 가장 좋은 방법도 깃허브에서 확인하는 것입니다. 사용자들이 API나 라이브러리에 대한 자신들의 의견을 자유롭게 남기기 때문에, GitHub에서는 얼마나 많은 사람들이 이 API를 사용하고 있는지 확인할 수 있습니다.
(6) API 버전 관리는 잘 되고 있는지 확인한다.
다른 응용 프로그램들과 마찬가지로 API도 사용하다보면 개선점이 생기게 마련입니다. 버전 정보가 잘 관리되고 있다는 것은 API가 꾸준히 관리되고 있다는 것을 의미하기도 합니다. 이 버전 정보를 API 문서 목차에서부터 확인할 수 있다면 그 API에는 일단 높은 점수를 줄 수 있습니다.
마치며 …
파이썬 데이터 분석을 위해서는 대량의 데이터를 자동으로 받을 수 있는 API에 대한 이해가 필수적입니다. 이번 포스팅에서는 API에 대한 개념부터 어떤 API를 고르는 것이 초보 파이썬 데이터 분석가들에게 유리할지에 대해 알아보았습니다.
활용하기 좋은 API를 고르는 요령을 다시 정리하였습니다.
(1) 문서화가 잘 되어 있는지 확인한다.
(2) 예제 코드가 있는지 확인한다.
(3) API 사용권한을 통제하는지 확인한다.
(4) API 버전 정보를 쉽게 확인할 수 있고, 사용자들의 요구사항들을 쉽게 등록할 수 있는지 본다.
(5) 얼마나 많은 사람들이 이 API를 사용하고 있는지 확인한다.
(6) API 버전 관리는 잘 되고 있는지 확인한다.
함께 참고하면 좋은 글
1. API와 파이썬 데이터 분석
2. 업비트 API로 이해해보는 REST API
3. 업비트 REST API를 이용한 비트코인 가격 추출 파이썬 프로그래밍
4. 바이낸스 코인거래소 API Key로 계좌에 접속하는 파이썬 프로그래밍
5. 시계열 데이터 가시화 (4) 2개 y축 그래프로 코인 가격 비교
참고자료
[1] 조코딩 JoCoding, [JavaScript 기초와 활용 #2] API의 개념과 활용! 카카오 책 검색 기능 구현하기
[2] [네이버 지식백과] 웹소켓 [Web Socket] (두산백과 두피디아, 두산백과)