아래 내용은 코드잇의 'Python 프로젝트: 주식 자동 매매' 토픽을 공부하며 작성한 내용입니다.
토픽 링크: https://www.codeit.kr/topics/project-python-automated-trading
흠...
주식을 자동으로 매매하는 프로그램을 만들기 위해서는 무엇이 필요할까?
주식에 대해 아무것도 모르는 사람이라도 주식을 사기 위해서는 해당 회사의 '데이터'가 필요하다는 것은 알고 있다!
그 회사의 전날 주가는 어떠했고, 그동안의 주가 흐름은 어땠으며... 등 말이다.
그렇다면 이러한 투자 관련 정보들을 가져올 수 있는 데이터 원천이 있어야 프로그래밍을 할 수 있을 텐데...!
자, 먼저 그곳이 어디든 우리가 어떠한 데이터를 흔히 '끌어올' 때는 API라는 것을 쓴다. AI 기능을 사용하고 싶을 때 ChatGPT API를 쓰는 것처럼 이 API 개념을 이해하고 잘 활용하기 위해서는 필수적으로 이해해야 하는 것이 있다.
바로 인터넷의 기본 작동 방식!
일단 인터넷이란 무엇일까?
퍼플렉시티에게 물어봤다.
Q. Internet 어원
A. 인터넷(Internet)은 서로 다른 네트워크들을 연결하는 기술 개념에서 유래된 말로, ‘네트워크의 네트워크’를 지향하는 의도에서 처음 명명되었다는 점이 특징입니다
그렇다! 서로 다른 네트워크들을 연결한다는 것인데...
그렇다면 누구와 누구를 연결하는 것이고 왜 연결하는 것일까?
이것을 이해하기 위해서는 인터넷의 핵심 멤버를 알아야 한다.


: 정보를 주는 쪽.
: 정보를 요청해 정보를 받는 쪽.
-> 여기서 정보는 '데이터'이다. 즉, 클라이언트가 서버에게 특정 '데이터'를 요청하면 서버는 클라이언트에게 '데이터'를 제공하는 아주 단순한 구조이다!
예를 들어 내가 노트북을 켜고 유튜브에서 '스캘핑'영상을 검색했을 때 서버-클라이언트 흐름은 다음과 같다.
[클라이언트] 내 노트북 브라우저
↓ (HTTP 요청)
"youtube.com에서 '스캘핑' 영상 목록 주세요"
↓
[서버] 유튜브 서버
↓ (HTTP 응답)
"스캘핑 관련 영상 데이터 (제목, 썸네일, URL 등)"
↓
[클라이언트] 내 노트북에서 영상 목록 화면에 표시
이렇게 표현하니 얼마나 이해하기 쉬운가!
그런데 컴퓨터끼리도 이렇게 서로 '한국어'로 친근하게
그래서 등장한 것이 바로 HTTP
: 인터넷에서 컴퓨터끼리 대화하는 언어이자 소통방식. 흔히 URL 가장 앞에 https://가 쓰이는 이유가 있는 것이다...!
이 HTTP를 써서
클라이언트는 서버에게 데이터 요청, 즉 Request를 하고
서버는 클라이언트의 요청을 받아 데이터 제공, 즉 Response를 할 수 있는 것이다.
자 이렇게 서버-클라이언트의 대화를 실제로 확인할 수 있는 방법이 있다.
Windows: F12 키
macOS: Cmd + Option + I
Network 탭> 아래 Name에 아무거나 클릭하면

(잘 모르겠지만 일단 개인정보 관련되어 보이는 건 다 지워봤다...)
Headers탭에는 크게
1) General
2) Response Headers
3) Request Headers
로 구성되어있는 것을 볼 수 있다.
각 목차별 눈여겨 볼 것들과 간단한 설명도 같이 적어보자면
1) General
https:// 뒤에 붙는 경로와 쿼리 파라미터가 포함됨)2) Response Headers
application/json 으로 되어있는데 그렇다. 데이터는 모두 JSON 형태로 받아온다.)Q. JSON형태란?
A. HTTP에서 쓰이는 표준 데이터 형식을 의미하며 여러개의 중괄호로 구성된 딕셔너리 형식으로 되어있다.
3) Request Headers
application/json으로 되어있다.)그래서 위 정보들로 서버-클라이언트 정보 흐름을 조금 더 구체화해본다면 ...
[클라이언트] 내 노트북 브라우저
↓ (HTTP Request)
"youtube.com에서 '스캘핑' 영상 목록 주세요" (GET 메소드)
↓
[서버] 유튜브 서버
↓ (HTTP Response)
"스캘핑 관련 영상 데이터 (제목, 썸네일, URL 등)"
(Header: 응답 정보 / Body: JSON 형태로 작성된 스캘핑 관련 영상 데이터)
↓
[클라이언트] 내 노트북에서 영상 목록 화면에 표시
이 정도로 네트워크에 대한 기본 지식을 쌓았으면
본격적으로 코딩을 해볼 차례!(다음 글에서 계속됩니다!)
두다다다다다다다
(∩`・ω・)
_/_ミつ/ ̄ ̄ ̄/
\/___/