brunch

브런치북 아키 3일 03화

You can make anything
by writing

C.S.Lewis

by 카카오뱅크 Plus Nov 16. 2023

오전 11시. 장애가 발생하면 고갤 들어 아키를 찾아라

인간 팔만대장경과 함께하는 트러블 슈팅 이야기 | 로이드

Day1. 11월 1일 (수) 오전 11시


여기 카카오뱅크의 인간 팔만대장경이라고 불리는 사람이 있습니다. 8년간 카카오뱅크 아키텍처 역사를 함께한 살아있는 전설. 일단 장애가 발생하면 Royd부터 찾으라는 말까지 있다고 하는데요.

툭 치면 카카오뱅크가 처음 세상에 선보여질 때의 아키텍처는 물론이고, 이후 어떤 사유로 아키텍처의 변화가 진행되었는지, 이로 인해 서비스에 어떤 영향을 미쳤는지까지도 술술 읊어준다고 합니다. 팀원들에게 아키팀 기술이사라고 불리는 Royd에게는 뭔가 특별한 트러블슈팅 노하우가 있을까요?



Royd. 애초에 장애가 발생하지 않게 방지하는 것이 최선이고요. 혹여나 장애가 발생하더라도 빠르게 대응하는 것이 중요하죠. 그래서 요즘은 장애 상황이 발생했을 때 최대한 빠르게 대응하기 위해 자동화에 많은 노력을 쏟고 있어요.


한 예로 이전에는 롤백을 위해 사람이 직접 수기로 명령어를 쳤다면 지금은 버튼 하나만 누르면 장애 대응할 수 있게 만들었어요. 트러블 슈팅에 걸리는 시간이 눈에 띄게 단축된 것은 물론이고 작업자의 숙련도와 관계없이 누구나 빠르게 장애에 대응할 수 있게 되었죠. 


또 트러블 슈팅을 완료한 후에는 '장애의 원인은 무엇이고, 어떻게 하면 재발 방지를 할 수 있을지'에 대한 회고를 장애 일지로 자세히 남기고 있습니다. 이러한 히스토리가 잘 관리되어야 비슷한 장애가 발생했을 때 빠르게 대응할 수 있고, 개인기에 의존하는 것이 아닌 시스템적으로 안정적인 트러블슈팅이 가능하다고 생각해요.


카카오뱅크 트러블 슈팅의 역사가 한 곳에.



듣기만 해도 손에 땀이 나는데요. 트러블 슈팅은 개발자에게 꽤 스트레스 받는 업무일 것 같아요

Royd. 부담스러운 일은 사실이죠. 행여 장애에 대응하다가 실수를 하면 더 큰 문제가 발생하기도 하니까요. 특히 카카오뱅크는 고객의 자산을 보호하기 위해 신뢰성과 안전성이 무엇보다 중요한데 트래픽까지 많이 몰리는 서비스이기 때문에 신경 쓸 점이 한 두 가지가 아니죠. 


하지만 팀에 트러블 슈팅 노하우를 가진 동료가 많기 때문에 이런 대용량 트래픽 환경에서 함께 장애를 대응하다 보면 개발자로서 한 단계 더 성장할 수 있다고 생각해요. 



Royd의 이야기를 들어보니 아키팀은 오히려 '문제가 생기기 전에' 대응이 가능하도록 대비하는데 많은 노력을 쏟고 있었습니다. 빠르게 불을 끄는 게 더 중요하다고 생각했는데 말이죠. 실제로 어떤 비상상황이 오더라도 안정적으로 서비스를 제공할 수 있도록 외부 API 호출 게이트웨이에 서킷 브레이커를 적용해 두는 등 당연해서 자칫하면 놓칠 수 있는, 그래서 더 중요한 기본을 충실히 하려고 노력 중이라고 하네요. 

하지만 이렇게 트러블 슈팅 경험이 많은 Royd도 카카오뱅크에서 아찔했던 순간이 있었다고 하는데요.



Royd. 선착순 이벤트로 갑자기 많은 트래픽이 몰려 장애가 발생할 뻔한 적이 있었는데 정말 아찔했죠. 이전까지는 은행이라고 하면 대용량 트래픽, 속도보다는 '정확성'에만 초점을 맞추면 된다고 생각했거든요. 근데 이날 이후로 '진짜 카카오뱅크는 다르다. 반드시 대용량 트래픽을 고려한 아키텍처가 필요하다'라는 걸 깨닫게 되었어요. 식은땀이 나긴 했지만 은행 아키텍처에 대한 사고를 전환할 수 있었던 계기가 됐죠.



근데 대용량 트래픽 환경이라 더 신경 써야 하는 부분이 있나요?

Royd. 사실 트래픽이 높지 않은 서비스라면 웬만하면 큰 문제없이 잘 돌아가요. 하지만 그 이상의 대용량 트래픽이 발생하는 서비스라면, 특히 하루에 수억 단위의 트래픽이 들어오는 카카오뱅크에서는 아키텍처의 구성에 대해 많은 고민이 필요합니다. 트래픽의 병목이 발생하는 부분을 걷어내지 않으면 어딘가에선 문제가 꼭 발생하기 때문이죠.


그래서 저희는 새로운 서비스 프로젝트가 시작되면 기획 초기단계부터 함께 참여해 아키텍처의 구조를 고민하고 있어요. 모든 개발이 완료된 후에 세팅, 운영만 진행하는 것이 아니라 비즈니스 로직이 어떻게 되고, 어떤 시스템과 연동이 필요하고, 그래서 아키텍처를 어떻게 구성할 것인지 기획자, 서버 개발자들과 긴밀하게 논의하며 개발하고 있습니다. 



답변에 격한 리액션을 할 때마다 수줍게 손사래를 치는 Royd였지만 질문에 조곤조곤 답해주는 그의 목소리에는 그동안 쌓아온 카카오뱅크 아키텍처에 대한 애정이 가득 묻어났습니다.

이런 Royd는 어느덧 카카오뱅크와 8년이라는 시간을 함께 하고 있는데요. 그동안 쌓아온 개발 커리어 중 가장 오래 일하고 있는 회사라고 합니다. 이쯤 되니 평생직장이라는 개념이 희미해진 오늘날, 이렇게 한 회사를 오래 다닐 수 있는 비결이 무엇인지 궁금해지는데요.



Royd. 그리고 가장 중요한 또 하나의 이유는 회사에 그간 아키텍처의 히스토리를 아는 사람이 누군가는 꼭 있어야 된다고 생각했어요. 


이전 회사에서 늘 고생했던 게 기존 레거시를 개선하고 싶어도 이를 개발했던 담당자가 부재하는 경우가 많았어요. '이런 코드가 왜 남아있지?'라는 의문이 들 때 답변해 줄 수 있는 사람이 있었으면 좋겠다는 갈증이 컸거든요. 그래서 '내가 카카오뱅크에서 히스토리를 설명해 줄 수 있는 사람이 되어야겠다'라고 마음먹었죠. 그렇게 일하다 보니 벌써 8년이 다 되어가네요.



와. 책임감이 엄청나네요. 전혀 생각지도 못한 답변이었어요

Royd. 근데 이런 분들이 저 말고도 카카오뱅크에 많아 남아 있어요. 그래서 기존 레거시를 개선하지 못해 늘 고민이었던 분들! 카카오뱅크에서는 전혀 걱정하지 않으셔도 됩니다. 오히려 기술 부채를 해결해 나가는 과정을 적극적으로 함께할 수 있을 거예요.



근데 아무래도 규제 산업이다 보니 불편한 점도 있을 것 같은데요.

Royd. 맞아요. 근데 개인적으로 개발자가 개발 인생에서 불편함을 한번 정도는 경험해 보는 것이 나쁘지 않다고 생각해요. (웃음) 물론 이미 모든 것이 세팅 완료된 곳은 편하고 따뜻하죠. 하지만 불편함을 개선해 나가면서 배우는 점이 분명 있거든요. 


당연하게 사용하던 툴을 카카오뱅크 환경에 맞게 개발하기 위해 동작 원리까지 깊게 고민하게 되고, 경험이 많은 동료들과 함께 무에서 유를 창조하는 보람도 있고요. 개발자로서 성장은 물론이고 나중에 창업을 하더라도(?) 도움이 되는 경험인 것 같아요. 다양한 스펙트럼을 경험할 수 있으니까요.



솔직한 답변 감사해요. (너무 솔직하긴 했지만요.) 끝으로 서버 개발자와 아키를 모두 경험한 개발자로서 서버 개발자가 아키 커리어를 쌓으면 어떤 이점이 있다고 생각하세요?

Royd. 일단 골고루 경험해 보면 개발자 커리어에 도움이 되죠. 세상에 개발을 할 줄 아는 사람은 많지만 아키텍처까지 고민해 본 개발자는 많지 않거든요. 본인 서비스만 보다가 전체 서비스를 챙기는 입장이 돼 보면 보다 큰 그림에서 개발을 바라보게 되는 것 같아요. 


담당하는 '서버에 오류가 있었네?' 정도가 아니라, 똑같은 프로그램이 올라가 있는데 특정 서버에만 오류가 발생하는 상황을 마주하며 그 원인을 찾아야 하니까요. 그게 네트워크 문제일 수도 심지어 dns, 하드웨어 문제일 수도 있거든요. 이런 문제들을 진단해 서버 개발자들에게 처방전을 제시해 주면서 시야가 넓어지는 것이 큰 장점이라고 생각해요. 


적당히 운영도 하고, 미들웨어, 자동화 도구에 대한 고민까지 다양하게 경험해 볼 수 있는 곳입니다. 어떻게 관심이 좀 생기시나요? 두려워 말고 지원해 보세요. 두 팔 벌려 기다리고 있겠습니다. (웃음)





이전 02화 오전 9시. 아키의 아침을 여는 사람들
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari