소개
안녕하세요. 퀘스 백엔드 팀의 한동준입니다. 퀘스 백엔드 팀에서 흩어져 있는 AWS 리소스를 한 곳으로 모으고 코드 레벨에서 관리하기 위해 위해 Serverless framework을 도입한 경험을 공유하고자 합니다.
1. 도입 배경
퀘스 백엔드 팀에서 서비스하고 있는 온라인 투표 픽미에서는 여러 비동기 및 배치 처리를 AWS 람다를 통해 처리하고 있습니다. 초기에는 람다 함수 또는 AWS 리소스 개수가 적었지만, 점점 서비스가 커져가면서 아래와 같은 불편함이 생겼습니다.
1.1 배포가 불편합니다.
매번 새로운 기능을 추가하기 위해서는 웹 콘솔에서 새로운 함수를 생성하고 트리거를 구성하고 설정하는 것들이 매우 번거롭습니다. 또한 운영 및 테스트 환경을 배포해야 하는 데 이를 사람이 수동으로 하게 되면 일관성 있게 배포하는 게 어렵습니다.
1.2 테스트 및 개발 환경이 불편 합니다.
AWS 람다 같은 경우에는 웹 콘솔에서 파일을 업로드하고 테스트하는 과정이 느리고 불편합니다. 또한 디버그 환경이 없어 문제를 찾아 내기가 어렵습니다.
1.3 리소스를 추가/수정 했을 때 변경 사항 공유가 어렵다
새로운 리소스를 추가 또는 변경하게 됐을 때 동료에게 매번 구두로 공유하는 것이 불편하고 제대로 전달이 안 될 경우가 많습니다. 또한 퀘스 백엔드 팀 개발 프로세스에는 코드 리뷰를 통과해야만 배포 가능한 프로세스인데 웹 콘솔에서는 코드 리뷰를 하고 배포하는 것이 어려웠습니다.
이러한 불편한 점을 해결하고자 AWS 리소스를 코드 수준에서 관리하고자 하여 sevrerless framework를 도입하게 되었습니다.
2. Serverless framework을 선택한 이유
먼저 Serverless framework는 AWS Lambda 같은 서버리스 컴퓨팅이나 여러 리소스들을 구축하고 배포하는 데 사용되는 오픈 소스 프레임워크입니다. 또한 AWS뿐만 아니라 다른 퍼블릭 클라우드 플랫폼(GCP, Azure)도 지원하기 때문에 특정 플랫폼에 종속적이지 않습니다.
이와 비슷한 플랫폼으로 AWS SAM 사용을 고려했으나, Serverless framework보다 어렵고 복잡하게 느껴졌습니다. 또한 AWS 플랫폼에 종속적이어야 하기 때문에 유연한 Serverless framework를 도입하게 됐습니다. 또한 Serverless framework는 강력한 생태계와 커뮤니티가 이뤄져 있고, 풍부한 예제가 많기 때문에 사용성 측면에서 괜찮다고 판단했습니다.
3. 도입 결과 및 경험
Serverless framework를 도입한 이후 다음과 같은 결과와 경험을 얻을 수 있었습니다.
3.1 효율적인 배포
새로운 기능을 추가할 때 웹 콘솔에서 번거로운 작업을 수행하지 않고도 코드 작성과 명령어 실행만으로 자동적인 배포가 가능했습니다. 이를 통해 운영 및 테스트 환경을 일관성 있게 배포하는 것이 용이해졌습니다.
3.2 향상된 테스트 및 개발 환경
로컬 환경에서 개발과 테스트를 진행할 수 있게 되어 새로운 리소스를 추가하거나 변경하는 비용이 줄었습니다.
3.3 원활한 리소스 변경 사항 공유
리소스를 추가하거나 수정할 때 변경 사항을 코드 리뷰를 통해 동료들과 공유할 수 있게 되었습니다. 이전에는 구두로 전달하거나 메모를 남기는 방식으로 변경 사항을 공유해야 했는데, 하나의 저장소에서 관리할 수 있게 되어 기존 개발 프로세스 방식을 유지한 채 작업이 가능했습니다.
마무리
서버리스를 도입하는데 난이도가 어려울 것이라고 생각하신다면 공식 github example과 공식 문서를 참조하신다면 크게 어렵지 않게 적용하실 수 있을 거라 생각합니다. 또한 Serverless framework와 애플리케이션 로직 간의 결합도가 낮기 때문에 기존 프로젝트에 바로 적용하는데 어려움이 없을 거라 생각합니다. 감사합니다.