API란?

식당에 가서 음식을 주문하는 상황을 가정해보자. 당신은 점원을 통해 주문할 수도 있고, 키오스크에서 직접 터치를 통해 메뉴를 선택할 수도 있다. 이 때 음식을 주문 한다는 목적을 이루기 위해 점원 또는 키오스크라는 인터페이스를 사용한다.

프로그램도 마찬가지이다. 당신이 다른 팀원들과 주식 가격을 받으면, 살지 팔지 결정해주는 프로그램을 만든다고 가정하자. 살지 팔지 결정(목적 3)하려면 우선, 현재 주식 정보를 받아와야 하고(목적 1), 그 다음 오를지 내릴지를 예측(목적 2)해야 한다. 목적 1, 2는 다른 팀원이 구현하고 목적 3은 당신이 구현한다고 하자. 이때, 다른 팀원이 만들어놓은 목적 1, 2를 수행하는 프로그램을 어떻게 당신의 프로그램에서 활용할 수 있을까? 다른 목적을 수행하는 프로그램을 내 프로그램에서 사용할 수 있게 하는 인터페이스를 API라고 한다.

REST API

API에는 여러 종류가 있고, 그중 Web 통신의 표준으로 사용되는 것이 REST API이다. REST API를 통해 요청하는 대상을 Client (손님), 요청 받은 일을 처리하는 당사자를 Server (식당)라고 할 때, Client는 기본적으로 다음 4가지 요청을 할 수 있게 REST API를 구현해야 한다.

각각의 기능을 하는 REST Method를 POST, GET, PUT, DELETE라고 하며 python의 requests 라이브러리에 각각 post(), get(), put(), delete()로 구현되어 있다.

ECR과 Docker

왜 예측 모델을 Docker image화 시켰을까?

6.1 AutoML 을 활용한 빠른 모델링 에서 15분 후 비트코인 가격이 오를지 내릴지 예측하는 모델을 제작하고 이를 Docker image로 제작해두었다. 2.4 Docker 에서 공부했듯, docker run을 통해 해당 image를 실행할 경우, input으로 비트코인 가격을 받으면 15분 후 증/감을 output으로 뱉는 model이 docker container 안에 있다.

pycaret library를 통해 python으로 직접 predict()를 할 수 있는데 왜 예측 모델을 굳이 Docker image화 시켰을까? 그 이유는 다음과 같다.

  1. 예측 모델을 다른 컴퓨팅 환경에서 실행해야 하는 경우, Docker화 되어 있지 않으면 각종 환경 에러들이 발생한다.
  2. 예측 모델을 사용하는 시기가 일정하지 않은 경우, Docker화가 되어 있지 않으면 서버를 항상 켜 놔야 한다.