카페24 웹호스팅에서 키움증권 REST API 붙이기 전에 확인해야 할 것들
사이드 프로젝트에 시세 데이터를 붙여보려고 이것저것 알아본 기록입니다. 파이썬 자동매매 기준 자료는 많은데, PHP·공유 호스팅 환경 기준으로는 따로 정리된 게 없어서 직접 정리해봤습니다.
1. "Open API"라는 이름만 보고 판단하면 안 됩니다
증권사 API를 검색하면 가장 먼저 나오는 게 키움증권의 기존 'Open API+'인데, 이름과 달리 Windows 전용 OCX(ActiveX) 컨트롤 방식입니다. 지원 언어도 C/C++, C#, Visual Basic, Excel, Delphi로 나와 있어 PHP는 애초에 목록에 없습니다. 게다가 실행 시 Windows GUI 환경에서 로그인 팝업을 직접 띄워야 하는 구조라, 카페24 같은 리눅스 공유 웹호스팅에는 올릴 수조차 없습니다.
다행히 최근 이 문제를 해결해주는 '키움 REST API'가 나왔습니다. 순수 HTTPS + JSON 방식이라 Windows·Mac·Linux 어디서든 동작하고, PHP curl로 그대로 호출하면 됩니다. 증권사 API를 알아볼 땐 'Open API'라는 이름만 볼 게 아니라, REST 기반인지 OCX 기반인지부터 확인하는 게 순서입니다.
2. REST API라고 전부 되는 건 아닙니다 — 웹소켓은 별개입니다
종목 정보, 순위 정보(거래량 급증·상승률 TOP 등), 차트 데이터는 POST 요청 한 번으로 끝나는 REST 방식이라 카페24에서도 문제없이 사용할 수 있습니다.
다만 실시간 체결가·호가 스트리밍은 REST가 아니라 웹소켓으로 따로 제공됩니다. 클라이언트가 연결을 계속 유지해야 하는 구조라 일반 PHP-FPM 기반 공유 호스팅에는 원래 맞지 않습니다. 카페24 같은 곳은 장시간 실행되는 프로세스를 허용하지 않는 경우가 많으므로, 이 부분은 처음부터 계획에서 제외하는 편이 낫습니다.
3. 카페24 크론이 지원되지 않는다면 cron-job.org로 우회할 수 있습니다
카페24는 상품 등급에 따라 자체 크론 지원 여부가 갈립니다. 단독웹호스팅·서버호스팅은 크론서비스가 제공되지만, 일반 공유 웹호스팅은 지원되지 않는 경우가 있습니다. 이럴 땐 cron-job.org 같은 외부 서비스로 특정 PHP 스크립트 URL을 주기적으로 호출하는 방식으로 우회할 수 있습니다.
4. 호출 제한은 생각보다 빡빡합니다
키움 REST API는 계좌(토큰) 기준 국내주식 조회 TR이 초당 5회로 제한됩니다. 종목 수천 개를 순회하는 배치를 만들 때는 이 제한 안에서 딜레이를 두고 도는 로직이 필요하며, 순위 정보류(거래량 급증 TOP 등)처럼 한 번 호출로 여러 종목을 받아올 수 있는 API를 최대한 활용하는 편이 호출 횟수를 아끼는 방법입니다.
정리하면
| 순서 | 확인할 것 |
|---|---|
| 1 | Open API 이름만 보지 말고 REST인지 OCX인지부터 확인할 것 |
| 2 | 실시간 웹소켓 스트리밍은 이 스택으로는 불가능하다고 전제하고 기획할 것 |
| 3 | 크론은 cron-job.org로 우회 가능하지만 타임아웃·보안은 별도로 챙길 것 |
| 4 | 초당 호출 제한을 감안해 배치 스크립트를 설계할 것 |
이 네 가지만 미리 확인하고 시작하면, 프로젝트 중간에 "이건 원래 스택으로 안 되는 거였네"를 뒤늦게 깨닫는 상황은 피할 수 있습니다.