공부하기싫어
article thumbnail

한 1년전에 조코딩 유튜브에서 가상화폐 자동매매 스크립트를 보고 따라 만들어서

t2.micro 하나로 돌렸을때 

첫 3개월 - 80%, 다음 3개월 50%의 이익을 남겼었다.

이후 시장이 안좋아지고 나선 3%이익에 그쳣지만 그 하락장 속에서도 결과적으론 이득이였다.

여기에 AI 종가 예측 스크립트를 더해서 최대한 serverless 로 구현하고 IaC 로 관리해보고자 한다.

 

1. 기본 설계

사용될 AWS 워크로드는

ec2 instance , lambda 2개, dynamoDB 테이블, cloudwatch alarm 이다.

vpc 는 기본 vpc 를 사용할 예정이다.

 

그리고 위 리소스 들을 cloudformation 으로 관리할껀데 코드가 많이 변하진 않을거라 ci/cd 는 적용하지 않기로 했다.

 

DB 액세스나 lambda 함수의 ec2 접근은 람다함수의 vpc 접근으로 해결할 생각이다.

 

워크플로우는

1. 서버에서 스크립트가 실행되면 dynamoDB 에 입력된 K_value 와 prediced_closing_price 를 매개변수로 사용하는 자동매매 함수가 실행된다.

2. prediced_closing_price 는 매시간 람다함수에서 실행되고 dynamoDB 테이블을 업데이트 한다.

3. 자동매매 함수는 변동성 돌파 기준값인 k 이상이고, 예상 종가가 매수가보다 높을때 매수를 진행하고 오전 8시55분에 판매한다.

4. 8시57분에 서버에서 동작하는 함수는 자동 종료되고, K value lambda 함수가 8시58분에 동작해 새로운 k 값을 구해 db에 업데이트 한다. 그리고 서버의 쉘스크립트를 실행시킨다.

5. lambda 에 의해 실행된 쉘스크립트는 dynamoDB 의 k 값과 예상종가 값을 매개변수로 사용하는 자동매매함수를 실행시킨다.

 

위 플로우의 반복이 될것이다.

 

슬랙은 각 람다함수의 실행 결과를 모니터링 하는데 사용할 것이다.

AIscript 함수는 매시간, k value 는 매일 한번씩 메세지를 수신할 예정

 

upbit access key 는 SSM Parameter Store 에 저장해서 호출해올 예정이다.

람다와 ec2 스크립트에 x-ray sdk 를 추가해서 전체 시스템을 추적 및 모니터링 할 예정이다.

 

 

2. 예상 요금

lambda function

lambda-AIscript-1
lambda-AIscript-2

 

매 시간 실행될 ai 활용 종가 예측 함수는 약 1분간 실행된다고 가정하고 4기가 메모리를 할당해줬을 때

프리티어 제외 월 0.03 달러라고 한다

 

lambda-kvalue-1
lambda-kvalue-1

당일 k 값을 구해서 db에 업데이트하고, ec2 instance 의 쉘스크립트를 실행시키는 역할을 할 함수는

하루에 한번 실행되고 실행 시간을 30초로 잡았을때 요금이 발생하지 않는다고 한다.

 

cloudformation

클라우드포메이션 자체는 무료라고 한다

 

 

dynamoDB

 

dynamoDB 는 k 값과 예상 종가 정도를 저장해서 매개변수용으로 사용할것이기 때문에 월 0.63 달러밖에 들지 않는다고 한다.

 

aws 강의에서 dynamoDB 배운김에 이렇게 한번 써먹어보고싶었다.

 

EC2 Instance

예약 인스턴스

예전에 t3a 로 예약 인스턴스를 구매해놨기 때문에 9월15일까지 월 2.15 달러면 충분하다

 

cloudwatch

lambda 함수에 각각 cloudwatch alarm 을 설정해줄것이기 때문에 2개면 월 1달러 라고 한다

 

 

3. 비교

 

그러면 월마다 드는 돈은 총

 

람다($0.03) + dynamoDB($0.63) + EC2($2.45) + cloudwatch($1)

= $4.11 (약 5,400원)

이다.

 

한달에 5천원 이상 이익이 나야만 하겠다.

 

기존 조코딩 영상대로 4gb 메모리를 위한 인스턴스를 사용했을때 한달 사용 요금은

사용량을 각각 50, 100 정도로 잡았을때 각각

$17.08 (22,239원) , $34.16 (44,478원) 이다.

서버리스로 동작하는게 훨씬 싸다