Hyunseok
Dev

메세지 서버를 작성해보자 - 발단 및 구성

2025-02-09

thisisnotfine THIS IS NOT FINE

발단

이놈의 서버들.. 방심 할 수 없다는 생각을 매우 하게 되었다.
이제 자취방을 옮기면서 서버가 2대 더 돌아갈텐데.
이건 SLA고 나발이고 로컬 서버인지라 모니터링이 필수적으로 동반된다.
물론 그냥 ping을 주기적으로 때리는 대시보드를 작성하면 되는 부분이지만..
그러면 재미가 없지 않은가 ? 로컬에서 직접 때릴 수 있게끔 작성해보려한다.

사용 기술

일단 nextjs는 무조건 들어간다. 이번에 tailwind v4도 맛깔나게 잘 뽑혔고 shadcn도 무조건 넣어줄 예정.
그리고 만드는 김에 SaaS로 만들어버릴 예정이라 (누가쓰겠지만은.. 그래도 해보고싶다) 인증부분도 추가해야하는데,
일단 better-auth를 사용하기로 결정. (auth.js도 괜찮은데 그냥 이놈을 쓰기로해보자)
백엔드에서는 messaging 서버를 구축해야하는데 .. 이걸 진짜 bun + mq(아무거나) + hono로 구현을 할지..
아니면 시중에 Golang으로 작성되어 검증된 ntfy 를 사용하냐.. 인데 이건 일단 ntfy로 사용해보고
고도화에 따라 직접 서버를 작성해서 사용해보고 속도 테스트를 거친 뒤 마이그레이션을 끝낼 것 같다.

구현 예상도

flow 대충 사진과 같이 간단하게 작성 할 것 같다.
그리 큰 기술이 들어가는 것도 아니고 애초에 많은 기술부터 시작하면 내가 질려서 프로젝트를 중간에 쉬는 경우가 대다수이니 ..
필요한 기능만 적당히 만들어주자

위의 사진을 조금더 풀어서 쓰자면 아래처럼 될 것같다.

  • Messaging서버로의 API

    • [DELETE] /push/사용자uuid/사용자채널id
      • 채널 삭제
    • [POST] /사용자uuid/create
      • 채널 생성
    • [POST] /push/사용자uuid/사용자채널id
      • 사용자에게 key값과 data를 받음
      • user-uuid의 key값과 비교 맞으면 data 전송
  • 홈페이지

    • 회원가입 / 로그인을 제공 (nextjs + better auth)
    • 로그인 후
      • 채널 확인 생성, 삭제기능 (channel은 random한 UUID 생성)
    • 고도화기능
      • date limit기능

간단하게 스펙서를 작성했으니 .. 다음 주 부터 시간날 때마다 구현을 진행해보자
아마 기나긴 시간이 될 것 같다..

메세지서버
Comments()