고등학생이 하는 유료 서비스로 돈을 좀 벌어서 많이 썼어요.

디스코드 유료 낭독봇을 운영하는 고3 학생입니다.개봉 2년 차에 매달 12k의 이윤이 있다.
https://bardbot.net
  • 최대 4개의 음성 채팅으로 읽을 수 있음
  • 가용성 99%
  • 웹 대시보드
  • 등의 기능을 제공합니다.Discord를 사용하는 사람이 있다면 반드시 도입해 주십시오.

    지역 사회 홍보


    풋소년 통과한 통과자, 미성년자에 도전하고 싶은 커뮤니티를 시작합니다!약 12명의 통과자와 채팅, 질문!부디🙏
    https://discord.gg/5Q5qneWUFZ

    왜 하는 거지?


    전(4년 전)께부터 무료 디스코드의 낭독봇이 존재했지만, 하나하나 이용 인원이 너무 많아 제한이 있거나 낭독 속도가 느려지는 문제 등이 있었다.그래서 유료 낭독 봇을 운영하기로 했다.

    요금 체계


    매달 500엔/20만 자의 예매표가 필요하다.Google claud text to speech를 사용했지만 이 비용은 1600엔/100만 자이기 때문에 20만 자이면 320엔 정도입니다.만약 거기에 서버비가 필요하다면, 나는 이렇게 하는 것이 비교적 타당하다고 생각한다.

    언어 개발


    Bot


    여러 Bot 간에 설정을 즉시 반영해야 하므로 내부적으로 Go+Echo의 API가 사용됩니다.또한 Bot 호스트는 Rust+Serenity를 사용합니다.
    애초 파이톤에 적혀 있었으나 파이톤의 디스커버드 API Wrapper 개발이 끝났고, 왜 하루 메모리 사용량이 5%가량 상승하는지에 대한 문제로 다시 썼다.
    이어 F#로 쓰려고 했지만 API Wrapper가 움직이지 않자 Rust 사용을 포기했다.

    Web


    Next.js+Firebase를 사용합니다.Firebase Firestore의 성격과 잘 어울리는 React를 쓰고 싶어서요.
    이전에는 Nuxt였습니다.js도 사용했지만 쓰기를 좋아하지 않아서 사용하지 않았습니다.

    데이터베이스


    데이터베이스에는 Firestore가 사용됩니다.Bot에서는 Redis 캐시를 사용합니다.
    클라우드 SQL도 고민했는데 비용이 너무 비싸서 포기했어요.

    신탁 통치


    Bot


    Bot의 호스트는 ECS on EC2(보존 인스턴스)를 사용합니다.지금은 T3micro 한 대만 운행하고 있지만 현금흐름이 증가할 가능성이 있기 때문에 메모리만 늘리고 싶어요...

    Web


    Vercel의 Pro 계획을 활용하고 있습니다.Hobby랑 뭐가 다른지 몰라서 Hobby를 뽑고 싶었는데 수익목적이라 어쩔 수 없었어요...

    요금 시스템


    Stripe를 사용하고 있습니다.Stripe Checkout을 사용하고 Billing Portal도 사용합니다.
    자신이 만든 것보다 쉽고 예쁜 사이트를 만들 수 있기 때문에 앞으로도 계속 이용하고 싶다.
    은행 송금은 매월 1일로 설정된다.
    Stripe의 Webhook을 Firebase Function으로 구축하여 유료 또는 취소 또는 지불이 실패할 때 Firestore를 자동으로 업데이트합니다.

    CI/CD


    Giithub Actions를 사용하여 Docker Image Build에서 ECR push, ECS Service 업데이트에 이르기까지
    ECS CLI의 Compoose mode를 활용하므로 json을 하나씩 업데이트할 필요가 없으므로 편리합니다.
    release.yml
    ecs-cli compose create --cluster-config bardconfig --ecs-profile bard
    aws ecs update-service --cluster MainBardCluster --service Main --task-definition ecs
    

    logging


    log의 수집은kibana+elasticsearch 자체 호스트로 수집합니다.오라클의 ARM 인스턴스(메모리 24GB, 4vCPU)는 무료로 사용하기 때문에 사용이 상당히 안정적이다.Oracle 스타일...

    읽은 문자 수와 메모리 사용률을 도형으로 표시합니다.

    지식 등


    Docker 컨테이너의 메모리 사용률을 알고 싶습니다!

    /sys/fs/cgroup/memory/memory.usage_in_bytes에 쓰여 있다.

    Giithub Action이 너무 길어요.


    Rust의 빌딩이 상당한 시간이 걸렸기 때문에 이용했다cargo-chef.
    로컬 테스트를 할 때buildkit의cache를 사용합니다.
    COPY Cargo.toml Cargo.lock ./
    COPY src ./src
    
    RUN --mount=type=cache,target=/usr/local/cargo/registry \
        --mount=type=cache,target=/usr/src/target \
        cargo install --path .
    
    FROM runner
    
    COPY --from=builder /usr/local/cargo/bin/bard .
    

    보조학교에 가입하는 사람이 아무리 해도 늘지 않는다


    나는 트위터 계정을 개설하고 note 기사를 써서 유도를 고려했다.
    또 다른 상당히 흔한 사람들의 기사에 PV를 적었다.
    https://note.com/kabikabichan/n/nb2fbb1a70b9f
    덕분에 지난 4일 1∼2명의 스텝으로 subsc를 추가했습니다.

    앞으로 하고 싶은 거.


    해외 발전


    해외 서버도 사용할 수 있도록 i18n 대응을 하고 싶습니다.

    새로운 기능의 개발


    수능이 끝날 때까지 보수적인 점검만 할 수 있기 때문에 대학수학능력시험이 끝나면 새로운 기능을 개발하려고 한다.

    toB용 Discord Bot 만들기


    최근 기업들이 디스코드(Discord)를 사용하는 경우가 많아졌지만, 기업을 대상으로 한 디스코드봇을 본 적이 없어 시장 개척 여부를 검토하고 있다.기업 대상 디스코드봇 사건이 있으면 꼭 연락 주세요.

    좋은 웹페이지 즐겨찾기