이 글은 윈도우 서버의 비용을 어떻게 줄일 수 있냐가 핵심이다. 윈도우 서버 활용 자체는 다른 글들이 설명 훨씬 잘 할 것.
라즈베리 파이가 잔고장이 많고, windows 가 아니라서 카카오톡 활용이 번거로움.
그래서 ec2를 그냥저냥 쓰고 있었는데 비용이 너무 많이 나와 (월 6만원) 비용단축 아이디어를 내게 되었고, 성과가 꽤 괜찮아서 블로그에 공유함.
AWS EC2 t2.medium
autologon
을 설치 후 실행해준다.여기까지 해두면, 윈도우 서버를 껐다 켰을 시 자동으로 카카오톡이 실행되는 상태까지 완성된 것이다.
python3, pywinauto
를 활용하는게 정신건강에 좋다.
launch_kakaotalk() # 카카오톡이 자동으로 실행되긴 하는데, 창은 안뜨고 우측 하단 윈도우 트레이에 아이콘 형태로만 떠서, 카카오톡.exe 를 한번 클릭하는 형태의 코드가 필요하다
# 이때 로그인이 완료된 카카오톡 창이 나타나야 한다
data = get_data() # 원격 서버를 사용해서 데이터를 당겨오거나, 즉석에서 필요한 데이터를 만들 수도 있을 것이다. 윈도우 서버는 비싸기 때문에 데이터를 모으는 것은 별도 서버에서 처리하길 추천한다
open_kakaotalk_chatroom() # 글을 남길 채팅방을 찾는다. 잘 설명한 블로그가 많아서 생략
write_to_chatroom(data)
윈도우 작업 스케줄러를 사용하여 위 코드를 실행한다. 인터넷에 자료가 많다. (예시)
이 가이드 를 참고해서 windows 서버 종료하는 람다 하나, 스타트하는 람다 하나씩 만들면 된다.
부팅하고 카카오톡을 띄우고 스크립트를 실행하는 데까지 시간이 좀 걸릴 수 있으니, Start 후 4분 뒤에 Stop 하는 것을 추천한다. 더 디테일하게 하려면, 윈도우 인스턴스에서 자기를 죽여달라는 요청을 Lambda 에게 쏠 수도 있겠지만... 내 경우엔 오버엔지니어링이라고 판단하였다.
구체적인건 한 달 지나봐야 알겠지만 60분에 한번씩 실행한다고 가정하면,
기존 : 30일*24시간*60분 = 월 43200분
현재 : 30일*24시간*(1시간 1회 * 4분) = 월 2880분
2880/43200 = 0.066 = 7%
약 93퍼센트의 비용을 줄일 수 있었다. (다른 AWS 서비스 가격은 0에 수렴할 것이라서 제외)
2023-03-19 추가 :
50~60 달러에서 11달러로 줄어들었다.
4분 정도면 안정적으로 카카오톡 오픈 - 메시지 수령 - 카톡방에 전송 - 셧다운 할 수 있다는 것을 발견하고, EventBridge 를 이용해 아래와 같이 스케줄링했다.
START_EC2 : */30 23-11 ? * MON-FRI *
STOP_EC2 : 4,34 23-11 ? * MON-FRI *
UTC 기준으로 작성하였으므로, 한국시간 기준으로는 월요일부터 금요일까지 오전 8시부터 오후 8시까지 30분마다 4분씩 가동된다.
(근데 지금 보니... 화요일부터 토요일까지 돌고있겠구나,,, 수정하기 귀찮다...)
근데 의외로 비용 절감 폭이 그렇게까지 드라마틱하진 않네.
==> cost explorer 보고 이해함. ec2-other, 즉 EBS 같은 고정지출이 존재함. 고정 지출이 7 달러 정도인데, 이걸 빼고 계산해보면 얼추 잘 들어맞는 절감효과가 보임. 굿!