Skip to content

필사 모드: Red Hat vs Ubuntu 서버 운영 비교: 엔터프라이즈 관점 의사결정 가이드

한국어
0%
정확도 0%
💡 왼쪽 원문을 읽으면서 오른쪽에 따라 써보세요. Tab 키로 힌트를 받을 수 있습니다.
원문 렌더가 준비되기 전까지 텍스트 가이드로 표시합니다.

들어가며

"Red Hat이냐, Ubuntu냐"는 리눅스 서버를 운영하는 조직이라면 반드시 마주치는 질문이다. 단순한 취향이 아니라 **라이선스 비용, 기술 지원 SLA, 보안 패치 주기, 인증/컴플라이언스, 인력 풀** 등 비즈니스에 직접 영향을 미치는 의사결정이다.

이 글에서는 RHEL(Red Hat Enterprise Linux) 계열과 Ubuntu Server를 **엔터프라이즈 운영 관점**에서 항목별로 비교하고, 워크로드별 추천 기준을 정리한다.

1. 배포판 계보와 현재 생태계

Red Hat 계열

Fedora (업스트림) → RHEL (엔터프라이즈) → CentOS Stream (중간 스트림)

→ Rocky Linux (커뮤니티 RHEL 클론)

→ AlmaLinux (커뮤니티 RHEL 클론)

- **RHEL**: Red Hat 구독 필요. 10년 이상 기술 지원.

- **CentOS Stream**: RHEL 다음 마이너 릴리스의 프리뷰. 프로덕션 직접 사용은 논쟁 중.

- **Rocky Linux / AlmaLinux**: CentOS 8 지원 종료 이후 등장한 1:1 RHEL 호환 배포판.

Debian 계열

Debian (업스트림) → Ubuntu (Canonical) → Ubuntu LTS (장기 지원)

→ Ubuntu Pro (확장 보안)

- **Ubuntu LTS**: 2년마다 릴리스, 기본 5년 + Ubuntu Pro 10년 지원.

- **Ubuntu Pro**: Canonical의 엔터프라이즈 보안·컴플라이언스 상품.

2. 핵심 비교표

| 항목 | RHEL 9 / Rocky 9 | Ubuntu 24.04 LTS |

| ------------------------ | ------------------------------------ | ----------------------- |

| **커널** | 5.14 (백포트) | 6.8 |

| **패키지 매니저** | DNF (yum 후속) | APT |

| **패키지 형식** | RPM | DEB |

| **Init 시스템** | systemd | systemd |

| **기본 파이썬** | 3.9 | 3.12 |

| **SELinux/AppArmor** | SELinux (기본 Enforcing) | AppArmor (기본 Enabled) |

| **방화벽** | firewalld | ufw / nftables |

| **기본 지원 기간** | 10년 (RHEL) / 10년 (Rocky) | 5년 (LTS) |

| **확장 지원** | ELS 최대 13년 | Ubuntu Pro 12년 |

| **라이선스 비용** | RHEL: 서버당 연간 구독 / Rocky: 무료 | 무료 (Pro 별도) |

| **인증·컴플라이언스** | FIPS 140-2/3, CC, STIG | FIPS 140-2 (Pro), CIS |

| **컨테이너 기반 이미지** | UBI (Universal Base Image) | ubuntu:24.04 |

| **클라우드 지원** | AWS, Azure, GCP 전체 | AWS, Azure, GCP 전체 |

3. 패키지 관리 비교

DNF (Red Hat 계열)

패키지 검색·설치·제거

dnf search nginx

dnf install -y nginx

dnf remove nginx

패키지 정보·파일 목록

dnf info nginx

rpm -ql nginx

보안 업데이트만 적용

dnf update --security

모듈 스트림 (RHEL 8+)

dnf module list nodejs

dnf module enable nodejs:20

dnf module install nodejs:20/common

트랜잭션 이력·롤백

dnf history

dnf history undo 15

저장소 관리

dnf repolist

dnf config-manager --add-repo https://repo.example.com/el9/

APT (Ubuntu)

패키지 검색·설치·제거

apt search nginx

apt install -y nginx

apt remove nginx

apt purge nginx # 설정 파일까지 삭제

패키지 정보·파일 목록

apt show nginx

dpkg -L nginx

보안 업데이트만 적용

apt update

apt upgrade -y -o Dpkg::Options::="--force-confold" # 기존 설정 유지

또는 unattended-upgrades 활용

자동 보안 업데이트 설정

apt install unattended-upgrades

dpkg-reconfigure -plow unattended-upgrades

PPA 관리

add-apt-repository ppa:deadsnakes/ppa

apt update

버전 고정

apt-mark hold nginx

apt-mark unhold nginx

패키지 관리 비교 요약

| 기능 | DNF (RHEL) | APT (Ubuntu) |

| -------------- | ----------------------------- | ------------------------- |

| 트랜잭션 롤백 | `dnf history undo` | 직접 지원 없음 |

| 모듈 스트림 | `dnf module` | PPA / Snap |

| 보안 패치 분리 | `--security` 플래그 | `unattended-upgrades` |

| 의존성 해결 | libsolv | apt 내장 |

| 오프라인 설치 | `dnf download` + `createrepo` | `apt-offline` / `dpkg -i` |

| 병렬 다운로드 | 기본 지원 | apt 2.0+ 기본 지원 |

4. 보안 모델 비교

SELinux (RHEL 계열)

**MAC(Mandatory Access Control)** 기반으로 프로세스가 접근할 수 있는 파일·포트·시스템 콜을 정책으로 제한한다.

상태 확인

getenforce # Enforcing / Permissive / Disabled

sestatus # 상세 상태

컨텍스트 확인

ls -Z /var/www/html

ps -eZ | grep nginx

불리언 토글

getsebool -a | grep httpd

setsebool -P httpd_can_network_connect on

문제 진단

ausearch -m avc -ts recent

sealert -a /var/log/audit/audit.log

커스텀 정책 모듈

audit2allow -a -M my_policy

semodule -i my_policy.pp

AppArmor (Ubuntu)

**경로 기반** MAC으로 프로필 파일을 통해 프로그램별 접근 권한을 정의한다.

상태 확인

aa-status

apparmor_status

프로필 모드 전환

aa-enforce /etc/apparmor.d/usr.sbin.nginx

aa-complain /etc/apparmor.d/usr.sbin.nginx

로그 기반 프로필 생성

aa-genprof /usr/sbin/myapp

aa-logprof

보안 모델 비교

| 항목 | SELinux | AppArmor |

| ----------------- | ---------------------- | ---------------- |

| 접근 제어 방식 | 레이블 기반 (inode) | 경로 기반 |

| 학습 곡선 | 높음 | 낮음 |

| 기본 정책 범위 | 매우 광범위 | 주요 서비스 위주 |

| 컨테이너 격리 | 탁월 (MCS) | 기본 수준 |

| 정책 디버깅 | `audit2why`, `sealert` | `aa-logprof` |

| 엔터프라이즈 인증 | STIG, CC, FIPS 필수 | CIS Benchmark |

> **실전 조언**: SELinux를 `Disabled`로 끄는 것은 **안티패턴**이다. 문제가 생기면 `Permissive`로 전환하고 로그를 분석하여 정책을 조정하라.

5. 시스템 관리 명령어 매핑

| 작업 | RHEL / Rocky | Ubuntu |

| --------------------- | --------------------------------------------------------------------- | ------------------------------ |

| 서비스 시작/정지 | `systemctl start nginx` | `systemctl start nginx` |

| 부팅 시 서비스 활성화 | `systemctl enable nginx` | `systemctl enable nginx` |

| 방화벽 포트 열기 | `firewall-cmd --add-port=80/tcp --permanent && firewall-cmd --reload` | `ufw allow 80/tcp` |

| 네트워크 설정 | `nmcli` / `nmtui` | `netplan apply` |

| 호스트명 변경 | `hostnamectl set-hostname` | `hostnamectl set-hostname` |

| 시간 동기화 | `chrony` | `systemd-timesyncd` / `chrony` |

| 사용자 생성 | `useradd -m -s /bin/bash user` | `adduser user` |

| 디스크 파티션 | `fdisk` / `parted` | `fdisk` / `parted` |

| LVM 관리 | `lvm` 기본 내장 | `apt install lvm2` |

| 커널 파라미터 | `sysctl -p` | `sysctl -p` |

6. 컨테이너와 클라우드 네이티브

컨테이너 베이스 이미지

| 항목 | UBI 9 (Red Hat) | ubuntu:24.04 |

| ------------- | ----------------------- | -------------------------- |

| 이미지 크기 | ~215MB | ~78MB |

| Minimal 변형 | `ubi9-minimal` (~100MB) | `ubuntu:24.04` 자체가 경량 |

| Micro 변형 | `ubi9-micro` (~35MB) | - |

| 재배포 | 자유 (UBI EULA) | 자유 |

| 보안 스캔 | Red Hat 취약점 DB | Canonical USN |

| 패키지 매니저 | microdnf / dnf | apt |

RHEL 계열 멀티스테이지

FROM registry.access.redhat.com/ubi9/ubi-minimal:latest AS builder

RUN microdnf install -y java-17-openjdk-headless && microdnf clean all

COPY target/app.jar /app.jar

FROM registry.access.redhat.com/ubi9/ubi-micro:latest

COPY --from=builder /usr/lib/jvm /usr/lib/jvm

COPY --from=builder /app.jar /app.jar

ENTRYPOINT ["java", "-jar", "/app.jar"]

Ubuntu 멀티스테이지

FROM ubuntu:24.04 AS builder

RUN apt-get update && apt-get install -y --no-install-recommends \

openjdk-17-jre-headless && rm -rf /var/lib/apt/lists/*

COPY target/app.jar /app.jar

FROM gcr.io/distroless/java17-debian12

COPY --from=builder /app.jar /app.jar

ENTRYPOINT ["java", "-jar", "/app.jar"]

Kubernetes 호환성

두 배포판 모두 Kubernetes를 완벽히 지원한다. 차이는 주로 **관리형 서비스 기본 OS**에서 나타난다.

| 클라우드 | 관리형 K8s 노드 기본 OS |

| ------------- | ----------------------------------------------- |

| **AWS EKS** | Amazon Linux 2023 (RHEL 계열) / Bottlerocket |

| **Azure AKS** | Ubuntu (기본) / Azure Linux (CBL-Mariner) |

| **GCP GKE** | Container-Optimized OS (Chromium 기반) / Ubuntu |

7. 라이선스·비용·지원 비교

| 항목 | RHEL | Rocky Linux | Ubuntu LTS | Ubuntu Pro |

| ------------- | ----------------------- | ---------------- | ------------- | ------------------------------ |

| 라이선스 비용 | 연 \$799~\$13,000+/서버 | 무료 | 무료 | 소규모 무료, 엔터프라이즈 유료 |

| 기술 지원 | Red Hat 24/7 | 커뮤니티 | 커뮤니티 | Canonical 24/7 |

| SLA | 1~4시간 응답 | 없음 | 없음 | 1시간 응답 |

| 보안 패치 | Red Hat Security | RHEL 동기화 | Canonical USN | 확장 보안 (12년) |

| 컴플라이언스 | FIPS, CC, STIG, HIPAA | FIPS (자체 인증) | CIS | FIPS, CIS, DISA-STIG |

| 교육·인증 | RHCSA, RHCE | - | - | CUA (Canonical) |

실제 비용 시뮬레이션 (100대 서버 기준)

| 시나리오 | 연간 비용 (추정) |

| ---------------------------- | -------------------- |

| RHEL Standard (100대) | \$80,000~\$130,000 |

| Rocky Linux + 외부 기술 지원 | \$20,000~\$50,000 |

| Ubuntu LTS (커뮤니티) | \$0 (인력 비용 별도) |

| Ubuntu Pro (100대) | \$25,000~\$50,000 |

8. 워크로드별 추천

| 워크로드 | 추천 배포판 | 근거 |

| ------------------------- | ----------------- | ---------------------------------- |

| **금융·의료 (규제 산업)** | RHEL | FIPS/CC/STIG 인증, 감사 이력 |

| **SAP / Oracle DB** | RHEL | 벤더 공식 지원 |

| **스타트업 웹 서비스** | Ubuntu LTS | 커뮤니티·최신 패키지·비용 |

| **Kubernetes 워크로드** | Ubuntu 또는 Rocky | 클라우드 네이티브 생태계 |

| **ML/AI 워크로드** | Ubuntu | NVIDIA 드라이버·CUDA 우선 지원 |

| **레거시 Java 서비스** | RHEL / Rocky | JBoss/WildFly 인증 |

| **CI/CD 러너** | Ubuntu | GitHub Actions, GitLab Runner 기본 |

| **내부 도구 서버** | Rocky / AlmaLinux | RHEL 호환 + 무료 |

9. 마이그레이션 체크리스트

CentOS → Rocky Linux / AlmaLinux

Rocky Linux 마이그레이션 (in-place)

curl -O https://raw.githubusercontent.com/rocky-linux/rocky-tools/main/migrate2rocky/migrate2rocky.sh

chmod +x migrate2rocky.sh

./migrate2rocky.sh -r # 변환 실행

검증

cat /etc/os-release

rpm -qa | grep rocky

dnf check

Ubuntu ↔ RHEL 전환 시 확인사항

| 확인 항목 | 세부 내용 |

| --------------- | ----------------------------------------------- |

| 패키지 매핑 | `apt` 패키지 → `dnf` 패키지 이름 매핑 목록 작성 |

| 서비스 설정 | systemd 유닛 파일 경로·옵션 검증 |

| 보안 정책 | AppArmor 프로필 → SELinux 정책 변환 |

| 네트워크 | netplan → NetworkManager 전환 |

| 방화벽 | ufw 룰 → firewalld 룰 전환 |

| 자동화 스크립트 | Ansible playbook의 `apt` → `dnf` 모듈 교체 |

| 모니터링 | 에이전트 패키지·로그 경로 확인 |

| 백업/복구 | 스냅샷 또는 이미지 백업 후 전환 |

10. 의사결정 플로우차트

조직에 규제 컴플라이언스(FIPS, CC, STIG) 요구사항이 있는가?

├── Yes → RHEL (또는 Ubuntu Pro FIPS)

└── No

├── 벤더 인증이 필요한 상용 소프트웨어를 운영하는가? (SAP, Oracle 등)

│ ├── Yes → RHEL

│ └── No

│ ├── 24/7 벤더 기술 지원이 필요한가?

│ │ ├── Yes + 예산 있음 → RHEL 또는 Ubuntu Pro

│ │ └── No

│ │ ├── RHEL 호환이 필요한가? (사내 RPM, 기존 인프라)

│ │ │ ├── Yes → Rocky Linux / AlmaLinux

│ │ │ └── No → Ubuntu LTS

│ │ └──

│ └──

└──

마무리

"최고의 배포판"은 없다. 조직의 **규제 요건, 기술 역량, 예산, 기존 인프라**에 맞는 배포판이 올바른 선택이다. 핵심은 다음 세 가지다.

1. **컴플라이언스가 요구되면** RHEL이 가장 안전한 선택이다.

2. **비용을 줄이면서 RHEL 호환을 원하면** Rocky/AlmaLinux를 검토하라.

3. **최신 에코시스템과 커뮤니티 활력을 원하면** Ubuntu LTS가 합리적이다.

어떤 배포판을 선택하든, 패치 관리·보안 정책·자동화는 **배포판과 무관하게** 반드시 갖춰야 할 기본기다.

현재 단락 (1/188)

"Red Hat이냐, Ubuntu냐"는 리눅스 서버를 운영하는 조직이라면 반드시 마주치는 질문이다. 단순한 취향이 아니라 **라이선스 비용, 기술 지원 SLA, 보안 패치 주기, ...

작성 글자: 0원문 글자: 7,366작성 단락: 0/188