네, 일단은 구현은 했습니다… 이제 봇을 만들어야지…
디스코드 봇을 필두로 나의 ECS - EC2 CI/CD를 구현했다 - ccppoo/discord-bot.
유튜브에 AWS를 이용한 디스코드 봇 CI/CD 데모 영상이 없어 의아했다.
그래서 결국 Flask 애플리케이션을 CI/CD 구현하는 영상을 응용해서 디스코드 봇으로 승화시켰다.
설계한 플로우 차트는 다음과 같다.
RDS 연결은 TODO...
이전에 포스팅한 디스코드 서버에서 webhook으로 메세지를 보내는 봇도 있는데
해당 글 -> 브랜치 전략 도입기-1, 브랜치 전략 도입기-2
ECR에서 이미지를 가져와 lambda에서 실행하는 구조다.
그래서 이 둘을 연결하기 위해서 AWS RDS를 이어 붙이는 과정만이 남아있다.
즉, 현재는 봇이 돌아가는데 연결할 데이터 베이스가 없는 상태다(깡통).
유튜브에 강의 영상을..?
강의를 진행하면서 동시에 유튜브에 영상을 올리려고 계획은 했지만,
RDS를 이어 붙이는 것까지 구현하기 이전에는 의미가 있나 고민을 하느라 결정하지 못했다.
다른 사람들이 디스코드 봇을 만든 것을 보면서 원격은 아니더라도 로컬 환경에서 데이터베이스를 운영하는 것을 보아
영상으로 찍어낼려면 최소한 docker-compose를 통해 다른 DB 이미지를 호출하는 형태여야
그나마 좋은 호응을 이끌어 낼 수 있지 않을까 싶다…
그래도 docker-compose를 통해서 올리는 DB는 AWS RDS와 연결하는 것과 달리 난이도가 쉬울 것으로 예상되고
유튜브에 널려 있는 Flask나 Django ECS 예시 영상을 참조할 수 있으므로 딱히 난관은 없어 보인다.
최종적으로 구현하려는 webhook을 처리하는 람다와 컨테이너에서 동작하는 discord bot user(봇 서버)의 구조 형태는 다음 플로우 차트와 같다.
RDS를 참조하기 위한(glue 역할을 하는) 람다 함수 2개와 DB를 업데이트하기 위한 API gw를 통해 접속할 수 있는 관리자 전용 람다 함수를 생각중이다.
디스코드 봇을 이렇게까지 만드는 사람이 나 말고도 분명히 있을 텐데 레퍼런스를 찾지를 못해 나름 혼자 고민해서 생각해낸 결과물이 이거다.
지금까지는 파란색 부분과, 초록색 부분을 구현해 놓은 상태다.
webhook으로 동작하는 봇과 ECS 상에서 동작하는 컨테이너(봇 서버)를 람다로 연결시켜야하는 과제가 남아 있지만,
그래도 지금까지 해온 난이도에 비하면 쉬울 것으로 예상된다(…)