AWS(Amazon Web Services)는 2019년 기준으로 전 세계 클라우드 인프라 시장의 33%를 차지하는 업계의 리더입니다. 2020년 1월 현재, AWS는 컴퓨팅, 스토리지, 데이터베이스, 분석, 네트워킹, 모바일, 개발자 도구, 관리 도구, IoT, 보안 및 엔터프라이즈 애플리케이션을 포함하여 160개에 이르는 클라우드 기반의 제품을 전 세계에 제공하고 있습니다. 스타트업, 대기업 및 정부 기관을 포함한 수백만 고객사들이 AWS의 클라우드 서비스를 이용하여 사업을 강화해 나가고 있습니다.
개발 도구를 통해 클라우드의 활용도를 크게 향상할 수 있으며, 조직은 강력한 클라우드 컴퓨팅의 이점을 활용하기 위해 클라우드 네이티브 애플리케이션 개발방식을 채택하고 있습니다. 클라우드 네이티브 기술을 사용하는 조직은 클라우드 서비스를 무한정 개발하고 배포할 수 있습니다. 반면, 각기 다른 언어로 개발되어 별도의 툴을 통해 배포되는 여러 마이크로서비스를 관리하는 소규모 조직들은 정보의 고립(silo)에 이르게 됩니다.
툴 체인(Tool Chain)의 복잡성은 오늘날 클라우드 네이티브 개발을 수행하는 DevOps 팀들의 공통 화두입니다. Forrester가 IT 전문가들을 대상으로 2019년에 실시한 설문조사에서, 많은 소프트웨어 개발팀이 여러 도구를 관리하고 통합하는 데 어려움을 겪고 있음을 토로했습니다. AWS 서비스를 활용하기 위해서, 개발팀은 코드 배포를 위해 5가지, 혹은 그 이상의 도구를 사용해야 할 수 있습니다. 그런 다음, 이러한 도구를 관리해야 합니다. 개발자는 새로운 혁신이나 개발보다는, 복잡한 툴 체인을 관리하는 데 많은 시간을 소모하게 됩니다.
AWS는 스토리지, 네트워킹, 서버 리스(serverless)에 이르기까지 모든 것을 한 곳에서 제공하는 올인원 클라우드 서비스이며, 이로 인해 많은 조직이 AWS를 사용하고 있습니다. AWS는 포괄적인 서비스로, 고객들은 다음과 같은 이점들을 누릴 수 있습니다.
- 간단함: 모든 클라우드 데이터를 한 곳에서 관리.
- 편리함: 필요한 모든 것을 구비하고 있음.
- 신뢰성: 우리의 솔루션을 믿고 맡길 수 있음.
- 사용의 편의성: 여러 클라우드 서비스를 사용하기 위한 교육을 받을 필요가 없음.
심플한 클라우드 운영을 위해 AWS에 올인하는 조직도 있지만, AWS가 워낙 방대한 클라우드 서비스를 제공하기 때문에 효율적인 기능 사용에는 한계가 있을 수 있습니다.
DevOps 도구를 사용하면, 이러한 올인원 전략을 취함과 동시에 기능적인 효율성 또한 만족시킬 수 있습니다. DevOps 팀은 개별적인 툴을 통합하고 관리하는 대신, GitLab 하나만 사용하여 단일 통합 환경에서 소프트웨어 개발 수명 주기 전체를 관리할 수 있습니다.
GitLab에서 AWS 사용하기
GitLab과 여타 다른 DevOps 애플리케이션들의 차이점은, 단일 인터페이스에서 소프트웨어 전체 개발 수명 주기를 관리할 수 있어 복잡한 툴 체인이 필요 없다는 것입니다. GitLab CI/CD를 사용하면 모든 AWS 서비스에 맞춤화된 배포가 가능합니다. 이 포스트에서는 GitLab과 AWS의 5가지 인기 서비스인 Lambda, Fargate, EKS, ECS 및 EC2가 어떻게 통합되는지 살펴봅니다.