
이번 글에서는 LocalStack과 Github Actions를 연동한 결과에 대해서 정리해 보려 한다.
LocalStack에서는 Github Actions 연동 기능을 제공하지만, 여기서는 사용하지 않았다.
LocalStack Github Actions 연동 기능을 사용하기 위해서는 비용을 지급해야 하므로 최대한 돈을 쓰지 않고, 테스트 서버를 만드는 것이 목표인 나에게는 다른 방법이 필요했다.

돈이 부족한 학생의 서버비용 절감을 위한 고군분투
여러 번의 시행착오 끝에 LocalStack과 Github Actions를 연동하여 CI/CD를 구현하였다.
간단하게 특정 브랜치에 변경이 감지되면 Github Actions가 동작하여 빌드된 docker 이미지를 LocalStack의 EC2에 내려받고, docker-compose 파일을 전달받아 서버를 실행하는 환경을 구현하였다.
actions에서 zrok 명령어 설치 및 사용까지는 성공했으나 actions에서 제공하는 ubuntu 환경에서는 ttl 사용이 되지 않아 문제가 발생하였다
github actions에서 localstack EC2의 ssh를 외부에서 접속하는 형태를 구현해 보려 했으나 실패하였다.
github actions를 local에서 실행할 수 있으며, 이 방법으로 같은 로컬에서 실행중인 localstack에 접근할 수 있을 것 같아 이 방법으로 변경하였다.
ubuntu 환경에서 mac 환경으로 넘어오는 경우 actions 코드가 변경돼야 한다는 것을 발견하고, github actions 코드를 다시 작성하였다.
Ubuntu에서는 사용할 수 있었던 기능들이 mac에서는 사용 불가인 것들이 많아 직접 코드를 작성해 주었다.
self-hosted로 실행하는 경우 actions가 localstack EC2를 접근할 때, zrok을 통해서 접근하지 않고 바로 접근이 가능했다.
localstack ec2에서 docker를 설치하고, docker hub에서 받은 이미지를 실행하도록 구현하였다.
코드가 갱신되는 경우 이전에 실행한 docker container를 중지하도록 명령어를 작성해 주었는데, 변경될 때마다 localstack이 종료되는 문제가 있었다.
확인해 보니 docker로 실행된 localstack도 localstack ec2 내부에서 docker ps 명령어에 잡히며,
이 결과로 종료하게 작성한 코드로 인해 localstack이 종료되는 것이었다.
이전에 실행한 서버에 대한 docker container만 삭제하도록 변경해 주어 이 문제를 해결해 주었다.
시행착오 끝에 github dev 브랜치의 변경이 발생하고, docker image가 hub로 올라간 이후,
localstack에 있는 EC2에 반영되게 구성해 주었다. 여기에 실행된 서버가 정상적으로 동작하는 것을 확인하였고, 다른 팀원들이 사용할 수 있도록 zrok을 통해 구성해 주었다.
이렇게 하여 테스트용 서버의 비용을 줄이고, 서버와 클라이언트의 상호작용을 매번 진행하여 서버와 클라이언트 연결에서 발생하는 문제와 시간을 줄일 수 있도록 하려 한다.