[토킹테일] 로그 확인이 너무 귀찮다

Choi Wontak·2025년 4월 21일

비바이빙

목록 보기
5/8
post-thumbnail

비바이빙 - 빠르게 개발하기

AI 시대에 맞추어 2주에 한 프로덕트를 만들어내는, 작지만 빠른 개발을 지향하는 프로젝트입니다.


배포한 서버의 로그를 확인하는 방식이 너무 귀찮다 (문제 인식 단계)

EC2로 서버를 배포하면서 가장 불편했던 점은 배포 이후에 있었다.
배포 이후에 서버의 로그를 확인하기 위해선,

  • key가 저장된 디렉토리로 이동
  • 터미널로 SSH 직접 접속
  • 컨테이너 ID 확인 & docker logs (도커의 경우)
  • nohup 백그라운드로 기록된 로그를 tail로 확인

노트북을 켜기도 어려운 상황에선 로그를 확인하는 단계가 꽤나 많고 복잡하다는 것을 느낀 적이 많았다ㅠㅠ

그래서 다른 다양한 방법을 알아봤는데,

AWS CloudWatch Logs
리소스를 모니터링하는 클라우드 서비스
다른 프로젝트에서 사용 중인데 그나마 제일 간단하지 않나 싶다.

  • 클라우드 서비스다 보니 비용적인 면에서 부담이 생길 수 있다.
  • CloudWatch Agent를 설치하고 설정하는 기술적 부담

웹훅 서비스
슬랙이나 디스코드의 웹훅 주소를 이용하는 방식
안 써보긴 했지만 방식을 좀 고쳐쓰면 괜찮아보이는 서비스

  • AWS Lambda나 SNS를 사용하거나, logback 코드를 작성해야 하는 부담이 있음.
  • 로그 추적을 위한 서비스는 아니기 때문에 다양한 기능을 제공하지 않고, 해당 방식을 위해 채널에 부담을 줄 가능성이 있음.

쿠버네티스 관련 툴
쿠버네티스 특성 상 여러 개의 컨테이너를 관리하면서 발생하는 로그를 Grafana와 Prometheus를 통해 시각화하는 방식인 듯하다.

  • 쿠버네티스에 대한 이해도가 필요
  • 설정이 복잡해 작은 서비스에서 사용하긴 부적합하다..

로그를 확인하기 위한 더 쉬운 방식은 없을까?


무엇이 필요할까 (기획 단계)

문제점

로그 확인을 위한 다양한 솔루션들이 있지만, 좀 복잡하다

해결방안

단순 로그 확인에 최적화 되어 있으면서도 적용이 어렵지 않은 솔루션을 제공하자!

구체화

  • 로그 확인에 최적화 되어 있어야 한다.

    • 사용자가 편하게 로그를 확인할 수 있도록 모바일 앱으로 제작한다.
    • 로그를 사용자 설정값 N분에 한 번 불러올 수 있어야 한다.
    • 불러온 로그에 사용자 설정 키워드 s가 포함되어 있다면, 사용자에게 알림을 보내야 한다.
  • 적용이 어렵지 않아야 한다.

    • 어떠한 서버든 최소한의 코드 추가로 바로 적용할 수 있어야 한다.
  • 적은 비용으로 제작한다. (얇은 지갑 문제)


어떻게 만들까? (설계 단계)

정리하자면

로그 확인과 알림에 중점을 둔 앱

단순한 디자인에 단순 알림을 지원하는 앱이다.

그만큼 구현 방식이 중요할 것 같은데 일단 앞서 세운 큰 틀의 기획을 토대로 구현 방식을 생각해 보았다.

  • 사용자가 편하게 로그를 확인할 수 있도록 모바일 앱으로 제작한다.

아이폰과 안드로이드 모두 적용 가능했으면 하기 때문에 크로스 플랫폼으로 개발하려고 한다.
이전 프로젝트를 리액트로 진행했으니 자연스럽게 리액트 네이티브로 하면 되지 않을까..?

  • 로그를 사용자 설정값 N분에 한 번 불러올 수 있어야 한다.

이건 사용자 별로 Spring Scheduler를 실행하면 될 것 같다..!
-> 아 근데 멀티 스레드 방식이라 사용자 별로 스레드를 만들면 서버에 부담될 것 같은데..
-> 캐시 메모리나 DB에 유저(서버) 정보를 넣어두고 Job Queue 기반으로 꺼내오면 되지 않을까?
해본 적은 없지만 이론적으론 가능해 보인다..!

  • 불러온 로그에 사용자 설정 키워드 s가 포함되어 있다면, 사용자에게 알림을 보내야 한다.

로그 내용을 String으로 받아와 String.indexOf()나 Pattern.matches()로 찾으면 되지 않을까.
속도나 성능 문제가 있다면 테스트 후 판단해보자.
로그를 불러오기만 하고 따로 저장할 필요는 없을 것 같다.

  • 어떠한 서버든 최소한의 코드 추가로 바로 적용할 수 있어야 한다.

도커든 스프링이든 혹은 다른 유형의 서버든.. 모두가 편리하게 적용할 수 있었으면 좋겠다.
생각 중인 방식은,

  • 백그라운드로 기록된 로그를 txt로 기록
    (txt 파일 기록에 대한 규칙은 추가가 필요할 것 같다)
  • response로 해당 txt 파일을 전달하는 API 코드 작성
  • 앱에서 해당 서버의 URI와, 필요하다면 접근시 필요한 Access Token을 입력
  • 서버에서 해당 URI에 GET 요청으로 로그 파일 수령

+) 로그 발생 시 우리 서버로 POST 요청하면 바로 알림 기능도 넣을 수 있겠다.
=> 이건 서버 부하가 있을 수 있으니 유료 버전으로 낼까..?


만들어보자! (개발 단계)

초기 디자인 단계

이름은 Talking Tail로 정했다.
(Talking Heads 오마주 맞다)
tail로 파일 확인하는 것을 talk하듯 알려준다는..그런..
아무튼 로고도 GPT로 만들어보았다.

꼬리가 강조된 고양이를 그려달라고 했다.
귀엽게 잘 나온 것 같다!

이후 여러모로 추가되겠지만, 디자인 초안도 일단 완성..!
피그마 디자인을 몇 번 안해봐서 조금 엉성하지만..ㅠㅠ 나중에 고쳐보자


후기

개인적으로 로그에 확인에 대한 니즈를 느껴서 개발을 결심했다.
1인 개발이라 어쩔 수는 없지만 가능하면 디자인은 디자이너에게..

이번에도 우여곡절은 많이 있겠지만.. 화이팅!!

profile
백엔드 주니어 주니어 개발자

0개의 댓글