도커가 무료 및 익명 사용자의 도커 허브 사용량을 제한하는 조치를 이달부터 시행했다. 대중적 컨테이너 이미지를 알게 모르게 사용해온 클라우드 이용자들의 시스템 운영이 복잡해질 전망이다. 이런 가운데 아마존웹서비스(AWS)가 도커 컨테이너 이미지를 외부와 공유하는 저장소 서비스를 출시해 자사 고객의 혼란을 최소화하겠다고 나섰다.
3일(현지시간) 미국 지디넷에 따르면, AWS는 자체적인 공개 컨테이너 레지스트리 서비스를 곧 출시할 것이라고 밝혔다.
오늘날 클라우드 상의 많은 애플리케이션이 컨테이너 형태로 작동되고 있다. 다수는 범용 애플리케이션의 경우 직접 컨테이너 이미지를 만들지 않는다. 아파치웹서버, 마이SQL, 클라우드네이티브 엣지 라우터 등이 대표적이다. 이런 애플리케이션은 도커허브나 공개된 컨테이너 이미지 저장소에 등록된 공개 이미지를 활용해 구동된다.
도커는 이달부터 무료 계정과 익명 사용자의 컨테이너 풀(Pull) 리퀘스트 규모를 제한했다. 6개월 동안 풀리퀘스트 없는 무료 사용자의 컨테이너 이미지는 자동으로 삭제된다. 또한 익명 및 무료 사용자는 도커 허브 풀이 6시간 당 5천건으로 제한되고, 이같은 풀은 몇 주일에 걸쳐 점차 줄어든다. 특히, 익명 가입자는 6시간 당 100개 컨테이너 풀만 가능하다. 무료 사용자는 6시간 당 200개 컨테이너 풀로 제한된다.
프로, 팀, 기존 구독자 등은 이같은 제한정책과 관련없다. 비상업적 오픈소스 프로젝트로 승인 된 네임 스페이스는 풀 제한을 적용받지 않는다. 도커의 유료계정은 프로의 경우 월5달러, 팀의 경우 월 7달러다.
한 기업이 얼마나 많은 규모의 컨테이너 이미지 풀을 기록할 수 있을까. 아마존 엘라스틱컨테이너레지스트리(ECR) 이용자만 해도 매주 수십억건의 이미지 다운로드를 기록한다고 한다.
오늘날 현업용 소프트웨어는 대중화된 컨테이너 이미지를 끌어와 구성된다. 이 이미지는 수분 혹은 수시간 동안 작동하다가, 필요없어지면 폐기된다. 만약 다시 필요해지면, 이 과정을 반복한다.
이 같은 사용 패턴은 개별 사용자에게 부담을 주지 않지만, 도커에게 운영 부담을 가중시켰다. 특정 소수 이용자의 대역폭 과점 현상이 문제시된다. 장 로랑 드 몰롱 도커 소프트웨어 엔지니어링 부사장은 "도커 사용자의 절대적 다수가 일반 워크플로우에서 예상가능한 수준으로 이미지를 당겨간다"며 "그러나 익명의 극소수 사용자가 과도한 이미지 요청이 있다"고 설명했다.
그는 "예를 들어 익명 사용자의 단 1%가 (도커) 허브 전체 다운로드의 30%를 차지한다"고 덧붙였다. 이런 대역폭 문제가 무료 및 익명 계정의 이미지 풀 요청을 도커에서 제한한 대표적 이유다.
도커의 사용 제한은 퍼블릭 클라우드 이용자에게 혼란을 줄 수 있다. AWS나 애저, 구글클라우드 등을 쓰는 사용자라도 대중적 애플리케이션 요소는 도커 허브의 공개 이미지를 사용할 수 있기 때문이다. 도커 허브의 이미지와 AWS의 ECS를 같이 쓰고 있을 때 도커 쪽의 풀 요청이 막히면 전체 워크로드가 중단될 수도 있다.
AWS의 도커 컨테이너 이미지 저장소는 컨테이너 공유와 배포를 AWS 내부에서 완료하게 해주는 서비스다. 개발자는 컨테이너 이미지를 저장, 관리, 공유, 배포할 수 있어, 외부 탐색 및 다운로드를 허용할 수 있다. 프라이빗 및 퍼블릭 컨테이너 이미지를 AWS에 호스팅할 수 있으므로, AWS 생태계 외부로 이동하지 않아도 된다. 공개 이미지는 전세계적으로 안정적인 가용성을 위해 지리적으로 복제되며, 주문형 이미지의 빠른 제공을 위해 고속 다운로드를 제공한다.
도커와 AWS는 올해 협약을 맺었다. 도커 컴포즈, 도커 데스크톱, 도커 허브 등에서 아마존 엘라스틱컨테이너서비스, AWS 파게이트 상의 아마존ECS로 컨테이너를 배포하고 관리하는 프로세스를 간소화해 도커 애플리케이션 개발자의 작업을 더 쉽게 만들 것이라고 발표했었다.
AWS 외부 사용자는 AWS 컨테이너 이미지를 검색해 자신의 애플리케이션에 가져올 수 있다. 개발자는 새 레지스트리를 사용해 모든 개발자에게 쿠버네티스 헬름(Helm) 차트 및 정책 구성 같은 공용 컨테이너 이미지 및 관련 파일을 배포할 수 있다. ECS 에이전트, 아마존 클라우드워치 에이전트, AWS 딥러닝 컨테이너 이미지 같은 AWS의 공개 이미지도 사용할 수 있다.
AWS는 컨테이너 이미지에 자동 보안을 적용한다. AWS가 자동으로 컨테이너 이미지의 보안 허점을 찾아 조치하는 것이다. 현재 도커는 오픈소스 보안회사 스닉과 협업해 도커 공식 이미지에서 보안 문제를 찾아 제거한다. 문제를 직접 확인하지 않는 한 컨테이너 이미지가 무엇을 담았는지 알 수 없기 때문에 새로운 도커 및 스닉 제품은 도커의 유료 계정 이용의 이유가 된다.
AWS는 개발자 당 월 50GB의 무료 저장공간을 제공한다. 무료 범위를 넘어서는 경우 형식적 비용을 부과한다. 익명으로 이미지를 당겨쓰려는 경우 월 500GB의 무료 데이터 대역폭을 이용할 수 있다. 무료 대역폭 범위 이상으로 사용하려면 AWS 계정을 만들어야 한다. AWS의 컨테이너 저장소도 제한을 두고 있는 것이다.
AWS 계정으로 인증하면, 무료 데이터 대역폭은 월 5TB로 늘어난다. AWS 상에서 구동되는 워크로드는 AWS 공개 이미지를 당겨쓸 때 어느 지역에서든 데이터 대역폭을 무제한으로 쓸 수 있다.
구글클라우드 사용자는 문제 발생 사실도 모르는 상태로 워크로드를 실행할 지도 모른다. 구글의 클라우드 CI/CD 제품책임자인 마이클 윈서는 "대부분의 경우 사용중인 구글클라우드 서비스가 도커허브에서 이미지를 가져오는 것을 알지 못할 수 있다"며 "예를 들어 도커파일에 'FROM debian:latest' 또는 쿠버네티스 배포 매니페스트에 'Image: postgres:latest' 같은 구문이 있다면 이는 도커허브에서 이미지를 바로 가져오고 있는 것"이라고 밝혔다.
해법으로 여러 복잡한 시도가 있지만, 윈서는 "도커 허브 계정을 유료로 업그레이드하는 게 간단한 해법"이라고 조언했다.
오픈컨테이너이니셔티브(OCI)는 이같은 문제가 도커의 규칙 변경보다 더 크다고 지적했다. OCI는 "중요한 공개 콘텐츠 배포 문제는 누가 공개 콘텐츠의 비용을 부담하는가에 국한되는 게 아니"라며 "사용자 환경에서 콘텐츠에 접근하고 보안을 유지할 책임을 가진 사람도 100% 포함한다"고 밝혔다.
또 "이 문제는 프로덕션 컨테이너 이미지에 국한되지 않고 RPM, 루비젬스, 노드 모듈 등 모든 패키지 매니저 콘텐츠로 확장된다"고 덧붙였다.
OCI는 장기적 해법으로 "콘텐츠를 가져오고, 조직의 검색 정첵에 따른 콘텐츠 보안을 검사하며, 최신 버전의 콘텐츠가 모든 기대를 충족하는 지 확인하는 기능 및 통합 테스트를 실행해 검증하는 등의 워크플로우를 구성하라"고 제안했다. 그리고 "그런 다음 검증된 콘텐츠를 팀이 활용할 수 있는 위치로 올려라"고 덧붙였다.
관련기사
- 잊고 지낸 도커 이미지, 안녕하신가요?2020.09.08
- AWS, 컨테이너용 리눅스OS '보틀로켓' 공개2020.03.12
- 쿠버네티스, 클라우드를 장악하다2020.03.11
- 구글클라우드, 쿠버네티스로 '컨피덴셜 컴퓨팅' 확장2020.09.17
수년 동안 전세계 기업과 개발자들은 한 오픈소스 회사의 호의에 의존해 신뢰가능한 프로그램을 무료로 제공받아왔다. 모든 비용을 감내해온 도커의 결과적 변심은 그간의 무책임한 컨테이너 워크로드 이용에 더 많은 책임을 사용자로 넘기게 됐다.
미국지디넷의 스티븐 보간니콜스 컬럼니스트는 "이제 자동화된 워크플로우가 소스코드를 사용자의 손에서 멀리 옮겨져버렸다"며 "도커 컨테이너 이미지뿐 아니라, 미션크리티컬 프로그램에 생각없이 의존하는 모든 콘텐츠의 확보와 배포에 더욱 적극적이고 책임감있는 역할을 수행해야 한다"고 지적했다.