스파클링소다에서 Docker와 k8s 사용하는 이유

작성자 김민태 수정일 2022-10-24 18:19

#스파클링소다3.0, #스파클링소다3, #스파클링소다, #SparklingSoDA3.0, #SparklingSoDA3

아티클 관련 제품: SparklingSoDA3.0

들어가며

  • 스파클링소다는 기본적으로 Docker 시스템 위에 kubernetes를 사용하고 있습니다.
  • 스파클링소다가 Docker & kubernetes를 사용하는 이유에 대해서 알아봅니다.



내용


스파클링소다는 제품의 설계 목적상 분석가 및 사용자에게 간편하고 빠른 분석 환경을 제공하며 또한  각 프로젝트들의 유기적인 협업 및 공유를 제품 철학으로 하고 있습니다.


따라서 모든 프로젝트 멤버들끼리 동일한 개발 환경을 제공하는 것 뿐만 아니라 여러 분석 환경들을 구축하여 제공할 필요성이 있습니다.



제품은 기본적으로 지속 가능한 AI환경을 제공하여 원활한 분석 환경을 제공해야며, Dev(개발) 및 Ops(운영)까지 모두 스파클링소다 제품 내에서 파이프라인을 통해 일련화 된 서비스까지 제공 가능해야 합니다.


이러한 특이사항으로 모든 사용자 환경에게 원하는 분석 엔진과 커스텀 된 개발환경에서 동일한 분석환경을 제공해줘야 하는 것이 필수지만 현실적으로는 모든 개발 및 운영 환경을 일일이 제공하기에는 큰 어려움이 따를 수 밖에 없습니다.


하지만 미리 적재해놓고 원할 때 마다 각기 다른 동일한 분석 환경을 제공할 수 있는 가상화 Container 기반의 서비스를 이용한다면 위의 문제들을 단번에 해결할 수 있는데, 현재 Container 기반의 가상화 오픈소스 중 가장 널리 사용 되는 시스템이 바로 Docker 입니다.



Docker는 기존의 가상화 시스템 솔루션들과는 큰 차이를 보입니다.


아래의 사진을 보며 설명을 이어가겠습니다.


✖︎ 일반적인 기존의 가상화 솔루션 아키텍쳐


위의 그림에서 볼 수 있듯, 기존의 가상화 솔루션들의 방식은, 가상화 위에 Guest OS라는 개념이 존재하고 그 위에 다시 App들을 쌓아올려 머신을 생성하는 방식입니다.


HOST OS위에 GUEST OS가 올라가고 GUEST OS 설치가 완료되면 해당 커널 위에 APP이 올라가는 구조입니다.


반면에 Docker의 가상화 방식을 보겠습니다.



✖︎ 도커의 가상화 솔루션 아키텍쳐


도커는 Docker 엔진 위에 App들이 적재 됩니다. Guest OS의 설치가 필요 없습니다.

HOST PC의 커널들을 일부 공유하여 가상화하는데 필요한 최소한의 자원만 사용하기 때문에 훨씬 간편하며 가볍습니다.


따라서 App을 올리기 위한 "이미지"만 준비가 되면 쉽게 가상화 컨테이너 적재가 가능합니다.


따라서 도커는 Guest OS개념을 가지지 않기 때문에 도커 Engine만 설치가 되어있는 환경이라면

이미지를 통해 배포한 동일한 이미지는 그 어떤 곳에서 배포되어도, 언제 어디서나 사용자는 동일한 시스템 환경을 보장받을 수 있습니다.



※ 도커 이미지란?


도커가 가상화 컨테이너를 생성하기 위해 미리 서비스 운영에 필요한 서버 프로그램, 소스코드 및 라이브러리, 컴파일된 실행 파일 심지어 패키지들 마저도 모든 것들을 한데 묶어놓은 형태를 말합니다.


Dockerfile을 통해 이미지가 미리 빌드 되어 준비되어 있다면, 원하는 이미지를 사용하여 그때 그때 빠르게 컨테이너 배포가 가능합니다.


게다가 이미지는 Layer(레이어) 방식을 통해 이미지들을 구성하므로, 비슷한 분석 환경들이 여러 이미지가 준비되어 있더라도


모든 분석 엔진들의 용량을 합친 수치가 아닌, 바뀐 레이어들의 이미지 용량들만 용량을 차지 합니다. 


때문에 차이가 거의 없는 여러 분석 이미지 파일들이  저장되어 있다고 하더라도, 스토리지의 저장 공간은 크게 낭비되지 않는 장점이 있습니다.



K8S란?


근래 도커의 컨테이너 가상화 기술은 많은 각광을 받으며 빠르게 시스템 업무에 투입되었습니다.


하지만 일부 업무환경에선 이러한 도커 컨테이너 가상화 환경들이 100개, 많게는 1000개~ 이상이 넘어가는 서비스 환경이 생기기 시작했고

이렇게 대량의 도커 컨테이너들을 모두 스케쥴링(관리)해야할 필요성이 생겼습니다.


Kubernetes(k8s)는 위와 같은 목적으로 인해 생겨났습니다.


Google에서 제작하고 배포한 k8s는 많은 도커 컨테이너 이미지들을 컨트롤하기 위한 도커에 종속 된 클러스터 관리 솔루션으로


운영 환경에서 예기치 못 한 장애나 에러들이 발생 했을 때, 미리 설정한 옵션들과 스케쥴링들을 통해 빠르고 안정적인 운영을 가능토록 해줍니다.


k8s는 기본적으로 클러스터에서 node라는 단위와 pod라는 세부 단위로 나뉩니다.


클러스터 : 쿠버네티스가 관리하는 호스트 서버들의 집합 입니다.

노드 : 각 서버의 호스트들을 말합니다. 노드는 여러개일 수 있습니다. 여러개가 모여 하나의 클러스터가 될 수 있습니다.

파드 : 노드에 떠있는 App들의 집합입니다. 여러개의 컨테이너가 모여 파드가 될 수 있습니다.


대부분 자동화 된 클러스터 관리를 지원하며, 각 노드들의 상태 더 나아가 파드들의 상태까지도 k8s는 지정 된 스케쥴링 안에서 제어하며 서비스를 운영합니다.




마무리

  • 스파클링소다는 여러 분석 환경과 동일한 작업 환경을 제공하는데에 있어 도커의 가상화 컨테이너 시스템을 이용합니다.
  • 도커 가상화 컨테이너 시스템을 원활히 운영하기 위해 k8s를 이용하여 스케쥴링(관리)하고 있습니다.
  • k8s는 하나의 클러스터에 여러 노드 및 파드들을 실시간으로 감시하며 보다 안정적인 서비스를 지원하고 있습니다.
  • 따라서, docker & k8s를 사용하는 스파클링소다는 여러 분석환경들을 가상화 컨테이너로 쉽고 빈틈없이 제공하며, 보다 안정적이고 다양한 서비스를 보장 받을 수 있습니다.

아티클이 유용했나요?

훌륭합니다!

피드백을 제공해 주셔서 감사합니다.

도움이 되지 못해 죄송합니다!

피드백을 제공해 주셔서 감사합니다.

아티클을 개선할 수 있는 방법을 알려주세요!

최소 하나의 이유를 선택하세요
CAPTCHA 확인이 필요합니다.

피드백 전송

소중한 의견을 수렴하여 아티클을 개선하도록 노력하겠습니다.

02-558-8300