팀
AWS에서는 CI/CD 환경을 구현하기 위해 애플리케이션 팀, 인프라 팀, 도구 팀 등 세 개의 개발자 팀을 구성할 것을 권장합니다(다음 그림 참조). 이 조직은 빠르게 변화하는 스타트업, 대기업 및 Amazon 자체에서 개발되고 적용된 일련의 모범 사례를 나타냅니다. 팀은 피자 두 판 규모의 그룹 또는 약 10~12명보다 크지 않아야 합니다. 이는 그룹 규모가 증가하고 소통이 늘어남에 따라 의미있는 대화가 한계에 도달한다는 통신 규칙을 따릅니다.
애플리케이션, 인프라 및 도구 팀
애플리케이션 팀
애플리케이션 팀에서 애플리케이션을 생성합니다. 애플리케이션 개발자는 백로그, 스토리 및 단위 테스트를 소유하며 지정된 애플리케이션 대상을 기반으로 기능을 개발합니다. 이 팀의 조직 목표는 개발자들이 비핵심 애플리케이션 작업에 소비하는 시간을 최소화하는 것입니다.
애플리케이션 팀은 애플리케이션 언어로 함수 프로그래밍 기술을 보유하는 것 외에도 플랫폼 기술과 시스템 구성에 대한 이해도 갖추어야 합니다. 이를 통해 기능 개발 및 애플리케이션 강화에만 집중할 수 있습니다.
인프라 팀
인프라 팀은 애플리케이션을 실행하는 데 필요한 인프라를 만들고 구성하는 코드를 작성합니다. 이 팀은 AWS CloudFormation과(와) 같은 기본 AWS 도구나 Chef, Puppet 또는 Ansible과 같은 일반 도구를 사용할 수 있습니다. 인프라 팀은 필요한 리소스를 지정할 책임이 있으며 애플리케이션 팀과 긴밀하게 협력합니다. 인프라 팀은 소규모 애플리케이션을 위해 한두 명으로만 구성될 수 있습니다.
팀은 AWS CloudFormation 또는 HashiCorp Terraform과 같은 인프라 프로비저닝 방법에 대한 기술을 갖추어야 합니다. 또한 팀은 Chef, Ansible, Puppet 또는 Salt와 같은 도구를 사용하여 구성 자동화 기술을 개발해야 합니다.
도구 팀
도구 팀은 CI/CD 파이프라인을 구축하고 관리합니다. 파이프라인을 구성하는 인프라와 도구를 담당합니다. 피자 두 판 규모의 팀에 속하지는 않지만, 조직의 애플리케이션 및 인프라 팀에서 사용하는 도구를 만듭니다. 조직은 완성도가 높은 애플리케이션 및 인프라 팀보다 도구 팀이 한 발 앞서 나갈 수 있도록 도구 팀을 지속적으로 발전시켜야 합니다.
도구 팀은 CI/CD 파이프라인의 모든 부분을 구축하고 통합하는 데 능숙해야 합니다. 여기에는 소스 제어 리포지토리, 워크플로 엔진, 빌드 환경, 테스트 프레임워크 및 아티팩트 리포지토리의 구축이 포함됩니다. 이 팀은 Jenkins, GitHub, Artifactory, TeamCity 및 기타 유사한 도구와 함께 AWS CodeStar, AWS CodePipeline, AWS CodeCommit, AWS CodeDeploy, AWS CodeBuild 및 AWS CodeArtifact 등의 소프트웨어를 구현할 수 있습니다. 일부 조직에서는 이를 DevOps 팀이라고 부를 수 있지만, AWS은(는) 이를 권장하지 않고 대신 DevOps를 소프트웨어 제공의 인력, 프로세스 및 도구의 총합으로 간주할 것을 권장합니다.