안녕하세요. 박세계입니다.
본 글은 개발자를 위한 글임을 미리 밝힙니다.
회사에서 최근 신규 서비스를 오픈했는데, 서비스 안정화 작업 덕분에 바쁜 나날을 보내고 있습니다. 좀 한가해질거라 생각했는데 경기도 오산이었습니다.
서비스는 모바일 앱이며, 데이터베이스 튜닝이 최적화 되지 않아 API 서버가 자주 오류를 내며 중단되는 상황입니다. 몇 분 간 중단이 있을때마다 구글 플레이 스토어에 득달같이 낮은 평점과 더불어 악플이 달리는거 보면 서비스가 맘에 들기는 드는거 같아 다행입니다. 알다시피 진짜 무서운건 무플입니다.
급한 불부터 꺼야하니 일단은 서비스가 죽을때마다 과감히 데이터베이스를 재시작 하고 있는데, 상세 튜닝은 그렇다 치더라도 사용자 입장에서 서비스가 중단되는 시점을 최대한 빨리 알아내는게 당장 숙제였습니다.
문제가 있는 경우, 물리적인 서버와 API 자체는 여전히 접속 가능한 상태이며, API Endpoint 호출시 정상적인 값을 리턴하지 못하는 상황입니다. 즉, 웹 사이트 모니터링만으로는 충분하지 않습니다. API Endpoint 중 하나를 올바른 파라미터 값과 함께 호출하여 정상적인 값을 리턴하는지 확인해야 합니다.
다음과 같이 모니터링용 스케줄링을 설정 했으며, 뭐 하나 때문에 하루종일 삽질을 한 터라 기록용으로 남깁니다. OS는 Windows 기준입니다.
실제 생성한 파일에서 URL과 파라미터만 변경했습니다.
$params = @{
a = "abc"
b = "def"
c = 1
d = 2
}
$userId = (Invoke-RestMethod -Method POST -Uri https://api.myapp.com/token -Body $params).UserId
if($userId -gt 0) {
Invoke-RestMethod -Method GET -Uri https://hchk.io/81263c6d-5033-44fe-b649-5540176ba314
}
배치작업 모니터링 사이트에 대해서는 기존에 쓴 다음글 참조 바랍니다.
Telegram 알림이 진짜 대박인데, 원하면 텔레그램 그룹을 만들어서 구성원 모두가 알림을 받을 수 있도록 설정도 가능합니다.
PowerShell(.ps1) 파일 실행 구문입니다.
C:\>powershell "ps1 파일 전체 경로"
스케줄링 설정은 기본인 만큼 별도 설명은 생략하겠습니다.
이렇게 해놓으면 사용자 입장에서 서비스 접속에 문제가 있는경우 1분내로 바로 알 수 있습니다. 최대 1분이니 거의 실시간이라고 보면 됩니다.
지속적인 튜닝과는 별개로 문제 발생시 즉각 대응이 가능하니 한결 마음이 편해졌습니다.
읽어주셔서 감사합니다.