서버 개발부터 운영까지 전부 다 맡겨! DevOps팀 리드 쟈니
"오늘의집은 서비스 안정성이 중요하다는 걸 모든 구성원들이 공감하는 분위기가 있는 곳"
2020년 7월 23일 오늘의집

몇 년 전부터 개발 분야에서 화두가 되며 거스를 수 없는 대세가 된 것이 있습니다. 바로 DevOps(데브옵스) 패러다임인데요. 개발(Development)과 운영(Operation)의 합성어인 DevOps는 시스템 개발과 운영을 병행 및 협업하는 방식을 의미합니다. 개발에 뛰어난 능력을 가졌을 뿐만 아니라 전반적인 운영, 커뮤니케이션 관련 능력이 요구되며 DevOps는 '멀티플레이어'로 불리곤 하는데요.

오늘의집에도 서비스 인프라 개발 및 운영을 담당하는 DevOps 파트가 새롭게 생겨나며 이와 관련한 핵심 인력 분들이 속속 회사에 합류하고 있습니다. 이에 DevOps 파트의 리더를 맡으며, 안정적인 서버 개발 및 운영을 위해 노력을 아끼지 않는 DevOps팀 리더 '쟈니'님을 만나보았습니다.

개발자로서의 자신의 삶과 오늘의집의 계속되는 성장, 그리고 최종적으로는 '데이터센터'를 설립하고자 한다는 포부를 밝힌 쟈니님과의 인터뷰, 지금부터 보실까요!

   2

안녕하세요, 쟈니님!
인터뷰에 응해주셔서 감사합니다. 간단하게 자기소개 부탁드립니다.

안녕하세요. 저는 오늘의집에서 서버 플랫폼 리더를 맡고 있는 쟈니라고 합니다. 구체적으로 말씀드리자면 안정적인 서비스 인프라를 개발 및 운영하는 데브옵스(DevOps) 팀을 리딩하고 있습니다.

그동안의 시간동안 개발자로 일하시며 느낀 개발자만의 매력이 있다면 무엇일까요?

많은 개발자분들이 다 비슷한 대답을 하고, 제가 드리는 답변에 공감할 것 같은데요. 바로 '문제 해결의 희열'입니다.

제가 시스템엔지니어로 일하는 순간 동안에는 성능과 안정성이라는 상반된 두 개의 개념 사이에서 최적의 답을 찾는 순간들이 가장 매력적인 것 같아요. 신속성을 염두에 두면 안정성에 문제가 생기는 경우가 많고, 안정성에 공을 길들이다 보면 성능이 느려지는 상충되는 문제가 발생하는데 해결 지점을 찾아 이 두 가지의 부분을 충족시키는 것이 매우 뿌듯했습니다.

또, 인프라 운영적인 부분에서 말씀드리자면 결과적으로 운영이 잘 되게 하는 게 매력적인데요. 서비스가 개발될수록 시스템은 점점 더 커지고 복잡해지기 마련인데 기차의 톱니바퀴가 물려서 잘 달리는 것처럼, 모든 구성 부분이 맞물려 잘 운영되는 것을 볼 때 기쁨을 느낍니다.

반대로, 힘드신 점도 많으실 것 같은데요. 가장 힘든 점은 어떤 부분일까요?

서버 내에 수정해야 할 부분이 발생해 이에 대한 개발을 한다고 해서 고치는 시간 동안 서버를 멈추게 할 수는 없어요. 셧다운 시키고 고치는 게 아닌, 움직이고 있는 걸 최대한 멈추지 않게 해야 하는 점이 가장 어려운 거죠. 위에서 말씀드린 걸로 인용한다면, 달리는 기차를 멈추지 않은 상태에서 고치는 겁니다.

five nine이라는 말이 있는데, 1년 동안 99.999%는 계속 서버에 접속이 가능하게 해야 한다는 뜻을 의미합니다. 아마존에서 규정하는 SLA(Service Level Agreement) 또한 1년에 장애 시간이 단 몇 분이어야만 한다고 명시해 둔 부분도 있거든요. 이게 참 어렵고 힘든 부분이라는 생각이 듭니다. 복잡한 시스템에 대해 100% 이해하고 있지 않으면 개발을 하고 운영을 하는 것이 힘든데,

계속 새롭고 다양한 것들이 발견되고 존재하니 이걸 늘 해결하는 것이 재미있으면서도 힘든 점인 것 같아요.

개발자로서 ‘이것만은 꼭 필요하다’하는 능력이나 가치가 있을까요?

의사소통. '개발자가 개발만 잘하면 됐지' 하는 우물 안 개구리 같은 시각은 정말 위험합니다. 프로그램을 혼자 만들고 운용하는 것이 아니기에 함께 일하는 사람들 사이의 의사소통을 매우 중요시 여기는 편입니다.

"'내가 지금 당면하고 있는 개발의 문제는 언젠가는 풀린다' 는 생각을 늘 하죠"

   1

계속되는 개발자로서의 삶에서, 쟈니님을 움직이게 하는 동력이 있다면?

위에서 말한 '개발자의 매력'과 비슷한 대답일 것 같아요. 답을 찾는 과정과, 그 답을 찾았을 때의 희열. 이건 정말 겪어보지 않은 사람은 모르는 감정이거든요. 기술이라는 것이 계속 말씀드린 것처럼 멈추어있는 것이 아니라 정말 급진적으로 계속해서 발전해나가고 있기에 계속 공부하며 새로운 것을 받아들이고, 이를 활용한 무언가를 또 만들어내고 하며 제 스스로 느끼는 기술에 대한 자부심이 저의 동력이 아닐까 싶습니다.

다른 개발자와 쟈니님만의 다른 점이 있다면 무엇일까요.

아무래도 대학 시절부터 컴퓨터 시스템 이론을 공부했기 때문에 베이스 기술이 탄탄하다는 점이 아닐까요. 이슈가 될 수 있는 어떠한 현상이 발생했을 때, 다른 사람들은 모를 수도 있는 저변에 깔린 그림에 대해 이해하고 있다는 점이 강점이자 다른 점 같습니다. 그리고 이에 대한 부분도 계속 공부하며 키워나가려고 합니다. 다른 사람과 대체될 수 없는 저만의 포인트라고 생각하기 때문입니다.

학창 시절에 대한 이야기가 나와서 여쭤볼게요. 쟈니님의 그동안의 이력을 보면,
정말 개발 외길인생이라는 느낌을 지울 수 없는데요. 간략하게 스토리를 들려주세요!

2011년에 고성능 스토리지 입출력 시스템을 연구 주제로 박사 학위를 받고 NAND Flash + DRAM + PCI-Express의 하이브리드 스토리지 서버 (All Flash Array)를 자체 개발하는 국내 중견 기업에 입사하여 소프트웨어 팀을 리딩했습니다. 그 당시의 기술적인 한계는 1,000,000 IOPS (초당 입출력 횟수)를 달성하는 것이었는데 전 세계에서 2~3 개의 회사만이 이 목표에 근접하고 있었습니다. 이유는 시스템 소프트웨어가 그 당시 주류였던 하드디스크 드라이브에 최적화 되어 있었기 때문에 저장 장치가 반도체 메모리 기반의 고성능 저장장치 (Solid State Drive)로 변경되더라도 운영체제 및 하드웨어 인터페이스 (당시에는 SATA나 SAS) 의 제약으로 인해 그 성능을 충분히 발휘할 수 없다는 데 있었습니다.

파일시스템부터 장치 드라이버, 그리고 하드웨어 인터페이스(현재의 NVME와 유사한 커스터마이징된 인터페이스)를 새롭게 만들어서 1,000,000 IOPS라는 물리적인 한계를 뛰어넘은 경험은 그 당시 팀원들과 함께 썼던 논문/특허로 남아 제 손에 꼽는 무용담입니다.

당시 제품은 국내 통신사 (예로 Internet fraud call detection의 성능 문제 해결), 데이터베이스 제조사 (BMT에서 TpmC 10배 상승), 게임 회사 (당시 유명했던 초기 MMORPG 게임이 있었는데 '실시간 레이드 (?)'의 구현을 RDB 위에 transaction으로 처리하였고 해당 이유로 실시간은 구현되었으나 동시 플레이어수가 많아지자 전체 성능이 떨어지는 문제를 해결한 사례로 테스트에서 경쟁 미국 업체 한 곳 (Fusion IO) 과 저희가 만든 제품만 통과했던 사례입니다.) 등 고성능 I/O를 요구했던 여러 곳에서 호평을 받았습니다.

해외 진출 도전 중이었던 2013년 미국 출장에서 Openstack 이라는 클라우드 컴퓨팅 오픈 소스 프로젝트를 알게 되고 이에 뜻한 바 있어 2014년 새로운 도전 "창업"을 하기 위해서 회사를 나왔습니다. 풀고자 했던 문제는 저장 장치가 여전히 하드웨어라는 생각이 많고 백업/복구, 가상화 소프트웨어 솔루션이 따로 되어있는 불편함을 기업들이 모두 감수하고 쓰고있다는 것이었습니다. Software Defined Storage 라는 기술을 기업용 클라우드 인프라 솔루션으로 만들고 공급 및 운영하는 일을 약 3년 반 정도 진행하였습니다. 그 당시에는 대용량 분산 객체 기반 스토리지 기술 위에서 블록 스토리지나 파일 시스템이 요구하는 성능과 강한 일관성의 보장, 그리고 유연하게 이를 관리하기 위한 기술적인 문제들을 다뤘습니다.

그 후 인메모리 데이터베이스를 개발하는 국내 외국계 기업에 입사하여 아키텍트로 일하다가 클라우드 데브옵스를 경험하고 이 분야의 끝판왕이 되보고자 버킷플레이스에 조인했습니다.

"내가 발전할 수 있고 회사도 성장할 수 있는 곳, 이게 바로 오늘의집을 선택한 이유입니다."

자리를 잡은 안정된 기업에서 커리어를 쌓으시다가, 스타트업인 오늘의집을 선택하신 이유가 너무 궁금합니다.

제가 몸 담고 있는 기업의 안정성 보다는 제가 하고 있는 일의 중요성과 그 가치가 제 안정성을 보장해준다고 생각합니다.

지난 해, 일련의 사건을 계기로 회사의 안정성과 나 자신의 안정성이 동일선상의 위치에 있는가? 에 대한 고민을 시작했습니다. 일하고 있는 회사가 안정의 궤도에 있다는 사실에 도취하다 보면 더 이상의 발전에 대한 필요성을 느끼지 못하는 경우가 종종 있습니다. 익숙해진 업무에서 새로운걸 하려는 시도를 하지 않고, 만족하는 순간 도태되기 시작하고 그 사람의 가치가 하락해 대체 가능한 사람이 되는 것 같다는 생각이 들었어요. 안정적으로 있다는 걸 느끼기 보다는, 제 자신을 채찍질하고 계속해서 발전해나가는 게 저에게는 더 맞다는 판단을 내렸습니다.

대기업 대비 오늘의집이 안정적이지 못한 것은 맞아요. 하하. 그렇지만, 제가 계속 제 역량을 키워나갈 수 있는 곳이라 생각했습니다. 여러 해결하고 싶은 문제들도 존재하고, 새로운 도전으로 이끄는 일들도 많이 생겨나는 곳이죠. 그것들을 하나씩 해결해나가다 보면 저도 발전하고, 회사도 안정적인 기업이 되는 win-win의 결과를 낳을 수 있을 거라는 판단이 들어 오늘의집에 입사하였습니다.

현재 쟈니님이 하고 계신 업무는 무엇인가요?
오늘의집 서버플랫폼 리더는 어떤 일을 하나요?

오늘의집의 서비스는 클라우드 상에서 운영됩니다. 일년 365일 하루 24시간 문제 없이 잘 운영되기 위해서는 관제 시스템이 필요하죠. 서비스의 장애는 필연적으로 발생할 수 밖에 없습니다만 대비한다면 최소한의 피해로 해결할 수 있습니다.

저와 저희 DevOps팀은 1)장애가 발생했을 때 빠르게 담당 개발자에게 알리고 2) 원인 분석을 하고 빠르게 대응할 수 있는 지표들을 제공하며 3) 나아가 향후 발생할 장애를 선제적으로 대처 및 예방하는 방법을 찾는 일을 합니다. 이러한 일들은 소프트웨어로 구현되며 dev + 운영을 ops 자동화합니다. 결과적으로 많은 인력이 필요한 서비스 운영을 소수의 인력으로 가능하게 하는 일을 하고 있습니다.

여러 회사에 다니셨는데, 오늘의집의 일하는 방식이 다른 곳과 다른 부분이 있을까요?

의사결정이 신속하면서도 정확한 곳이라는 생각을 하곤 합니다. 대부분의 조직의 경우, 의사결정이 천천히 이루어지는 경우가 많거든요. 그런데 오늘의집은 달라요. 빠름과 정확함을 요구하죠. 대부분의 개발자라면 알고 있는 '에자일 방법론'을 채택하고 있는 곳이에요. 여기서 많이들 오해하실 수 있는 부분이기도 한데요. 신속하다는 것이 정확하지 않아도 된다는 것을 의미하지 않는다는 것을 늘 유념하려 하고 있어요. 그래서 최소한의 노력으로 원하는 결과를 신속하게 얻는 방법에 대한 고민을 많이 하게 되는 것 같습니다.

또, 다른 부분에 있어서는 놀라웠던 점도 존재하는 것 같아요.

놀라웠던 점이요? 어떤 부분에서요?

개발팀이 아닌, 오늘의집에서 일하고 있는 많은 직원 분들께서 서비스의 안정성이 얼마나 중요한지에 대해 공감하고 있다는 점이 정말 놀랍고 한편으로는 감사했어요. 사실 플랫폼 서비스에서는 서비스 자체보다는 콘텐츠, 커머스, 디자인 등의 부분에 더 포커싱되는 경우가 많은데 서비스의 안정성이 중요하다는 걸 모든 구성원들이 공감하고 있는 분위기가 조성되어 있는 것 자체가 매우 신기했습니다. 이 부분이 절대 단기간 내에는 구축할 수 없는 부분이고, 오랜 시간을 거쳐 쌓아진 인식일 것이라는 점이 놀라웠죠.

"오늘의집에도 네이버의 데이터센터 '각'처럼 데이터센터가 생기는거에요. 이름은, 홈? 어때요."

   3

쟈니님이 입사하실 때 나름의 오늘의집 안에서의 비전과 목표가 있었을 것 같아요.
오늘의집에서 이루고 싶은 것, 내고 싶은 성과가 있다면?

제 목표는 전국에 오늘의집의 데이터 센터(IDC)를 짓는 것입니다. 네이버, 다음 등과 같은 것에는 이미 자체 데이터 센터를 보유하고 있는데요. 현재까지 오늘의집은 아마존의 AWS 클라우드 서비스를 사용하고 있는데, 저희도 자체적으로 데이터 센터를 운영할 수 있을 정도로 규모가 확장됐으면 하는 바람이 있습니다. 다른 곳에 의존하지 않은, 자체 서비스를 운영하고 이것이 최고의 서비스로 인정받아 아시아, 북미, 유럽 까지 넓혀나가고픈 큰 바람이 있습니다. 하하.

쟈니님이 보시기에 오늘의집이 더 안정적인 서비스를 제공하기 위해서는 인프라적으로 어떤 점이 해결 또는 보완되어야 한다고 보시는지? 이를 위해 어떤 계획을 갖고 계시는지?

음... 앞으로 해야할 일이 많지만 예를 들어 우리 서비스가 점점 더 잘 되어서 오늘의집을 (동시에) 사용하시는 분이 지금의 10배가 된다고 가정해볼게요. 인프라는 그냥 양적으로 10배가 되면 될까요? 정답은 아닙니다. 어딘가 병목을 유발하는 요소가 있을 겁니다. 어떤 서비스의 확장성이 문제가 될 수도 있고 데이터베이스가 늘어나는 요청들을 감당하지 못할 수도 있겠죠.

근래 들어 소프트웨어 버그나 사람의 운영 실수보다는 이런 맥락에서 일어나는 경우가 종종 눈에 띄고 있습니다. 이를 위해 인프라 구조를 변경하고 확장성 있게 서비스를 만들도록 가이드하는 일을 진행중입니다. 예를 들어, blitz / scaling testing을 계획 중인데요. Blitz는 갑자기 폭발적으로 요청이 늘어날 때, scaling은 현재 동시 요청수보다 훨씬 많은 요청이 들어올 때 어떤 일이 일어나고 어떤 부분이 병목구간이 되거나 장애가 발생하는지를 테스트 하는 것입니다. 클라우드의 장점을 활용하여 이러한 스팟성 대규모 테스트를 진행할 수 있죠. 아울러 장애의 핵심 원인(root cause)을 쉽게 찾을 수 있도록 관제가 잘 동작하는지도 점검하죠.

이런 테스트들을 진행하고 나면 우리가 서비스의 인정성을 위해서 무엇을 해야할지에 대한 인프라팀의 업무 목록이 만들어지고, 그에 따라 실행할 수 있게 됩니다.

가장 좋아하는 오늘의집 문화나 복지를 꼽는다면?

한 달에 한 번씩 랜덤으로 매치되는 도넛. 부끄럽고 쑥스러운 마음이 크지만, 그만큼 독특하고 좋은 문화라는 생각이 듭니다. 다른 일을 하시는 분들과 얘기하고 그 분들이 해결하시려고 하는 문제가 뭔지 공유하는 건 몇 권의 책을 읽는 것보다 즐거운 일인 것 같습니다. 게다가 서로에게 도움이 되는 부분이 분명 존재할 것이라고 생각이 들거든요.

현재 오늘의집에서는 DevOps Engineer를 영입중입니다.
새로운 동료가 온다면 어떤 업무를 맡게 될까요? 어떤 역량이 있는 분이 오셔야 될까요?

일을 즐겁게 하실 수 있고 자발적으로 찾아서 일을 진행하시는 분이시면 좋을 것 같아요. 너무 뻔한 이야기인가요? 하하. 덧붙이자면 저희팀은 자동화된 서비스 및 인프라 운영을 목표로 하고 있기 때문에 어떻게 자동화할지를 계속 고민합니다. 도커나 쿠버네티스를 활용하지만 서비스 운영에 유용한 다양한 솔루션을 (오픈 소스나 개발) 고민해야 합니다. 그러면서도 운영을 해야하기 때문에 밤이나 주말에 장애가 나는 경우 대응해야 하는 책임감도 있으신 분이면 두 팔 벌려 환영합니다.

중장기적으로는 대용량 데이터 서비스 및 인프라 개발, 성능 평가, 마이크로 서비스 개발, 시스템 통합 운영 등의 전문 분야까지 정말 다양한 능력치를 쌓고 경험할 수 있다고 자부할 수 있습니다.

   4

마지막으로, 오늘의집에 관심있는 개발자들에게 하고싶은 한 마디

오늘의집은 본인의 역량에 따라서 initiatives(자주성)을 가지고 일할 수 있다는 점이 가장 큰 장점입니다. "이게 맞는 것 같아! 이걸로 해보자!" 라고 하면 "그래! 해보자!"하고 함께 일할 수 있는 곳이에요. 일을 하다가 "우리 회사에 ㅇㅇㅇ가 필요한 것 같아, 이거에 대해서 좀 해봐야겠어" 라고 할 때 아무도 '하지마'라고 하지 않죠.

회사의 성장과 함께 개인이 성장할 수 있는 밸런스가 갖춰진 회사라는 점이 매력 포인트라고 생각합니다. 모두 오늘의집으로 오시길 두 팔 벌려 환영합니다^^

오늘의집에서 당신을 찾고 있습니다!
오늘의집에서는 현재 다양한 직군을 채용하고 있습니다. 오늘의집과 함께 세상의 공간을 바꿔나갈 분들을 기다립니다. 자세한 내용은 채용 페이지에서 확인해주세요.
목록으로 돌아가기