brunch

You can make anything
by writing

- C.S.Lewis -

by Diligitis Mar 01. 2019

쿠버네티스 101

2019년 주인공은 나야 나  

외계인의 폭격으로 잠시 UFO가 휩쓸고 갑니다 뭔가 잘못되었어...@IBM Cloud

 쿠버네티스, 컨테이너, 도커... 모두 항해와 관련된 용어이지요. 마도로스 (Matroos)가 연상되는 것이 테크 세상은 여전히 브로토피아 (Brotopia)인가 봅니다. 예전에는 IT 회사마다 시스템 관리자가 있었는데 지금은 데브옵스 (DevOps)로 통합되고 있습니다. 개발자가 아키텍처와 관리법만 익히면 커버할 수 있습니다. 회계를 하는 ERP, SAP과도 비슷하지요. 이름부터 어려운 쿠버네티스 (kubernetes)는 ‘쿠베’로 부르거나 앞과 뒤 중간 글자의 수 8로 줄여 k8s라 합니다. 쿠베의 간단 버전 k3s까지 나왔습니다. 한국어로 쿠삼이, 쿠팔이 정도 애칭으로 생각하면 됩니다. 시작은 어렵지만 익숙해지면 얼마나 수월하게 운영하는지 놀랄 것입니다. 종합 선물세트는 우리를 행복하게 하지요. '헬름 (helm)'은 컨테이너 오케스트레이션으로 앱의 생성 배포 관리를 해결해주는 패키지 관리 툴입니다.


 코딩을 알지 못할 때 개발자들이 시를 쓰듯 써 내려가던 코드는 경이로움에 가까웠습니다. 저 많은 명령어를 어떻게 외우지? 넘사벽 (넘을 수 없는 사차원의 벽)이란 생각마저 들었습니다. 그런데 저도 할 수 있게 되었습니다! 컴퓨터는 빠르지만 바보 같고 인간은 느리지만 똑똑하지요. 키보드에 좌측 위의 'tab키는 무엇에 쓸까?' 궁금했는데 애용하고 있습니다. GUI (Graphic User Interface)로 컴퓨터를 배운 사람들에게 CLI (Command Line Interface)는 뉴트로 (new+retro)입니다. 마우스로 요란하게 클릭하지 않아도 우아하게 파일을 만들고 수정 삭제가 가능합니다. 몇 글자를 치고 탭키를 누르면 명령어가 자동 완성되지요. 탭키를 탭탭 두드리면 (주짓수에서 살려달라고 바닥을 치는 것 같지요) 명령어 리스트가 뜹니다. 커맨드 라인에서 파일을 열고 들어가 편집할 수 있는 vi(vim), nano 등 에디터 명령어를 알아두면 폼나게 코딩할 수 있습니다.

 

 제 전공분야가 아니다 보니 용어의 폭격에 뇌가 새하얘집니다. 2002년 한일월드컵 동시통역도 했는데 영어로 된 웹사이트를 읽어도 이해할 수 없는 상황이 말이 됩니까. 세례를 받기 전 온통 모르는 단어와 이름들로 가득한 성경에서 느꼈던 암흑 같습니다. BTS의 멋진 랩도 아재들에게 들리지 않으니 괜찮습니다. 이럴 때 통하는 유일한 방법은 암기와 반복입니다. 앱을 만들어 서비스를 시작하면 로그 데이터가 쌓이면서 분석이 필요해집니다. 이때 사용하는 DB는 NoSQL (Not Only SQL)로 분류되는 레디스는 Redis (REmote DIctionary Server)는 in-momory DB, MongoDB는 document store입니다. 반면 MySQL은 sns에서 쓰는 관계형 DB 관리시스템 (DBMS)으로 빠르고 가벼운 오픈소스입니다. 확장성이 떨어진다는 단점도 있지만 출시된 지 20여 년이 지난 지금도 널리 쓰이고 있습니다.       

  

 팟 하면 가장 먼저 떠오르는 것은 콩나물처럼 생긴 에어 팟 (AirPods)입니다. 앱을 만들면서 뭔지도 모르고 열심히 인스톨했던 코코아 팟 (CocoaPods)도 있는데 Swift 및 Objective-C의 디펜던시 매니저로 앱 환경설정을 한방에 해줍니다. Ruby로 쓰여있어 gem install을 하다 보니 보석을 세팅하는 황홀한 기분이 듭니다. 쿠베에서 팟은 IP를 공유하며 작동하는, 컨테이너를 1개 이상 싣는 최소 단위입니다. 그런데 앱이 유명해져 사용자가 많아지면 단일 팟으로 로드를 감당할 수 없어 레플리카 세트 (Replica Set)로 서비스를 운영하지요. 노드는 '열 일하는 기계' (VM, 로컬 컴퓨터)로 예전에 '미니언'이라고 불렀지요. 영화 미니언즈 시리즈의 노란 생명체들로 머릿속이 복잡해집니다. 노드로 돌아와서 노드가 모여 클러스터를 이룹니다. 미니언즈 군집을 떠올리면 쉽지요. 코딩하다가 제가 눈을 반짝이며 웃고 있다면 엉뚱한 생각들이 떠올라 그렇습니다.


 작년 만들었던 아이폰 앱을 업그레이드하면서 결과물을 내었다고 끝난 것이 아니구나 새삼 느꼈습니다. 개발의 길은 멀고도 험했어요. 버전을 표시하는 세 자리 숫자의 의미조차 몰랐는데 지금은 소수점 하나 올라가는 것이 보통일이 아니구나 깨닫습니다. 개발팀 내부적으로 테스트를 하고 버그를 잡는 알파 버전부터 일반 오픈은 했지만 불안정한 베타 버전까지는 0.x.x으로 존재합니다. 비로소 1.0.0로 표시되는 정식 버전은 첫 번째 자리 메이저, 두 번째 자리 마이너, 세 번째 자리 빌드 넘버로 각각의 의미를 담고 있습니다. 어떤 경우는 패치만 다운로드하고 어떤 때에는 전체 업데이트를 하는 경우가 있는데 차이가 무엇인지도 알게 되었습니다. 메이저 넘버가 하나 올라간다는 것은 생물학적으로 세대가 바뀌는 큰 변화입니다. 카카오 같은 거대 플랫폼은 어떻게 업그레이드를 할까요? 야간에 버전업을 하는 동안 서버를 꺼둘 수는 없으니 2+1로 복제한 서버를 동시에 운영하면서 오류가 있는지 테스트를 하며 순차적 업데이트를 합니다. 읽기 (read)만 가능한 서버 A와 읽기와 쓰기 (read & write)가 가능한 서버 B를 둡니다. 저희 회사도 내년에는 AI와 블록체인 앱을 개발할 예정인데, 서버가 잘 버텨줄지 모르겠습니다. © Lisay G.  


이전 11화 클라우드에서 에지로
brunch book

현재 글은 이 브런치북에
소속되어 있습니다.

인생은 한 편의 멋진 게임일 뿐

매거진 선택

키워드 선택 0 / 3 0
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari
;