여러분이 만약 AI 프로젝트를 시작할 때, 한정된 컴퓨팅 자원에서 많은 부서의 인원들이 동시적으로 자원을 사용하게 된다면 어떨까요? 부서 간 수동으로 자원을 분배하는 것도 일이며, 안정적인 환경에서 업무를 진행하시는 것은 더욱 어려운 일일 텐데요.
특히 개별 프로세스에서 문제가 발생하게 된다면, 전체 시스템이 중단할 가능성이 존재하며 우리는 유동적인 수요에 언제든지 대응 가능한 자원 분배의 자동화가 필요하게 됩니다.
이처럼, 현대 IT 인프라 환경에서는 한정된 자원을 다수의 인원/프로젝트가 유동적으로 사용하며, 빠르고 안정적인 환경까지 요구할 수 있도록 매일 방법을 고민하고 있습니다. 즉 우리의 한정된 시간과 예산을 극한의 효율로 이끌 수 있도록 말이죠!
이렇게 AI 개발과 운영의 효율화를 끊임없이 고민한 결과, 오늘날 많은 기업과 부서에서는 그 갈증을 ‘도커’로 해소하고 있다고 하는데요. 그런 의미에서, 오늘은 서버 관리에서 자주 언급되는 Docker와 Container에 대해서 자세히 알아보는 시간을 가져보기로 할게요.
도커(Docker)와 컨테이너(Container)의 이해
도커(Docker)는 컨테이너 기반의 오픈소스 가상화 플랫폼입니다. 도커는 프로그램의 배포와 관리를 위해 컨테이너를 만들고 사용할 수 있도록 하는 소프트웨어를 말합니다. 그렇다면 컨테이너(Container)는 대체 무엇이며, 도커와의 관계는 어떻게 될까요?
이처럼 서버 환경에서의 컨테이너도 비슷한 원리를 가진다고 생각해 보면 어떨까요? 컴퓨터 프로그램 코드와 실행에 필요한 요소를 하나의 컨테이너에 모두 담게 된다면 말이에요! 통상 메가 바이트급 크기인 컨테이너는 가상 머신보다 리소스를 훨씬 적게 사용하고, 즉시 시작 가능합니다.
동일한 하드웨어에서 훨씬 높은 밀도로 패키징 할 수 있으며, 더 적은 노력과 비용으로 대량 축소 및 확장할 수 있다는 장점이 있습니다.
규격화된 컨테이너로 효율적인 프로세스 갖추기
특히, 컨테이너(Container)는 격리된 공간에서 프로세스가 진행될 수 있도록 하는 가상화 기술인데, 여러 가지 가상화 기술 중에서도 ‘프로세스’를 격리하는 방식을 취하고 있습니다. 컨테이너를 활용하면 CPU나 메모리는 프로세스 내에서 필요한 만큼만 사용하고 추가되면서 성능 측면에서도 손실이 거의 없습니다.
결국, 도커는 다양한 프로그램과 실행 환경을 ‘컨테이너’로 규격화하는 플랫폼이고, 그 컨테이너는 어느 환경(운영체제)에서도 실행할 수 있습니다. 규격화된 컨테이너를 이용한다면, 프로그램의 배포와 관리는 더욱 단순화되겠죠?
이처럼 Docker는 개발-테스트-배포-관리 과정을 단순화하고 효율화하는 데 사용되는 강력한 도구로서, 핵심적인 역할을 맡고 있습니다.
컨테이너를 유연하게 다룰 수 있는 도커(Docker) 장점
Docker의 가장 큰 장점은 컨테이너를 ‘유연하게’ 다룰 수 있다는 것인데요. 하나의 컨테이너 안에 프로그램의 코드와 다양한 실행 요소를 모두 담게 되면 묵직해지지 않을까 싶지만, 도커를 이용하게 되면, 컨테이너를 구축·배포·복사하거나 다른 환경으로의 이동 등 쉽고 유연하게 사용할 수 있게 됩니다.
특히 개발·실행 환경이 달라도 컨테이너로 규격화된 프로그램들이 정상적으로 작용 가능한데요.
도커 이미지들이 컨테이너 실행에 필요한 파일과 설정값 등을 포함하고 있는 도커 파일을 레이어 형태로 만든 후, 이 도커 이미지를 통해 여러 개의 도커 컨테이너를 만들 수 있습니다.
그렇다면, 실제 개발 환경에서는 어떨까요? Docker는 개발자들이 이미지를 공유하고 배포하는 과정을 편리하게 만들어 전반적인 개발 프로세스를 간소화해줍니다. 빌드 한 이미지를 미리 DB에 업로드하거나 다른 개발자와 공유할 수 있습니다. 또한 배포 시에는 도커 이미지를 다운로드하고 컨테이너를 통해 애플리케이션을 실행할 수 있는데요.
서로 다른 환경에서도 잘 작동되니 개발자들은 AI 프로그램을 빨리 배포하고 AI 모델이나 애플리케이션을 관리하기도 쉬울 것입니다. 개발자와 운영팀 간 협력이 필요한 상황에서도 환경적인 영향을 거의 미치지 않습니다!
컨테이너 기술 기반의 오픈 소스 플랫폼 아스트라고(astrago)
이처럼, 현대 IT 인프라 환경에서는 기업의 한정된 자원을
‘어떻게 활용하느냐’가 주요 현안 사항 중 하나입니다.
이러한 페인 포인트를 해소할 수 있도록, 씨이랩에서는 기업의 리소스 활용률과 계획성을 탄탄히 세울 수 있는 사용자 편의성 맞춤 솔루션을 개발하였습니다. 아스트라고(astrago)은 최고 수준의 인프라 활용 효율과 사용자 편의성을 결합한 머신러닝 솔루션인데요.
컨테이너 기술을 기반으로 컨테이너가 서버의 리소스(MEM, CPU, GPU) 옵션을 부여해서 한정된 자원을 효율적으로 사용할 수 있도록 합니다. 그렇기에 앞서 설명드린 도커(Docker)의 장점처럼 astrago 또한 유동적인 수요에 빠르게 대응 가능합니다.
*멀티테넌시: 하나의 소프트웨어 인스턴스가 한 대의 서버 위에서 동작하면서 여러 개의 테넌트(tenant)를 서비스함
오늘은 현대 IT 인프라 환경의 중요성을 통해, Docker와 Container의 의미를 깊숙이 알아보는 시간을 가졌는데요. 규격화된 컨테이너를 통해 컴퓨터 프로그램상 충돌과 에러를 먹고, 효율이 약화되는 현상을 미연에 방지할 수 있기 때문에 AI 개발자들 사이에서는 더 붐이 일어났나 봅니다.
Docker와 더불어 위에서 살펴 본 astrago 기술을 통해 더 효율적인 클러스터 인프라를 갖추어 보시는건 어떨까요?
'AstraGo' 카테고리의 다른 글
컨테이너를 쉽게 다루는 쿠버네티스(kubernetes,k8s) 정의와 장점 (0) | 2024.06.29 |
---|---|
가상머신(VM)과 컨테이너의 가상화 기술 (하이퍼바이저/도커) (1) | 2024.06.29 |
AI 개발에 파이썬을 주로 활용한다면, ‘주피터 노트북’(Jupyter Notebook) (0) | 2024.06.29 |
머신러닝·딥러닝의 대표적 프레임워크 텐서플로우vs파이토치 (7) | 2024.06.28 |
GPU를 가장 잘 활용하는 방법: 멀티 인스턴스 MIG (0) | 2024.06.28 |