
새로운 배포 프로세스 과정
코드너리 | 2022. 03. 06
CI/CD
사용된 기술:





배포 환경
- 먼저 뱅크샐러드의 기본적인 Tech Stack은 다음과 같습니다. 뱅크샐러드는 Version Control System으로 Git을 사용하며 이를 GitHub를 통해 관리합니다. Microservice Architecture (MSA)를 적용하여 비즈니스 도메인별로 여러 서비스를 운영하고 있습니다. 모든 서비스는 Docker로 containerized 되고, 모든 Docker image는 Docker Hub를 통해 관리됩니다. 이러한 수십 개의 서비스와 container를 Kubernetes 환경에서 운영하고 있습니다. 또한 개발 조직을 비롯한 전사 커뮤니케이션 도구로써 Slack을 사용하고 있습니다.
Github Deployments 사용 이유
- GitHub의 Deployments 기능은 특정 branch, SHA 혹은 tag에 대하여 배포 요청을 생성하는 기능입니다. Deployment 이벤트가 발생하면 배포를 위한 준비 단계를 거치고 실제 배포를 수행합니다. 이를 통해 모든 배포에 대한 성공/실패 여부, 요청 시각, 커밋, 배포 환경, 누가 배포를 수행했는지 등의 모든 정보가 GitHub에 기록됩니다. 이것을 database로 활용하면 빠르게 개발할 수 있다고 판단하였고, 추후 별도의 DB가 필요할 때 간단히 migration 가능하므로 확장성에도 문제가 없다고 판단했습니다.
- GitHub Deployments를 사용하면서 자연스럽게 travis CI 대신 GitHub Actions를 사용하게 되었습니다. GitHub Actions CD Pipeline을 GitHub으로 관리하게 되면서 자연스럽게 CI 또한 GitHub를 사용하게 되었습니다. 앞서 말했듯이 개발 조직 내에서 Pull Request 문화가 매우 활성화되어 있는 데다가, 기존에 travis CI 등으로 분산되어 있던 관리 포인트가 GitHub 하나로 일원화되면서 개발자의 편의성이 더욱 증대되었습니다. 또한 GitHub Enterprise 플랜을 사용하고 있어 travis CI보다 동시에 더 많은 잡을 수행할 수 있어 서비스가 많아져도 서로 blocking 없이 진행할 수 있었습니다.