Linux 패키지 및 Linux 패키지에서 가져온 이미지
GitLab이 패키지와 묶인 종속성을 가진 Docker 이미지를 제공하는 이유에 대한 기본 정보를 찾을 수 있습니다.
이러한 방식들은 물리적 및 가상 머신 설치, 그리고 간단한 Docker 설치에 적합합니다.
목표
이러한 패키지에는 몇 가지 핵심 목표가 있습니다:
- 매우 쉬운 설치, 업그레이드, 유지 보수.
- 다양한 운영 체제 지원
- 수많은 클라우드 서비스 제공업체 지원
Linux 패키지 아키텍처
GitLab은 본질적으로 Ruby on Rails 프로젝트입니다. 그러나 전체 응용 프로그램은 더 복잡하며 여러 구성 요소가 있습니다. 이러한 구성 요소가 존재하지 않거나 올바르게 구성되지 않은 경우, GitLab은 작동하지 않거나 예측할 수 없이 작동합니다.
GitLab 아키텍처 요약은 이러한 구성 요소 몇 가지와 상호 작용하는 방법을 보여줍니다. 각 구성 요소는 구성되고 최신 상태로 유지되어야 합니다.
대부분의 구성 요소에는 외부 종속성이 있습니다. 예를 들어 Rails 응용 프로그램은 Ruby gems 목록에 따라 의존합니다. 이러한 종속성 중 일부에는 올바르게 기능하기 위해 운영 체제에 있어야 하는 각각의 외부 의존성이 있습니다.
또한, GitLab은 매월 릴리스 주기가 있어 최신 상태를 유지하기 위해 빈번한 유지 보수가 필요합니다.
위에 나열된 모든 사항은 GitLab 설치를 유지 관리하는 사용자에게 일정한 도전을 제시합니다.
외부 소프트웨어 의존성
GitLab과 같은 응용 프로그램에서 외부 종속성은 보통 다음과 같은 도전을 야기합니다:
- 직접 및 간접 종속성 간의 버전 동기화 유지
- 특정 운영 체제에서 버전의 가용성
- 버전 변경이 이전에 사용되던 구성을 도입하거나 제거할 수 있음
- 라이브러리가 취약하다고 표시되었지만 아직 새 버전이 출시되지 않았을 때의 보안적 영향
운영 체제에서 종속성이 존재한다고 해도 모든 지원되는 운영 체제에 필요하다는 보장은 없습니다.
이점
묶인 종속성이 포함된 패키지의 몇 가지 이점:
- GitLab을 설치하는 데 필요한 최소한의 노력.
- GitLab을 실행하는 데 필요한 최소한의 구성.
- GitLab 버전 간의 업그레이드에 필요한 최소한의 노력.
- 여러 플랫폼의 지원
- 이전 플랫폼의 유지 보수가 크게 간소화됨
- 잠재적인 문제를 지원하는 최소한의 노력
단점
묶인 종속성이 포함된 패키지의 일부 단점:
- 이미 존재할 수 있는 소프트웨어와 중복
- 구성의 유연성이 떨어짐
시스템 패키지 대신 Linux 패키지를 설치해야 하는 이유?
이에 대한 답변은 간단히 말하면: 덜한 유지 보수가 필요하다. 버전이 호환되지 않으면 기존 기능을 망가뜨릴 수 있는 여러 패키지를 처리하는 대신 하나만 처리하면 됩니다.
여러 패키지는 여러 위치에서 올바른 구성을 요구합니다. 구성을 동기화하는 것은 실수를 유발할 수 있습니다.
현재의 모든 종속성을 유지하고 나중에 도입될 수 있는 새로운 종속성을 처리할 시간과 기술 유지 화력이 있다면 위에 나열된 이유들이 Linux 패키지를 사용하지 않도록 하는 충분한 이유가 아니게 될 수도 있습니다.
이 길을 따라 가기 전에 알아두어야 할 사항이 두 가지 있습니다:
- 사용자들의 대부분이 테스트하지 않은 라이브러리 버전을 사용할 때 존재할 수 있는 가능성이 많기 때문에 발생하는 문제에 대한 지원을 받기 어려울 수도 있습니다.
- Linux 패키지로부터의 패키지는 또한 필요하지 않은 서비스를 종료할 수 있으며, 만약 독립적으로 구성요소를 실행해야 할 경우에 유용합니다. 예를 들어, Linux 패키지 설치에 묶이지 않은 PostgreSQL 데이터베이스를 사용할 수 있습니다.
Linux 패키지와 같은 표준이 아닌 솔루션을 사용할 때 응용 프로그램이 여러 이동 부품을 가지고 있을 때 더 나은 선택일 수 있음을 염두에 두세요.
다중 서비스가 포함된 Docker 이미지
GitLab Docker 이미지는 Linux 패키지를 기반으로 합니다.
이 이미지에서 생성된 컨테이너는 여러 프로세스를 포함하고 있으므로, 이러한 유형의 컨테이너는 ‘fat 컨테이너’로 불립니다.
이와 같은 이미지에 대한 이점과 단점은 위에서 언급된 것과 유사하지만:
- 시작하기 매우 간단함.
- 최신 버전으로 업그레이드가 굉장히 간단함.
- 별도의 컨테이너에서 별개의 서비스를 실행하고 유지하는 것이 더 복잡할 수 있으며, 특정 설치에 필요하지 않을 수 있습니다.
이 방법은 컨테이너 및 스케줄러를 시작하는 기업에 유용하며,보다 복잡한 설치에 준비가 되지 않은 경우에는 특히 유용합니다. 이 방법은 좋은 소개가 되며 작은 조직에 대해 잘 작동합니다.