리눅스 패키지와 이미지

Tier: Free, Premium, Ultimate Offering: Self-managed

아래에서는 GitLab이 패키지와 번들된 종속성을 포함한 Docker 이미지를 제공하는 이유에 대한 기본 정보를 찾을 수 있습니다.

이 방법은 물리적 및 가상 머신 설치와 간단한 Docker 설치에 적합합니다.

목표

이 패키지에 대한 몇 가지 핵심 목표는 다음과 같습니다:

  1. 설치, 업그레이드 및 유지 관리가 매우 용이합니다.
  2. 다양한 운영 체제에 대한 지원
  3. 여러 클라우드 서비스 제공업체에 대한 폭넓은 지원

리눅스 패키지 아키텍처

GitLab의 핵심은 Ruby on Rails 프로젝트입니다. 그러나 GitLab이라는 전체 애플리케이션은 더 복잡하며 여러 구성 요소가 있습니다. 이러한 구성 요소가 없거나 잘못 구성된 경우 GitLab이 작동하지 않거나 예측할 수 없게 작동합니다.

GitLab 아키텍처 개요는 이러한 구성 요소의 일부와 상호 작용 방식을 보여줍니다. 이러한 각 구성 요소는 구성되고 최신 상태로 유지되어야 합니다.

대부분의 구성 요소는 외부 종속성을 가지고 있습니다. 예를 들어, Rails 애플리케이션은 여러 개의 Ruby gems에 의존합니다. 이러한 종속성 중 일부는 올바르게 작동하기 위해 운영 체제에 존재해야 하는 자체 외부 종속성을 가지고 있습니다.

또한 GitLab은 매월 릴리스 주기가 있으며, 최신 상태로 유지하기 위해 빈번한 유지 관리가 필요합니다.

위에 나열된 모든 사항은 GitLab 설치를 유지 관리하는 사용자에게 도전 과제가 됩니다.

외부 소프트웨어 종속성

GitLab과 같은 애플리케이션의 경우, 외부 종속성은 일반적으로 다음과 같은 문제를 제공합니다:

  • 직접 및 간접 종속성 간의 버전 동기화 유지
  • 특정 운영 체제에서의 버전 가용성
  • 버전 변경으로 인해 이전에 사용된 구성이 도입되거나 제거될 수 있음
  • 라이브러리가 취약점으로 표시되지만 새 버전이 아직 출시되지 않은 경우의 보안 영향

운영 체제에 종속성이 존재한다고 해서 다른 지원되는 운영 체제에서 반드시 존재하는 것은 아닙니다.

장점

번들된 종속성이 있는 패키지의 몇 가지 장점:

  1. GitLab 설치에 필요한 최소한의 노력.
  2. GitLab을 실행하기 위해 필요한 최소한의 구성.
  3. GitLab 버전 간 업그레이드에 필요한 최소한의 노력.
  4. 여러 플랫폼 지원.
  5. 이전 플랫폼에서의 유지 관리가 대폭 간소화됨.
  6. 잠재적인 문제를 지원하기 위한 노력이 줄어듬.

단점

번들된 종속성이 있는 패키지의 몇 가지 단점:

  1. 기존 소프트웨어와의 중복.
  2. 구성의 유연성이 감소함.

시스템 패키지를 사용할 수 있을 때 리눅스 패키지에서 패키지를 설치하는 이유는 무엇인가요?

그 답은 간단해질 수 있습니다: 유지 관리가 덜 필요합니다. 버전이 호환되지 않는 경우 기존 기능이 중단될 수 있는 여러 패키지를 처리하는 대신 하나만 처리하면 됩니다.

여러 패키지는 여러 위치에서 정확한 구성을 필요로 합니다. 구성을 동기화하는 것은 오류가 발생하기 쉬울 수 있습니다.

모든 현재 종속성을 유지 관리할 수 있는 기술이 있고, 미래에 발생할 수 있는 종속성을 처리할 충분한 시간이 있다면, 위에 나열된 이유는 리눅스 패키지에서 패키지를 사용하지 않도록 충분하지 않을 수 있습니다.

이 경로를 선택하기 전에 두 가지를 명심하세요:

  1. 겪는 문제에 대한 지원을 받는 것이 더 어려울 수 있습니다. 이는 많은 사용자에 의해 테스트되지 않은 라이브러리 버전을 사용할 때 발생할 수 있는 가능성의 수로 인해 발생합니다.
  2. 리눅스 패키지의 패키지는 필요하지 않은 서비스의 비활성화를 허용합니다. 독립적으로 구성 요소를 실행해야 하는 경우 예를 들어 비번들된 PostgreSQL 데이터베이스를 리눅스 패키지 설치와 함께 사용할 수 있습니다.

비표준 솔루션인 리눅스 패키지가 애플리케이션에 여러 개의 이동 부품이 있을 때 더 적합할 수 있음을 기억하세요.

여러 서비스가 포함된 Docker 이미지

GitLab Docker 이미지는 Linux 패키지를 기반으로 합니다.

이 이미지를 기반으로 생성된 컨테이너는 여러 프로세스를 포함하므로, 이러한 유형의 컨테이너는 ‘fat containers’라고도 불립니다.

이와 같은 이미지에 대한 찬반 의견이 있지만, 위에서 언급한 것과 유사합니다:

  1. 시작하기 매우 간단합니다.

  2. 최신 버전으로 업그레이드하는 것이 매우 간단합니다.

  3. 여러 컨테이너에서 별도의 서비스를 실행하고 유지하는 것은 더 복잡할 수 있으며, 특정 설치에 필요하지 않을 수도 있습니다.

이 방법은 컨테이너와 스케줄러를 막 시작하는 조직에 유용하며, 더 복잡한 설치를 위한 준비가 되어 있지 않을 수도 있습니다.

이 방법은 훌륭한 소개이며, 소규모 조직에 잘 작동합니다.