AI 기술 및 트렌드

AI인프라 - 하이브리드 클라우드와 Kubernetes 이야기

작동미학 2020. 12. 27. 22:22
반응형

 머신러닝으로 역사를 이루고자 하는 사람은 클라우드에 관심을 가져야 한다고 생각한다. 거창하긴 하지만, 현대의 역사에 남는 머신러닝 모델들은 대략 수억원 이상의 컴퓨팅을 사용하는 것을 심심찮게 목격할 수 있고, GPT-3는 50억 이상을 썼다고 하는데 잘 나가기만 한다면 내 모델도 언제 그렇게 될지 모르지 않는가! 그리고 이것을 IDC내에 On-prem으로 구성하기 위해서는 당연히 수십 수백억, 수천억의 투자비가 든다. 내가 몸담은 회사가 이 비용을 쿨하게 감내할 수 있다면 그것은 너무나 감사한 일이지만, 대부분은 그렇지 않다. 더군다나 프로세서는 GPU, TPU 등등 으로 계속 진화하고 있는 마당이라 언제 구축을 하든 노후화 가능성이 상존한다. 병렬 처리 인프라나 관련 SW도 계속 변화할 것이다. 분석 SW관점에서도 신기하게 클라우드의 영향을 지속 받고 있음이 여기저기서 보인다.

 그래서 잘나가는 모델을 만들 당신의 운명은 결국에는 클라우드를 직간접으로 검토할 수 밖에 없다. 그러기에 기본적인 클라우드 기술이나 흐름은 꼭 알고 가야한다고 생각한다. 금융 분야지만 정부도 계속 규제를 여하튼 완화하려고 노력은 하고 있다. 

 

 여기서 시작되는 이야기들은 결국에는 AI분석을 위한 인프라 이야기로 이어지게 된다. 오늘은 가볍게 하이브리드 클라우드와 Kubernetes얘기로 풀어보자. 다음편에는 개별 클라우드들의 분석 솔루션 얘기를 조금 해보려고 한다.

 

-----------------------------------------------------------------------------------------------------------------------------------

 

 클라우드의 장점에 대해서는 여러가지 다양한 표현들이 있는데, 사용하는 만큼 낸다는 표현 외에, 내게는 H/W를 S/W처럼 만들어준다는 점이 컸다. 원래 H/W 서버란 것이 사서 설치하고 셋팅하고 여러가지 번거로운 일을 거쳐야 하는데, 클라우드는 이 모든 것을 API로 자동으로 수행할 수 있다. 여러대의 서버에 로봇을 단 느낌이다.

 

 예를들면 CreateVM(서버생성), AttachDisk(디스크 추가) 등의 API 호출로 서버를 구성하고 늘리고 줄이는 일을 할 수 있으면서(그래서 사실은 그 API를 호출할 수 있는 웹페이지를 관리자 콘솔이라는 이름으로 각 클라우드 사업자(CSP)가 제공할 수 있다), 사용한 만큼만 돈을 내는 컨셉이 얼마나 처음에 신기했는지는 이루 형용할 수가 없다. Arduino라는 오픈소스 H/W를 처음 만났을때도, H/W 자작을 오픈소스화 한 개념이 너무나 마음에 들었는데 이렇게 S/W적인 특성들이 여기저기 H/W에 스며드는게 놀라웠다. 물론 웹하드를 제공하는게 클라우드라고 간주되던 시절도 있었으나, 내게 클라우드는 저렇게 H/W를 S/W처럼 쓸 수 있게 해준다는 표현이 딱 맞다.

 

 물론 클라우드가 만능은 아니다. 클라우드에서 IDC로 다시 돌아간 회사도 있다. 내게 딱 맞는 하드웨어 구성을 찾아냈고 사용량의 규모가 있는 소수의 회사는 직접 하는게 유리할 수 있다. 그러나 앞으로 다양한 변화에 어떻게 될지 모르는 회사들은 기민하게 바꿔쓸 수 있는데 클라우드가 100% 유리하다. 클라우드 쓰다가 이제 좀 알겠다 싶으면 그에 맞는 설계안을 가지고 맞춤형 IDC를 구성하면 된다.

 그리고 무엇보다 가격이 모호한 서버시장의 이 장비들은 클라우드로 가격 경쟁하는게 가장 소비자에게 유리하다고 믿는다. PC용 메모리에 비하면 턱없이 비싼 서버용 메모리나 디스크에 경악한 경험이 있다면 잘 느낄 수 있다. 그리고 역시 분석이라면, 클라우드는 빠르게 변하는 분석 S/W를 최신의 것으로 쓸 수 있게 해주는 장점이 존재한다. 큰 컴퓨팅이 필요할때만 잠깐 빌려쓸 수 있는 것도 또한 장점이다. 늘 분석이란 잠깐 대용량을 쓰는 일이 허다하다.

 

 즉, 필요할 때만 대량으로 쓸 수 있다는 점과 주변 분석 환경의 끊임없는 변화에 늘 맞추어 갈 수 있다는 점에서 클라우드는 분석업무와 동반자 관계를 형성할 수 있다고 생각한다.

 

 클라우드의 역사는 길지만 지난 10여년간 이제 점점 성숙단계에 이르렀고 글로벌 시장은 아래와 같이 흘러가고 있다.

https://www.business2community.com/cloud-computing/the-latest-public-cloud-market-share-and-beyond-02258898

MS는 오피스365나 윈도우의 지원에 힘입어(그 수많은 SaaS 들) Amazon을 눈부시게 치고 올라왔고, Google이나 Alibaba도 꽤 올라왔다(그 명성에 비해서는 고전 중이긴 하다. 실제로 Google도 클라우드 사업 포기를 논했다는 기사도 있었다) 어차피 이 회사들은 자신들의 인프라 규모도 커서 겸사겸사 하지 않을 수 없어 보이기는 하는데, 1위 사업자 Amazon의 투자 규모가 크니 따라가기 벅찬 점도 있겠다. Amazon의 매년 스펙 추가는 수십명을 동원해서 공부해도 따라잡기 어려울 정도의 확장을 한다. 

 

 그래서인지 재미있는 흐름이 바로 "Hybrid Cloud"이다. 아직은 모호한 이 개념이나, 말 그대로 클라우드를 여러개 쓴다거나 Switchable하게 쓰라는 말이다. 당연스럽게 어떤 회사도 한 사업자에게 종속되는 것을 싫어한다. 대규모 제조업에서도 장비 벤더를 가급적 다변화한다. 한 벤더가 가격을 올리거나 문제가 생기면 내 사업도 같이 망하는 것이 얼마나 큰 리스크인가. 그리고 또하나, 후발주자들에게도 기회를 열어주는게 바로 이 Hybrid Cloud의 가장 큰 홍보 동력이다.

 

 속되게 표현해보자면 모든 비 1위 사업자들이 "Amazon에 몰빵하지 마세요"라고 주장하고 있다.

 

 여기에 솔루션 회사들이 가세했다. 전통적인 On-Premise 기업 솔루션 회사(예를 들면 가장 유명한 Oracle)들은 클라우드 시대가 되면서 한번 더 곤란해졌다. 솔루션사들은 이제 클라우드 사업자에게 가서 자신을 서비스로 등록해서 받아달라고 하소연을 해야하는 시대가 되었다. 클라우드 사업자들이 SaaS형태로 On-prem 솔루션과 유사한 것을 시장에 공급하면서 입지가 줄고 있기 때문이다. 클라우드로 가면 사용하는 만큼 지불하는 H/W 인프라 외에도 S/W가 가득하다. 그것도 관리를 대신해준다. 대표적인 가격 정책은 솔루션 사용료는 무료인데 이때 쓰는 저장장치나 컴퓨팅만 돈을 받는 형태가 클라우드 사업자의 전형적인 요금제이다. 이것은 수많은 데이터 엔지니어링/AI 툴도 마찬가지다. 이미 Hadoop/Spark/Presto/AI suite 얼마나 많은 것들이 클라우드화 되었는가.

 

 이렇게 클라우드에 서비스를 하는 소규모 회사라면, 예를들면 클라우드 사업자(CSP:Cloud Service Provider)가 제공하는 DB를 쓰지 않을 이유가 없다. 그래서 오픈소스를 적절히 커스터마이징해 제공해주는 클라우드 사업자에게 시장을 다 빼았길것 같자 오라클은 아예 자신들이 클라우드 사업자를 하겠다고 선포하고 고군분투 하는게 벌써 몇년이다. 그런데 오라클과 같은 전략도 쓸수 없는 수많은 중소규모 솔루션 회사는 다음과 같이 주장하고 나섰다.

 

"클라우드에 몰빵하지 마세요. 자사 IDC와 같이 쓰세요. 저희 솔루션을 쓰시면 클라우드에서도 자사 IDC에서도 같이 운영할 수 있어요"가 솔루션사들의 주장이다. 여러분이 사용하는 솔루션이 일정 규모 이상의 글로벌 회사의 것이라면 이미 이런 문구를 만났어야 하고 아직 그런 문구를 못만났다고 하면 다가오는 시대에 대한 준비가 느린 회사라고 보면 된다(나의 주장이지만).

 

 결국 여러 클라우드와 자사 IDC(혹은 Private Cloud)가 어울려서 사용되는 Hybrid Cloud가 모든 클라우드 사업자의 발표나 솔루션사의 발표에 들어가기 시작했다. 이렇게 느낀 것이 불과 2~3년 밖에 되지 않는것 같다. (물론 이런 동향은 1위 사업자인 Amazon행사에서 가장 약하게 들리는 것은 어쩔 수 없는 현상이긴 하다. 그러나 그 Amazon 행사에 초청된 솔루션사들은 위의 Hybrid 형태를 역시 주장한다.)

 

 그런데 이 Hybrid Cloud에는 문제가 있다.

 

"정말 어떻게 옮겨다니면서 쓰는가?"에 대한 것이다. 그런게 가능하기나 한가? 클라우드를 묶어 가상의 전용 Private Cloud를 만들어 쓰는게 정말 가능한가? 아니 Amazon의 기능들을 다 쓰면서 어떻게 다른 클라우드로 옮긴다는거지? 배보다 배꼽이 큰것 아닌가? 등등의 우려이다. 당연히 따라오는 질문이고 현실이다. 두 클라우드를 번갈아 쓰는 것은 큰 허들이기 때문이다.

 

 그리고 이에 대한 답변으로 시장에서 호응되는 것이 바로 "컨테이너"다. 나는 요즘 시대의 IT 엔지니어라면, 이 컨테이너는 설치해서 실행까지 꼭 해보라고 권고하고 싶다. 해보지 않으면 제대로 개념을 잡기 어렵다. 조금있으면 10년이 되는 이 컨테이너의 개념은 이제 모든 이들에게 필수라고 생각한다. (그리고 클라우드를 옮겨다니면서 쓰기 위해서는 클라우드 벤더에 종속된 SaaS사용은 좀 줄이는 것이 인지상정이다. 정확하게 2위 이하 클라우드 사업자들과 각종 솔루션사들이 원하는 것이기도 하다. hybrid cloud가 그들의 살길이다.)

 

여기서 잠깐 추천하는 Docker Container강의를 짚고 넘어가보자. 

https://subicura.com/2017/01/19/docker-guide-for-beginners-2.html

 

초보를 위한 도커 안내서 - 설치하고 컨테이너 실행하기

초보를 위한 도커 안내서 2번째 글입니다. 도커의 기본적인 내용을 이야기 했던 첫번째 글에 이어 실제로 도커를 설치하고 컨테이너를 실행하면서 도커 명령어를 알아봅니다. 도커를 처음 접하�

subicura.com

 혹시 처음 들어본 분들에게 설명하자면 이 컨테이너는 말 그대로 화물을 표준화해서 배에 쉽게 싣고 다니게 할 수 있게 만든 그 컨테이너를 연상하면 된다. 컨테이너는 S/W 실행 환경을 표준화해서 어디든 실행할 수 있게 만든 작은 VM같은 것이다. 서버를 통째로 이미지로 만들어 여기저기서 실행할 수 있다. (정확히는 리눅스 커널 특정 버전 이상을 설치하면 결과적으로 어디서든 그 서버를 작게 쪼개서 이 컨테이너를 각각 독립 실행할 수 있다. 좀 기술적인 용어를 섞어 써보면, 경량형의 OS 격리 실행기라고 표현해볼 수 있다.)

 

 그런데 잠깐만 여기저기서 실행할 수 있다니? 바로 Hybrid Cloud가 아닌가! 그리고 이 장점 때문에 컨테이너는 앞서 밝혔듯이 솔루션사들과 클라우드 사업자들(어쩔 수 없이 Amazon AWS도)의 표준 플랫폼이 되어가고 있다. 그리고 여기서 한발 더 나아가보면 사실은 컨테이너를 제어(Orchestration)하며 실행할 수 있는 Kubernetes가 그 표준을 넘겨 받고 있다. 대략 1~2년 전쯤의 상황이다. GKE, AKE 등 K가 들어간 녀석들이 모두 Kubernetes 소위 K8s이다.

 

Kubernetes는 뭔가요?

 

 컨테이너는 경량형 VM같은 존재로 어플리케이션들을 실행해줄 수는 있지만, 이 컨테이너가 많아지면 관리가 일이 된다. 예를들면 웹서버 1만대를 띄우려면 컨테이너 이미지 1만개를 개별서버에서 각각 띄워줘야 하는데, 얼마나 불편한가. 그냥 서버들을 클러스터에 등록해놓고, "웹서버 컨테이너를 여기 서버 영역에 1만개 띄워줘" 라고 하면 자동으로 해주면 어떨까. 라고 시작된게 바로 이 Kubernetes다. 컨테이너나 Kubernetes 모두 구글에서 시작한 프로젝트로 유명하다. 저가의 PC급 다수 서버들에 리눅스를 설치해놓고, 수많은 서비스를 운영하기 위해서 했던 구글의 초기 고민들이 그대로 현재의 Docker Container, Kubernetes를 탄생시킨 셈이다. 많은 경쟁 서비스와 각축을 벌이다가 이 두가지가 지금의 시장 지배자 자리를 굳히고 있다.

 

 상황이 이렇다보니 Hybrid = Kubernetes 공식이 자리를 잡아가고 있다. 물론 몇몇 분들에게 친숙한 VMWare나 몇가지로 Hybrid Cloud를 운영할 수 있겠으나, 그것은 뭔가 아쉽다. VMWare도 Hybrid Cloud에서 일정수준 활약은 하고 있으나 이미 Kubernetes without VMWare같은 이야기를 하고 있는 서버 벤더도 있다. VMWare로 옮겨다니는 것도 번잡하고 클러스터가 이미 ready된 상태에서 컨테이너만 옮기는게 더 단순하다. 더군다나 서버노드에 리눅스만 깔려서 셋팅되면 구태여 리소스를 잡아먹는 VMWare 계층이 필요하느냐고 하는 사업자가 있는 것이다. Alibaba에서는 광군제 진행을 위해 아예 클라우드 H/W를 컨테이너 특화하여 최적화했다는 기술발표를 했었다(하다보면 아예 나중에는 Kuber Cluster 전용 OS가 나올지도 모르는 일이다. 다중 서버를 추상화해서 묶고 여러개의 응용서버를 띄우는 표준으로 자리잡고 있기 때문이다.)

 

 대충 아래 정도 점유율로 Kubernetes를 직접 설치하거나 CSP(Cloud Service Provider)의 Kubernetes를 쓰거나 Redhat의 Openshift를 쓰는게 지금의 major 동향이 되었다. Redhat 행사에 가면 Linux이야기는 이제 잘 안하고, Openshift이야기만 절반쯤 하고 있다는 생각이 드는건 나뿐이 아니리라.

 

https://www.stackrox.com/kubernetes-adoption-and-security-trends-and-market-share-for-containers/

 

 그런데 사실은 아직도 국내 기업에서는 이 Kubernetes가 낯설다. 그도 그럴것이 major가 된지 2년 정도밖에 되지 않았고, 국내 레퍼런스는 부족하며 컨테이너 기반의 아키텍쳐를 잡을 수 있는 엔지니어도 많지 않아 보인다. 그런데 점점더 글로벌 솔루션이나 클라우드회사들은 이 Kubernetes를 기반으로 하고 있다. 이유는 벌써 앞에서 밝힌 대로 Hybrid Cloud의 대안으로 주목을 받기 때문이다.

 

 그리도 지금의 IT트렌드는 신기하게도 모두가 클라우드기반하에 구동되거나 클라우드를 경쟁자로 고려하고 있기 때문에 On-Premise시장도 이 흐름을 따라갈 수 밖에 없다. "저는 클라우드와 상관이 없이 IDC만 써서 상관없는데요?" 라고 주장할 수 있겠지만 솔루션사들이 클라우드의 눈치를 보면서 진화하고 있기 때문에, 

 

"흠.. Kubernetes 환경이 아니면 저희 제품을 돌리기는 불편할 수 있습니다"라고 이야기하는 시대가 점점 오고 있다는 말이다.

 

 외국에서는 대략 지금부터 2~3년전부터 기획하며 준비되기 시작한 것으로 보인다. 그리고 이제 특정 기술회사들 중심으로 성숙되어가고 있다고 본다. 당연히 국내에서의 기술 변화도 곧 이어질것이다. 발표한지 2년이 되어가는 MS-SQL 2019는 Kubernetes상에서 올라갈 수 있다. 하둡 에코 시스템으로 유명한 Cloudera도 차기 버전을 Kubernetes기반을 염두해두고 발표되었다. "아마존에 몰빵하지 마세요. 클라우드에 몰빵하지 마세요. 옮겨다니세요"의 표준화된 대안이 이 Kubernetes이기 때문이다.

 

 말 다했다. 곧 국내 IT에도 점점더 Kubernetes생태계가 번질 수 밖에 없는 이유겠다. 최근에 Private Cloud용 Kubernetes플랫폼을 만든다고 발표한 티맥스도 이런 흐름에 부합하는게 아닐까. 미래를 준비하는 키워드에 넣어두시면 어떨까 싶다. 그리고 많은 AI 솔루션들이 SaaS화되거나 사실은 Kubernetes위에서 돌아가게 될 것이다. 병렬 처리형 분석 클러스터는 그 내부는 사실은 Kubernetes기반일 소지가 점점더 커질것이다. 

 

 (또 하나 Google Anthos, Azure Stack, Amazon Outpost 처럼 다른 클라우드 사업자나 IDC내의 서버를 같이 연계해 쓸 수 있도록 하는 기술들도 계속 나오고 있는데-말 그대로 다수의 클라우드를 하나로 묶어준다- 그것도 어찌보면 한 CSP에 종속인 것은 어쩔 수 없다. 역시 그런 솔루션들은 Public Cloud/Private Cloud 연계 분야에 대한 제한된 성장을 하게 되지 않을까 예측해본다.)

 

반응형