가장 적절한 구조 또는 솔루션 식별

요구사항에 가장 적합한 참조 아키텍처(RA) 또는 솔루션을 식별하려면 일련의 평가 요소(또는 응력자)를 고려하십시오. 다음 절에서는 고려해야 할 요소에 대한 정보를 제공합니다.

각 요소에 대해 아키텍처 또는 솔루션이 해당 요소를 지원하는지 여부를 나타냅니다. 필요한 경우 각 요소에 숫자 점수를 제공하여 더 미묘한 점으로 만들 수 있습니다. 다음 권장사항을 사용하여 정보 및 결정 매트릭스를 사용할 수 있습니다.

  • 원하는 답변과 일치하는 열을 추적합니다.
  • 결정 매트릭스를 사용하여 각 평가 요소와 요구사항을 가장 잘 충족하는 RA 또는 솔루션을 비교합니다.
  • 다른 요소보다 중요한 요소에 가중치를 추가합니다.

다양한 평가 요인 고려

각 평가 요소를 고려한 다음 각 아키텍처 및 솔루션과 비교하여 요구 사항에 가장 적합한 평가 요소를 결정합니다.

컨테이너, VM(가상 시스템) 또는 전문가

Kubernetes와 같은 컨테이너 통합관리 환경 내의 컨테이너에 프로세스를 배포하여 더 많은 컴퓨팅 성능을 요구하는 프로세스의 리소스를 효율적으로 확장할 수 있습니다. 단위 테스트 및 정적 코드 분석과 같은 작업은 이러한 이점을 활용할 수 있습니다. 컨테이너 사용의 단점은 엔드투엔드 구성의 복잡성이 증가한다는 것입니다. 팀은 Kubernetes와 같은 컨테이너 통합관리 툴을 사용하는 방법을 알고 있어야 합니다. 또한 컨테이너를 사용하면 컨테이너가 삭제될 때 실수로 일시적 종속성 또는 이전 상태 데이터를 선택하지 못하도록 할 수 있습니다.

단일 VM을 구축하여 파이프라인의 모든 단계를 처리할 수 있으므로 VM을 사용하는 것이 더 간편합니다. 컨테이너는 본질적으로 모놀리식입니다. 또한 VM 접근 방식은 개발자 호스팅을 허용하는 것과 같은 문제를 완화하고 Windows와 Linux 호스트의 사용 문제를 방지합니다.

일부 전문 시나리오에서는 빌드 프로세스가 서비스에 대한 아티팩트를 준비 및 배포하는 PaaS 또는 SaaS 제품만 지원합니다. 범용 툴을 사용하여 이를 통합관리할 수 있습니다. 경우에 따라 요구 사항에 맞는 도구를 사용하는 것이 더 유용할 수 있습니다. 예를 들어 Oracle Visual Builder Studio는 Visual Builder와 관련된 솔루션을 위해 설계되었습니다.

오픈 소스/타사 제품이 있는 OCI Native를 사용한 파이프라인 통합관리

Jenkins와 같은 오픈 소스 툴을 포함하여 도메인 전용 또는 매우 커스터마이징 가능한 툴을 사용하면 OCI 네이티브 솔루션을 사용하는 것보다 실행 중에 구축 프로세스를 더 자유롭게 수행할 수 있습니다. OCI DevOps와 같은 툴은 정기적으로 새로운 기능을 릴리스합니다. 그러나 이러한 유연성은 일반적인 파이프라인을 실행하는 경우에도 배포, 패치 적용 및 모니터링과 같은 더 많은 프로세스 단계를 관리하는 데 비용이 듭니다.

표준화된 배치 저장소 또는 특수 제품 저장소

네이티브 서비스는 OCI Git, GitLab 또는 GitHub와 같은 산업 표준 서비스 및 유사한 툴을 사용하여 구성을 관리할 때 요구사항을 지원합니다. CI/CD 프로세스는 부분적으로 통합된 레거시 저장소로 제한될 수 있습니다. 기존 저장소에서 CI/CD 프로세스를 사용할 수 있도록 파이프라인을 크게 변경해야 할 수도 있습니다.

산업 표준 구성 관리 또는 레거시 도구

클라우드 제공 서비스를 사용하는 경우 일반적으로 이 서비스는 Git 및 SVN과 같은 CM(구성 관리) 시스템을 사용하는 산업 표준 솔루션만 지원합니다. 이러한 서비스 제공업체는 공급업체 자체 제품에 필요한 전문 구성 관리 메커니즘을 지원할 수도 있습니다. 레거시 또는 틈새 CM 시스템을 사용해야 하는 경우 CM 시스템 공급자가 지원하는 타사 솔루션을 고려해야 할 수 있습니다. 예를 들어 CVS를 레거시 솔루션으로 지원하려면 사용자가 타사 도구를 사용하여 구성을 관리해야 할 수 있습니다.

멀티클라우드 또는 단일 클라우드 배포

동일한 핵심 솔루션을 여러 클라우드에 배포하면 고려해야 할 복잡성이 추가될 수 있습니다. 예를 들어 배포 프로세스가 Terraform 서비스에 통합된 경우 각 클라우드 제공업체는 다양한 Terraform 제공업체의 차이를 고려하는 배포 프로세스를 갖추어야 합니다. 다양한 이미지를 생성해야 하므로 Docker 이미지에 대한 대상 칩셋과 같은 미묘한 고려 사항이 필요할 수 있습니다.

보안을 강화하기 위해 외부 배치 솔루션에 대해 배치 대상을 표시하지 않도록 선택할 수 있습니다. 예를 들어, Oracle Container Engine for Kubernetes(OKE) 및 Azure Kubernetes(AKE)에 배치하는 경우 GitHub를 사용하여 공통 코드를 보관하고 GitHub 작업을 사용하여 컨테이너 빌드를 조정합니다. 그러나 AKS 및 OKE를 GitHub Actions에 직접 노출하지 않도록 선택할 수 있습니다. 대신 Azure 및 OCI가 포함된 다단계 솔루션을 사용하여 배포 통합관리를 제공하고 지속적인 빌드 프로세스 또는 코어 코드에 GitHub를 사용하십시오.

코드형 인프라(IaC)가 배포 프로세스의 일부인 경우 다단계 솔루션을 고려해 보십시오. 이를 통해 각 환경마다 컴퓨트, 스토리지 및 관리 서비스를 프로비저닝하기 위한 서로 다른 IaC 구성을 사용할 수 있습니다. Kubernetes를 사용하면 이러한 문제를 제한하거나 제거할 수 있습니다.

프로세스 커스터마이제이션 또는 비스포크 프로세스

특수 프로세스 또는 틈새 프로세스가 필요한 경우 빌드 파이프라인을 지원하는 도구가 사용자정의 구성에 대한 확장을 허용해야 합니다. 자신의 맞춤형 프로세스를 구축하려면 더 많은 노력이 필요합니다. 향후 변경으로 인해 사용자 정의가 작동하지 않을 수 있는 위험성을 고려하고 평가해야 합니다.

확장 가능성

개발 워크로드는 근무일 동안 공통 추세와 같은 요인으로 인해 변동될 수 있습니다. 예를 들어, CI/CD 프로세스를 트리거하는 당일 종료 활동을 마무리하는 커밋은 작업일 종료 시 작업량이 증가합니다. 프로젝트가 구축, 릴리스 및 배포의 라이프사이클 동안 진행됨에 따라 빌드 인프라 수요가 증가합니다. 사소한 문제는 릴리스/스프린트 주기가 끝날 때 해결되므로 작은 변경에 대한 요청 증가 패턴이 있습니다.

의사 결정 매트릭스 검토

아키텍처 및 솔루션은 미묘한 차이가 있는 위치에 따라 공통 수(예: 1a, 1b 및 1c)로 그룹화됩니다. 예를 들어 CI/CD 솔루션용 단일 노드 또는 다른 툴링 구성을 사용하는 동일한 솔루션은 솔루션이 더 큰 규모로 작동할 수 있음을 나타냅니다. 각 그룹화는 결정 매트릭스의 열 머리글이며 각 요소는 행 머리글입니다. 테이블 내의 콜아웃(예: 1)은 추가 정보를 제공합니다.

다음 결정 매트릭스는 비즈니스 요구에 적합한 항목을 식별할 수 있도록 아키텍처와 솔루션 간의 변형을 나타냅니다.

계수 1. Jenkins 조정 2. GitLab 3. 오치 DevOps 4. GitHub 작업 5. 모던 앱 전략 6. 모바일 허브 7. 봇
컨테이너, VM(가상 시스템) 또는 전문가

VM 및 컨테이너

(제공된 솔루션은 VM을 대상으로 함)

VM 또는 컨테이너 VM 및 컨테이너 VM 및 컨테이너 VM 및 컨테이너 전문가 전문가
OCI 네이티브 또는 오픈 소스/타사 제품으로 관리되지 않는 파이프라인 통합관리 아닙니다 아닙니다 아니요(Oracle Dev Cloud) 아닙니다
표준화된 배포 저장소 1,3 1 아닙니다 아니오(RA 구현에서는 가능하지만 가능함) 1 아닙니다 아닙니다
지원되는 구성 관리 저장소 GIT, SVN 등 GIT GIT GIT GIT GIT GIT
멀티클라우드 또는 단일 클라우드 배포 단일2,3 단일 또는 다중 클라우드 단일2 단일 또는 다중 클라우드 단일2 단일 아닙니다
프로세스 사용자 정의 또는 맞춤형 프로세스 아닙니다 제한됨
확장성

1a - 아니요

1b - 예

아닙니다 아닙니다

표 각주

참고:

  • 1 OCIR은 표준과 호환됩니다.
  • 2 OCI를 사용하여 다른 환경에서 프로세스를 구동합니다. 그러나 다른 환경의 서비스에 대한 바람직하지 않은 노출의 문제를 제기합니다.
  • 3 옵션 1a의 배포 단계에서 OCI DevOps를 사용하므로 해당 단계를 단일 클라우드로 제한합니다.