본문으로 건너뛰기
DEVKBS
작업 원장
009Vstro2023.11

TradingBot 어드민

돈이 자동으로 움직이는 화면에 필요한 안전장치

기간
2023.11
분류
백오피스
역할
프론트엔드 단독
구성
사내 프로젝트

화면 비공개

거래소 API 키와 실제 자산 정보가 노출되는 사내 운영 화면이라 공개하지 않습니다.

01개요

거래소 API를 통해 정해진 조건으로 주문을 반복 실행하는 봇의 관리자 화면을 만들었습니다. 작업 기간은 2주였습니다.

이 화면은 버튼 하나가 실제 자산을 움직인다는 점이 달랐습니다. 일반적인 관리자 화면에서는 잘못 눌러도 데이터를 되돌리면 되지만, 여기서는 체결된 주문을 되돌릴 수 없습니다. 그래서 기능을 많이 넣는 것보다 실수로 실행되지 않게 만드는 게 설계의 중심이었습니다.

인증도 평소보다 무겁게 잡았습니다. 거래소 API 키가 걸린 화면이라 접근 경로 자체를 좁혀야 했습니다.

02기술 결정

문제, 선택, 결과 순서로 적었습니다.

  1. 결정 01

    되돌릴 수 없는 동작은 한 단계 더 막는다

    문제
    주문 실행과 취소가 같은 화면에 있고, 둘 다 버튼 한 번이면 끝납니다. 목록을 훑다가 잘못 누르면 그대로 체결됩니다.
    선택
    실행 계열 동작에는 확인 단계를 두고, 그 단계에서 지금 무엇이 실행되는지(수량·간격·대상)를 다시 문장으로 보여줬습니다. 취소처럼 되돌릴 수 있는 동작은 그대로 한 번에 되게 뒀습니다.
    결과
    실수로 실행되는 경로가 없어졌습니다. 모든 동작에 확인창을 붙이면 아무도 읽지 않게 되니, 되돌릴 수 없는 동작에만 붙였습니다.
  2. 결정 02

    지금 봇이 돌고 있는지를 화면 맨 위에 둔다

    문제
    자동 매매는 사람이 보지 않는 동안에도 돌아갑니다. 관리 화면에 들어왔을 때 가장 먼저 알아야 하는 것은 목록이 아니라 '지금 돌고 있는가'인데, 그 정보가 표 안에 묻혀 있었습니다.
    선택
    동작 상태와 마지막 실행 시각을 화면 최상단에 고정해 항상 먼저 보이게 했습니다.
    결과
    화면을 열자마자 상태를 알 수 있게 됐습니다. 멈춰 있는 줄 모르고 기다리거나, 돌고 있는 줄 모르고 중복 실행하는 상황이 없어졌습니다.
  3. 결정 03

    인증은 직접 만들지 않는다

    문제
    2주짜리 일정에서 로그인 세션을 직접 구현하면, 기능을 만들 시간이 줄어들 뿐 아니라 검증되지 않은 인증 코드가 자산을 다루는 화면 앞에 서게 됩니다.
    선택
    검증된 인증 라이브러리를 도입해 세션 처리를 맡기고, 저는 접근 제어 규칙만 정의했습니다.
    결과
    일정 안에 기능을 끝낼 수 있었고, 인증에서 실수할 여지도 줄었습니다.

03주요 기능

  • 자동 매매 설정

    거래 간격과 조건을 지정해 봇의 동작 규칙을 등록.

  • 실행·취소 제어

    실행은 확인 단계를 거치고, 취소는 즉시 반영되도록 비대칭 설계.

  • 동작 상태 표시

    현재 가동 여부와 마지막 실행 시각을 화면 상단에 고정 노출.

  • 인증 기반 접근 제어

    NextAuth.js로 세션을 관리하고 화면 접근을 제한.

04회고

되돌릴 수 있는 화면과 없는 화면은 설계가 아예 다릅니다. 되돌릴 수 없는 동작에만 확인 단계를 두고 나머지는 가볍게 두는 방식은 나중에 금 거래 앱을 만들 때 그대로 다시 썼습니다.

2주 안에 끝낼 수 있었던 건 무엇을 직접 만들지 않을지를 먼저 정해 뒀기 때문입니다.