Linux 패키지 및 리눅스 패키지의 이미지

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 이미지는 리눅스 패키지를 기반으로합니다.

이 이미지로부터 생성된 컨테이너는 여러 프로세스를 포함하고 있기 때문에, 이러한 유형의 컨테이너는 ‘fat 컨테이너’로도 불립니다.

이와 같은 이미지에 대한 이유 및 그에 대한 반대 의견이 있지만, 위에서 언급된 내용과 유사합니다:

  1. 시작하기 매우 쉬움
  2. 최신 버전으로 업그레이드하는 것은 매우 간단함
  3. 여러 컨테이너에서 별도의 서비스를 실행하고 가동하는 것은 더 복잡할 수 있으며 특정 설치에는 필요하지 않을 수 있습니다.

이 방법은 컨테이너 및 스케줄러를 처음 사용하는 조직에 유용하며, 보다 복잡한 설치에 대비해 준비되지 않은 경우에 적합합니다. 이 방법은 큰 조직에 적합하지 않으며 더 작은 조직에 적합하게 잘 작동합니다.