- Amazon의 후원을 받아 1년 동안 FreeBSD 릴리스 엔지니어링과 FreeBSD/EC2 개발을 진행함
- 릴리스 관리와 EC2 관련 개선을 병행하며 월 평균 50시간의 작업 시간을 투입함
- Graviton 인스턴스 전원 관리, 핫플러그 지원, 부팅 성능 개선 등 주요 기능 문제와 품질 향상을 달성함
- AMI 종류 확장 및 빌드 자동화로 FreeBSD AMI 배포의 다양성과 효율성을 높임
- 후원 종료 후에는 개발 속도 둔화와 일부 기능 개발 정체 현상이 예상됨
FreeBSD 개발 후원 1년 회고
# 시작 배경 및 후원 과정
- FreeBSD/EC2 플랫폼을 2010년부터 관리해왔으며, 2023년 11월부터 FreeBSD 릴리스 엔지니어링 리드 역할도 수행함
- Antithesis, Patreon 등에서 소액 후원 중이었으나, 릴리스 엔지니어링 업무가 FreeBSD/EC2 개발 시간을 크게 잠식하는 상황에 직면함
- Amazon 측과 수년 간 EC2 작업에 대한 스폰서 논의를 이어왔으며, 2024년 4월에 예산 확보 담당자와 연결되어 1년간 후원을 받게 됨
- 후원은 GitHub Sponsors 경로로 집행됐으며, Amazon 의도한 기간과 실제 입금 시점은 다를 수 있음
# 후원과 작업 시간 분배
- Amazon의 요청으로 매월 40시간의 FreeBSD 릴리스 엔지니어링 및 EC2 개발 시간을 제공하기로 약속함
- 실제로는 월별로 50시간 정도를 투입했으며, EC2 이슈에 20시간, 릴리스 작업에 20시간, 기타 엔지니어링에 10시간을 분배함
- 월별로 작업 시간이 크게 변동함
# FreeBSD 릴리스 관리
- FreeBSD 분기 릴리스 일정을 도입·관리하면서 1년간 4차례 릴리스를 수행함: FreeBSD 13.4(2024.9), 14.2(2024.12), 13.5(2025.3), 14.3(2025.6 예상)
- 각 릴리스에는 개발자 코드 마감 독려, 머지 요청 승인 및 조율, 이미지 빌드·테스트, 안내문 작성, 각종 릴리스 빌드 오류 수정이 포함됨
- 릴리스 엔지니어링 소요 시간은 분기마다 33.5~79시간 수준이며, 후반부로 갈수록 안정화로 작업량이 감소하는 패턴임
# 주요 EC2 기능 개선 및 품질 향상
Graviton 인스턴스 전원 드라이버, 핫플러그 지원
-
Graviton 인스턴스에서 EC2 API의 정상 종료 신호를 FreeBSD가 인지하지 못하던 문제를 해결
- ACPI _AEI 오브젝트를 활용, GPIO 기반 "power button" 신호와 드라이버 로직을 연결
- EC2 제공 ACPI 테이블의 Pull Up 플래그 설정 불일치로 인한 장치 비활성화 문제는 FreeBSD/EC2 AMI에 ACPI_Q_AEI_NOPULL 설정 추가로 대응
-
EC2 Graviton 및 x86 인스턴스의 장치 핫플러그(특히 핫 언플러그) 문제들을 복합적으로 진단 및 수정
- IRQ 누수, PCI 전원 상태와 OS 신호 불일치, "유령" PCI 장치 등 다양한 유형의 버그에 대응
- 임시 방편으로 ACPI 퀴르크(예: ACPI_Q_CLEAR_PME_ON_DETACH, ACPI_Q_DELAY_BEFORE_EJECT_RESCAN) 적용, EC2 쪽 버그는 수정 예정
핫플러그 테스트 자동화 및 품질 개선
- EC2 환경에서 반복적으로 EBS 볼륨을 연결·해제하는 스크립트를 개발, 300회 연속 테스트를 통한 안정성 검증
- PCIe 핫플러그의 불필요한 5초 지연(물리 시스템에서만 의미 있음)을 EC2에서는 0초로 설정하여 품질 향상
부팅 성능 개선
- FreeBSD/EC2 부팅 속도 이슈를 데이터 수집 및 분석으로 체계적으로 개선
- 2024년 초 루트 디스크 용량 증설로 부팅 3배 지연, Graviton2 인스턴스의 커널 엔트로피 시딩 지연, ZFS 부팅 시간 증가, IMDSv2 관련 IPv6 지원 문제 등을 순차적으로 해결
- 파일시스템별 부팅 성능 격차, 엔트로피 수급 비효율, 네트워크 초기화 지연 등 다방면에서 최적화 이루어짐
# FreeBSD AMI 다양성 확대 및 빌드/배포 자동화
- 기존 base, cloud-init AMI 외에 small AMI(불필요한 디버깅·테스트 코드/툴 제거, 1GB 크기) , builder AMI(사용자 커스텀용 빌더) 를 추가
- 4종류 AMI * 2파일시스템(UFS/ZFS) * 2아키텍처(amd64/arm64) * 3버전(13, 14, 15)으로 이미지 조합이 확대되면서 오래된 이미지 자동 삭제 및 스크립트화 진행, 336TB EBS 스냅샷 정리
# 엔지니어링 일반 개선
- FreeBSD AMI/릴리스 빌드의 병렬화로 전체 빌드 시간을 약 22시간→13시간으로 단축, 더 많은 AMI 종류 추가에 여유 확보
- EC2 인스턴스 기반 자동화 테스트 및 diffoscope 비교로 빌드 재현성(리프로듀서블 빌드) 문제 진단 및 해결 진행
- ENA 드라이버 패치 리뷰, OCI 컨테이너 빌드 및 레지스트리 업로드, AWS 관련 툴 개선, 보안 이슈 리포트 등 다양한 소규모 업무 병행
# 앞으로의 전망 및 한계
- FreeBSD 릴리스 엔지니어링 및 EC2 플랫폼 유지 역할은 유지하나, 이전보다 투입 가능한 시간이 줄어들 전망
- FreeBSD 15.0(2024년 12월), 14.4/15.1/14.5/15.2(2026년) 릴리스는 예정대로 진행, 단 기능 추가/버그 수정 속도는 저하될 것으로 보임
- 자동 파일시스템 확장, 다중 NIC 및 핫플러그 자동화, 미리 패치된 AMI 배포, EC2 사용자 웹툴, FreeBSD/Firecracker 지원 등 미완 과제는 장기적으로 정체 예상
# 맺음말
- Amazon의 위 후원은 오픈소스 개발자에겐 극히 드문 기회이며 그 동안의 성과에 자부심과 감사를 느낌