토스 서비스를 든든하게 지키는 사람들, 서버 플랫폼 팀을 만나다
ㆍby 금혜원
“장애를 내려고 해도, 장애가 나지 않는 서비스를 목표로 합니다.”
토스는 누적 가입자 1,500만 명으로 대한민국 국민 3명 중 1명이 쓰고 있는 금융 서비스입니다. 그런 서비스인만큼 늘 안정적으로 운영하기 위해 토스팀은 고군분투하고 있구요.
다양한 영역에서 토스를 만들어 가는 이야기를 담으면서, 그동안 서비스 영역을 다루는 서버, 클라이언트, 프론트엔드 개발자분들을 만났는데요. 이번에는 플랫폼 (인프라)을 담당하는 팀원분들을 만나보았습니다.
서비스 장애가 생겨도 빠른 시간 내에 복구할 수 있도록 만반의 준비를 하고, 늘 안정적으로 운영될 수 있도록 든든하게 지켜주고 계신 분들인데요. 바로 서버 플랫폼 팀입니다. 팀 리더 항령님, DevOps(Development & Operations)를 맡고 계신 명규님, SRE(Site Reliability Engineering/사이트 신뢰성 엔지니어) 담당이신 규희님을 모시고 나눈 이야기, 함께 보실까요?
안녕하세요, 서버 플랫폼 팀 여러분! 자기소개와 더불어 하고 계신 일에 대해 설명 부탁드립니다.
이항령: 서버 플랫폼 팀 리더 이항령입니다. 먼저 저희 팀이 하는 일에 대해 간략하게 설명드릴게요.
토스 고객분들이 이용하시는 서비스 뒤에서 이루어지는 모든 운영 프로세스를 담당한다고 보시면 되는데요. 서비스가 통신망, 서버, 네트워크 장비 등을 거쳐 특정 서버로 들어올 때, 여러 데이터 소스에서 필요한 정보를 가져와 고객에게 제공하는 전체적인 프로세스를 관리하고 있습니다.
예를 들어 고객분들이 행운퀴즈를 이용하실 때 누가 참여했고, 얼마를 지급해야 하는지 등의 자세한 내용은 서비스 쪽 서버 개발자분들이 담당하시는 영역이고, 그 외의 장비/컴포넌트 운영, 빌드 및 배포, 로깅, 알람, 장애 대응 등 업무 영역을 저희가 담당합니다.
보통 회사 개발팀의 업무 범위를 보면 하드웨어(장비)를 다루는 팀과 소프트웨어를 다루는 팀으로 나눠져 있고, 팀 간의 간극이 있기 마련인데요. 토스팀에서는 저희 팀이 이 간극을 메우고 있습니다. 업무 범위가 꽤 넓은 편이라 볼 수 있어요.
장비를 담당하는 것은 물론 앱 서버도 모두 살펴보거든요. 장비와 소프트웨어 간 조율도 하고요. 문제점도 리뷰합니다. 서비스 쪽 담당하시는 서버 개발자분들이 고객과 가까운 곳에서 긴밀하게 대응하실 수 있도록, 그 외 필요한 모든 부분을 저희가 탄탄하게 뒷받침하고 있는거죠.
어려운 영역인데도 자세히 설명해주셔서 감사해요. 다른 분들께도 업무에 대해 좀더 자세히 여쭈어보고 싶은데요. 서비스 영역을 주로 다루시는 서버 개발자분들과는 다른 영역을 담당하신다고 보면 될까요?
최명규: 네, 맞습니다. 저는 DevOps 를 맡고 있는데요. ‘서버 개발자분들이 빠르고 편하게 업무를 진행하실 수 있도록 돕는 도구를 만드는 일’을 하고 있어요. 예를 들면, 서비스 개발자분들이 코드 작성 후 배포할 때 배포를 하기 위한 코드는 작성하지 않아도 되도록, 자동으로 배포되는 프로세스를 구축하는 것입니다.
기존에는 서비스 개발자분들이 서버에 직접 들어가 운영과 관련된 업무까지도 하셨어요.
그런데 이렇게 하면 사람이 하는 일인만큼 실수가 생길 수도 있습니다. 휴먼 에러(human error)를 최대한으로 줄이기 위해 운영성 업무를 정형화하여 소프트웨어화시키는 작업, 즉 공장의 파이프라인 설계 같은 일을 한다고 보시면 됩니다. 토스팀은 이런 역할이 필요하다는 것에 대해 이해하고 있었고, 팀의 첫 DevOps 담당자로 합류했어요.
주기적으로 진행되는 운영성 업무는 기계가 하는 것이 더 정확할 수 있겠네요. 아무래도 서비스 장애가 생기지 않는 것이 가장 좋겠지만 쉽지 않을텐데요. 장애 예방을 위해 어디에 주로 초점을 맞추고 계시는지 궁금합니다.
조규희: SRE로서 담당하고 있는 부분은 사이트 안정성/신뢰성(Site Reliability)과 관련된 부분인데요. 토스가 안정적으로 운영될 수 있도록 장애와 관련 있는 부분은 모두 모니터링하고 있어요.
서비스 장애는 미리 예방하는 것도 중요하지만, 장애가 발생했을 때 원인을 빠르게 찾아 해결하는 것이 더 중요하다고 생각하거든요. 장애 원인을 빠르게 찾기 위해서는 꼼꼼한 실시간 모니터링이 필수입니다. 단계별로 파악해야 어디서 어떤 문제가 생겼는지 바로 파악할 수 있기 때문이에요.
이외에도 장애가 해결된 후 사후 관리 차원의 대비책을 마련하는 업무도 맡고 있습니다. 같은 장애가 다시 발생하지 않도록 만전을 기하는 것이죠.
최명규: 그 일환으로 ‘카나리 릴리즈(Canary Release)’ 라는 시스템에 대해 말씀드릴 수 있겠네요. 팀에 와서 처음 도입해 잘 활용하고 있는 시스템인데요. 서비스 업데이트 시 앱 버전이 바뀌잖아요. 이때 생길 수 있는 서비스 장애를 최소한으로 하기 위해 두 개의 버전을 동시에 배포하여 추적하는 시스템입니다.
업데이트 과정 중 어떤 일이 생길지 모르는 상황에서, 장애 범위를 최소한으로 줄이기 위해 앱 버전을 두개로 하여 배포하는 것인데요. 이렇게 하면 문제가 생겼을 때 빠르게 롤백(roll-back)할 수 있다는 점에서 좋고, 조금씩 배포하기 때문에 장애가 생기더라도, 장애를 겪는 사용자 비율이 낮다는 면에서 좋습니다.
이항령: 규희님과 명규님이 말씀해주신 것처럼 서비스 안정성을 높이는 작업을 지속적으로 하고 있고, 서비스 장애에 보다 빠르게 대비하기 위한 시스템도 적극 도입하고 있어요.
최근에는 ‘쿠버네티스(Kubernetes)’라는 시스템도 도입했는데요. 장애가 생기거나 물리 장비 하나가 작동하지 않을 때 그 영향을 최소화하기 위해 다른 장비로의 서비스 이동을 쉽게 할 수 있고, 장애 상황을 시뮬레이션 할 수 있는 어플리케이션이라고 보시면 돼요.
쿠버네티스 도입 시 특히 어떤 부분이 개선되나요?
이항령: 장애 원인 파악부터 해결까지 걸리는 시간을 최대한 확보할 수 있다는 면에서, 장애 대응에 유리해집니다. 서비스 규모가 확장되는 과정에서 일반적으로 겪는 문제점이, 장애가 생길 때 서비스 단위가 커서 어디서 어떤 문제가 생겼는지 파악하는 것 조차 시간이 오래 걸린다는 점인데요.
쿠버네티스를 활용하면 장애 발생 시 다른 장비로 빠르게 이동시킬 수 있어서, 고객들이 겪는 시간을 최소한으로 줄일 수 있습니다. 카나리 릴리즈 시스템 효과와 비슷해요.
DC/OS* 를 운영하면서 문제가 되었던 중앙집중 프록시 방식보다는 클라이언트 사이드 로드 발란싱(Client Load Balancing)으로 위험을 분산시키면서 안정적으로 운영할 수 있고, 장애를 시뮬레이션해볼 수 있는 케이어스 엔지니어링(Chaos Engineering) 시도가 가능하다는 점도 쿠버네티스 도입의 장점이라 볼 수 있습니다.
* DC/OS: the Distributed Cloud Operating System의 줄임말로, 여러 개의 서버가 함께 운영되는 환경을 하나의 서버처럼 손쉽게 운영하고 관리하기 위한 목적으로 활용되는 솔루션
최명규: 자동화를 위해서도 꼭 필요한 시스템이에요. 예전에는 장비가 갑자기 꺼지면, 수동으로 다른 장비로 대체하곤 했거든요. 하지만 쿠버네티스 도입 후엔 그럴 필요가 없어졌어요. 전원이 꺼져도 자동으로 대체되니까요. 사람이 직접 대응하는 것보다 훨씬 빠르겠죠. 이런 것을 자가치유(Self-healing, Auto-Recovery)라고 합니다.
토스팀은 서비스 영역과 플랫폼 영역 간 업무 영역이 잘 구분되어 있는 것 같아요. 다른 회사와 비교했을 때 이런 경우는 드문 편인가요?
조규희: 다른 회사도 전반적으로 팀이 구분되어 있긴 한데, 토스팀에서 업무 영역이 좀더 명확히 구분되어 있는 것 같아요. 예전 회사에서는 서비스 쪽 개발하시는 분들이 서버에 바로 들어가서 확인해보시곤 했는데, 토스팀에서는 서비스 쪽 서버 개발자분들이 플랫폼 관련 업무를 직접 하시기보다 저희 팀에 요청주시고 확인해드리는 방식으로 일하고 있어요.
최명규: 서비스 쪽 개발자분들이 “뭔가 이상한 것 같다”고 문의주시면, 저희가 확인하고 해결해드리고 있죠. 이렇게 업무 영역이 구분되어 있는 것이 팀 전체적으로도 업무가 효율적으로 진행되게 하는 원동력이 되는 것 같아요.
이항령: 기본적으로 팀은 나눠져 있어야 한다고 생각해요. 서비스 쪽 개발자분들은 온전히 서비스에 집중하실 수 있어야 한다고 생각하거든요.
업무 영역이 나눠져 있어도 굉장히 긴밀하게 협업하고 계신 것 같아요. 매주 위클리(주간 미팅)도 진행하시더라고요.
이항령: 맞아요. 목요일마다 서버 챕터 위클리 미팅을 하고 있어요. 플랫폼 팀에서 주도해서 진행하고 있는데요, 장애가 일어났을 때 어떻게 대응했고, 어떤 후속 작업이 이뤄졌는지 공유드리기도 하고요. 끊임없이 기술적인 도전을 하고 있는 포인트에 대해서도 공유드리고 있어요. 서비스 개발을 하시면서 얻게 되는 새로운 인사이트나 아이디어에 대해서도 공유해주시고요.
거의 모든 서버 개발자분들이 참여하고 계시기 때문에, 이 시간이 헛되이 사용되지 않도록, 그리고 팀원분들이 기대를 가지고 참여하실 수 있도록 준비를 많이 하고 있습니다.
그리고 히스토리 파악을 위해 기록을 남겨두는 작업도 하고 있는데요. 나중에 들어오시는 분들도 서버 영역의 히스토리를 모두 파악하실 수 있도록, 장애와 관련된 문서는 물론 상세 지표를 통해 파악한 인사이트까지도 모두 문서화하고 있습니다. 관심있는 분들은 언제든 찾아보실 수 있도록이요.
이렇게 위클리를 진행하는 일이나 히스토리를 남겨두는 일이 저에게는 하나의 프로젝트이기도 해요. 저희가 함께 고민하는 영역에 대해 이야기 나누는 이 시간이 항상 의미있는 시간으로 남기 때문이에요. 그리고 팀에 도움되는 방향은 물론, 한 사람의 개발자로서 성장하는 데에도 도움되니까요.
토스 서버의 ‘실록’ 작업을 하고 계신 것이나 마찬가지네요. 서버 플랫폼 팀의 가장 큰 매력은 무엇인지도 궁금합니다.
최명규: DevOps 측면에서 생각해보면, 굉장히 다양한 오픈 소스를 사용할 수 있다는 점인데요. 다양한 소스를 활용해보면서 우리에게 가장 잘 맞는 시스템을 만들 수 있다는 점 때문에, 매력적이라 생각해요.
반면 오픈 소스이기 때문에 운영 및 문제가 생기는 상황에 대해서도 파악해야 해요. 최종 선택할 때, 풀고자 하는 문제에 딱 맞는 소스는 어떤 것들이 있는지 1차적으로 찾아보고, 어떤 기업이 활용했는지 그리고 운영 측면에서 문제가 없었는지 살펴봅니다. 최종적으로 팀 차원에서 레퍼런스 체크까지 한 후 선택하고 있어요.
이항령: 토스팀에선 특히 플랫폼부터 서비스 쪽까지 폭넓게 경험해볼 수 있다는 점이 매력적이에요.
저희 팀은 네트워크 장비에 연결되어 있는 선이 실제로 어디에 꽂혀있는지 보는 하드웨어와 관련한 업무부터, 코드의 문제점인지 네트워크의 문제점인지 살펴보는 소프트웨어 측면까지 전부 다룰 수 있거든요. 문제가 생겼을 때 어디서 문제가 생겼는지 하나하나 뜯어볼 수 있다는 점이 큰 매력이라 생각해요. 굉장히 많이 배울 수 있어요.
다양한 오픈 소스 활용부터 폭넓은 업무 범위까지, 정말 매력적이지 않을 이유가 없네요.(이전 회사들과 비교했을 때) 토스팀의 특별한 매력이 무엇인지도 여쭙고 싶어요.
조규희: 이전 회사에서는 “이 부분 수정하시면 됩니다.” 라고 주로 지시하는 편이었는데, 토스팀에 와서는 제가 직접 수정하고 만질 수 있다는 점이 가장 재밌어요. 다만 꼼꼼히 봐야 하기 때문에 시간은 늘 많이 들여야 하고요.
그리고, 다른 사람에게 굳이 이야기를 꺼내야 내가 일하고 있다는 것이 보여지는 문화가 아니라는 점도 좋아요. 묵묵히 자기 일 열심히 하는 사람들보다 보여주기 식으로 어필하는 사람들이 더 인정받는 회사에서 실망을 많이 했었거든요. 티내지 않고도 본인이 맡은 일을 잘 해내는 사람들이 더 인정받는 회사에 가고 싶다는 생각을 했고요.
토스에 와서는 많이 해소된 것 같아요. 인센티브도 팀에 따라 나눠지는 것이 아니라, 토스팀 전체 목표와 달성도에 따라 결정되잖아요. 형평성이나 공평성의 측면에 있어 좋은 팀이라는 생각을 합니다. 이런 점 때문에 실망하는 일은 토스에서 없을거라 기대하고 있어요.
최명규: 이전에는 타 부서에 업무를 부탁하면 잘 안 도와주려 하고, 한 달씩 걸리기도 했는데요. 토스팀에서는 하루 만에도 해결되더라고요. 오히려 “제가 더 도와드릴 것 없을까요?” 라며 물어봐주시고요. 이런 사람들이 많다는 것이 가장 큰 차이점이자 매력인 것 같아요.
팀원 모두가 하나의 목표를 보고 함께 달리고 있기 때문에 시너지가 난다고 생각해요. 우리 팀 성장에 도움되는 일이라면 망설이거나 싫은 기색 없이 적극적으로 도와주시니까요.
이항령: 이전 직장에서 스트레스를 많이 받았을 때를 생각해보면, 저보다 역량이 뛰어나지 않은 사람들을 상사로 모시고 일할 때였는데요. 제 직급보다 높은 사람이 더 높은 직급으로 승진해야만, 제가 그 직급에 갈 수 있다는 사실이 불만이었어요. 상사가 승진할 수 있도록 도와야, 저도 잘 되는 조직 구조였으니까요.
그런데 토스팀에 와보니, 모두가 각자의 역할에 충실한 사람들이라서 좋았어요. 팀에서 리더를 담당하고 계신 분들의 역량과 성품을 보면 다들 뛰어나시거든요. 팀 리더십에 대한 신뢰가 두터워졌달까요.
형석님(Head of Technology)도 지시만 내리는 것이 아니라 항상 같이 일하며 솔선수범 하시고, 토스팀 리더 승건님도 일을 맡기는 것이 아니라 직접 데이터 살펴보고 비즈니스 방향에 대한 의견을 내시잖아요. 리더에게 일을 하달받는 구조가 아니라, 함께 일을 해나간다는 느낌을 받게 해주는 리더가 많다는 점이 토스팀의 큰 매력이라 생각합니다.
토스팀의 매력이라 말씀해주신 점들, 전부 공감이 가요. 토스팀에서 일하시면서 가장 보람을 느꼈던 순간은 언제였나요?
조규희: 문제점을 찾아서 팀에 공유할 때, 팀원분들이 “감사하다”, “(문제점을) 찾아주셔서 너무 좋다”고 이야기해주실 때 가장 보람차요. 슬랙(사내 메신저)에 정리해서 공유드리면 이모지도 막 달아주시거든요. (웃음)
사실 제 역할이 “문제가 있으니 고쳐야 한다.” 고 지적해야 하는 입장이라, 부담스러울 때가 많아요. 하지만 팀원분들이 일과 관련된 피드백이라는 것을 너무 잘 알고 계시기 때문에, 기분 나빠하시는 분들이 전혀 없어요. 오히려 고맙다고 하시는 걸 보면 제가 더 감사하고요.
최명규: 코드만 작성하면 바로 배포할 수 있는 시스템을 마련했다는 점이 정말 뿌듯했어요. 신규 입사자가 오셨을 때도 바로 활용할 수 있도록 준비해두었거든요. 팀원분들께 ‘배포 과정이 확실히 편해졌다’는 코멘트를 들으면 더더욱 뿌듯하죠.
이항령: 일하다보면 “이게 정답이 맞나?” 라는 생각이 들 때가 있어요. 기존에 없던 시스템을 만드려고 하는 작업일 때는 정답이 아닐 수 있어도, 적용해 볼 때가 있거든요. 이렇게 결정한 일이 잘 실행되고 많은 문제를 해결하게 될 때 정말 뿌듯해요.
기존에 없던 것을 만들기 위한 실험과 도전 과정에서, 실패도 하고 성공도 하면서 최선의 길을 만들어가는 이 과정이 신기하기도 하고 보람차기도 합니다.
가장 좋아하는 토스팀의 코어밸류는? 그리고 그 이유는 무엇인가요?
최명규: Never feel that’s not my job. “그건 내 일 아니야.” 라고 하는 사람 없이 모든 팀원들이 ‘우리의 일’이라 생각하고 함께 도와주시는 문화가 가장 좋습니다.
조규희: Go the Extra Mile. 장애가 생길 때 99%만 해결할 수도 있는데, 가능하면 100% 해결할 수 있는 길을 찾으려 해요. 그래야 저도 성장할 수 있고요.
이항령: Focus on Impact. 모든 코어밸류가 중요하지만, 중요한 것에만 집중하는 역량이 가장 중요하다 생각합니다.
방정식은 목표에 따라 달라지기 마련이기 때문에, 단순히 호기심으로 해결 방법을 선택하는 것은 바람직하지 않다고 생각해요. 팀의 문제를 해결하기에 가장 좋고 빠른 방법을 찾아 실현해내는 탁월함이 꼭 필요하다 생각합니다.
가장 좋아하는 복지도 여쭤보고 싶어요!
조규희: 13층 사내편의점을 가장 좋아합니다. 체력단련비도 좋아요. 내 돈 내고 운동하기 아까울 때가 있는데, 회사에서 지원해주니 정기적으로 운동하는 데에 부담이 적거든요.
최명규: 커피사일로, 편의점 너무 좋죠. 식사 비용도 회사에서 전부 지원해주고요. ‘이번 달에는 식비 20만 원만 써야지’, ‘커피는 일주일에 세 번만 마셔야지.’ 같은 금전적인 고민을 할 필요 없이, 일에만 집중할 수 있도록 만들어주는 업무 환경이 정말 좋은 것 같아요.
이항령: 저는 무이자 1억 대출과 스톡옵션이 좋아요. 특히 스톡옵션은 회사가 성장하는 것에 대한 과실을 팀원들과 함께 나눈다는 측면에서요. 매일매일 내부에서도 실감할 정도로 회사 가치는 계속 커지고 있는데, 그 성장 가치를 팀원들과 함께 나눠주니 일할 맛이 나죠.
마지막 질문입니다. 토스에서 꼭 이뤄내고 싶은 일이 있으신가요?
조규희: 처음 들어왔을 때보다 많이 안정화됐지만 아직도 해야 할 일이 많아요. 99%가 아닌 100% 안정화를 이뤄내야 한다고 생각해요. 그 과정에서 저도 성장할 수 있다고 믿고요.
최명규: 저도 처음 토스팀에 합류했을 때에 비해 자동화를 많이 해놓긴 했지만, 아직도 자동화되지 않은 부분이 있습니다. 이걸 모두 100% 자동화시키고, 서비스 개발자분들이 더 편리하게 사용하실 수 있는 운영 툴을 만들고 싶어요. 최고의 DevOps가 될 수 있도록! 그리고 3년 리프레시 휴가, 꼭 가고 싶어요.
이항령: 우선, 팀의 성장과 함께 개인적인 성장도 지속적으로 이뤄내고 싶고요. 토스가 장애를 내려고 해도 장애가 나지 않는 서비스가 되었으면 해요. 이 과정에서 시행착오도 많이 겪겠지만 우리 서비스가 성장해가는 과정에 꼭 필요한 거름이 될거라 믿어요.
토스팀에서 보고 듣고 느끼는 모든 것을 콘텐츠로 선보이고 있어요. 좋은 콘텐츠의 긍정적인 영향력을 굳게 믿고, 혁신을 일으키는 서비스는 우리 삶과 사회를 더 나은 방향으로 이끈다 확신합니다.
필진 글 더보기