제로베이스 백엔드 스쿨

백엔드 공부의 핵심은 '코드'입니다.

카카오페이 해외결제 개발파트 Lead 양세열님 인터뷰

백엔드 스쿨 인터뷰_양세열님
  • '모든 사업 분야가 중요하고 핵심적인 역할을 하지만, 그중에서도 백엔드는 서비스의 두뇌와 심장'이라는 양세열님.
    양세열님께서는 카카오페이의 해외 결제 개발파트 Lead를 맡고 계시며 약 3,700만 명의 유저를 가진 카카오페이 시스템 개발에 참여하셨습니다. 저희 제로베이스의 백엔드 스쿨 커리큘럼 구성에도 참여해 주셨는데요. 생생한 비하인드를 지난 2월 직접 만나 뵙고 여쭤봤습니다.

Q. 안녕하세요 세열님, 소개를 부탁드립니다.

안녕하세요. 카카오페이에서 해외결제 개발파트 Lead를 맡고 있는 양세열입니다. 여러분들이 구글 플레이 스토어나 애플 앱스토어에서 카카오페이를 통해 결제하는 경우들이 있을 텐데요. 바로 그 기능을 만든 사람입니다. (웃음) 여러분께서 직접 보시는 화면이 아닌, 보이지 않는 곳에서 결제 처리를 원활하게 이어주는 그 시스템을 만들었습니다.

Q. 세열님께서는 '백엔드 개발자' 어떤 직업이라고 생각하시나요?

프로덕트에서 모든 분야가 다 중요합니다. 프론트엔드, 백엔드, 데이터 그리고 기획자분들, 사업하시는 분들 다 서로 중요한 역할을 하고 있으며, 서로 맞물려서 함께 일을 하고 있는데요. 그중에서도 백엔드는 서비스의 허리와 같은 역할을 하고, 서비스가 확장하고 기능이 다양화되는 데 가장 중추적인 역할을 하는 사람이라고 생각합니다.

Q. 백엔드 개발자, 프론트엔드와는 어떤 점이 다를까요?

프론트엔드는 상대적으로 기술 트렌드가 빨리 변하고 새로운 기술이 나왔을 때 빠르게 적용할 수 있습니다. 굉장히 트렌디하고 재밌는 기술을 빠르게 적용할 수 있어 재밌겠다는 생각을 많이 했었어요.
반면 백엔드는 상대적으로 기술의 흐름이 조금 느립니다. 한 번 구성된 시스템은 수만 명이 있을 때도, 백만 명이 되었을 때도, 천만 명이 되었을 때까지도 계속 사용됩니다. 이렇게 사용자들이 계속 증가했을 때도 본래의 시스템을 계속 발전시켜 나가면서 써야 하는 것이 백엔드입니다. 쉽게 설명하자면, 사용자가 10명일 때의 사용된 시스템 데이터가 10만 명이 된 지금까지 축적되어 있어야 한다고 이해해주시면 될 것 같아요. (웃음) 그렇기에 백엔드는 확장성까지 고려해서 깊이있는 개발을 해야 합니다. 긴 시간을 고려해서 설계를 하고 개발을 해야 하죠.

Part. 1 꿈의 직장 '카카오'에 대하여

카카오페이 백엔드 개발자

Q. 카카오페이에서 담당하시는 파트에 대해 소개해주세요!

네, 저는 카카오페이에서 해외 결제 파트 개발을 하고 있습니다. 구글 플레이 스토어나 애플 앱스토어, 아이허브, 소니 플레이 스테이션 등을 통해 해외 결제를 하실 때 카카오페이를 활용하신다면 제가 만든 시스템을 활용하여 결제를 하시게 되는 겁니다. 아! 그리고 카카오페이 내에 있는 상품권 시스템에도 참여하여 개발하였습니다.

Q. 카카오페이에서 개발하시며, 뿌듯함을 느꼈던 순간이 있다면요?

개발을 하다보면 처음엔 요구사항이 단순했다가 점점 그 요구사항들이 복잡해지거나, 처음 구성할 땐 예상하지 못했던 새로운 요구사항을 직면하게 될 때가 있습니다. 그러다 보면 시스템이 굉장히 복잡한 구조를 가지게 되죠.

복잡성 안에서 일정한 규칙성을 발견해냈을 때 약간의 희열을 느낍니다. 그리고 발견한 규칙성을 토대로 코드를 다시 한번 리팩터링하고 테스트와 검증을 통해 내가 발견해낸 그 규칙성이 맞다는 게 증명되었을 때 뿌듯함을 넘어 짜릿함을 느끼곤 합니다.

Q. 카카오페이의 개발 문화는 어떤가요?

카카오페이는 핀테크가 아닌 '테크핀'을 지향합니다. 아무래도 금융조직이다 보니 완전히 금융의 법이나 보안으로 부터 자유로울 순 없습니다. 여러 조직들 중에서는 상당히 좀 딱딱한 조직이 있기도 합니다. 테크핀을 지향하는 카카오페이의 개발조직에서는 새로운 기술과 방법들을 많이 도입하고 있습니다. 사내에서도 자율적인 스터디를 하며 최신 기술 흐름을 적용해보기도 합니다. 기술은 계속 발전해나가고 주변 환경도 계속 변화합니다. 그렇기 때문에 저희는 계속 새로운 변화를 감지하고 앞장서고자 노력하고 있습니다.

가장 자랑하고 싶은 점은, 타 회사에서 보기 드문(?) 친절하고 말이 많은 동료들이 매우 많습니다. 채용 시 (특히 2차 면접에서) 컬쳐핏을 많이 보는 것으로 알고 있는데, 그렇기에 조직 융화력이 좋고 친절한 사람들이 많이 모여있습니다.

Q. 카카오페이의 개발자의 하루 일과는 어떤가요?

카카오페이 뿐만 아니라 대부분의 개발자분들이 본인에게 할당된 업무에 관련한 개발 (로직, 테스트, 리팩터링)과 코드 리뷰 업무가 많습니다. 제가 처음 카카오페이에 합류하게 되었을 때의 이야기를 해드릴게요. 당시 기능 개발에 이틀 정도 소요되었었는데요. 막상 코드리뷰를 하고 그 결과를 바탕으로 다시 개발하고 이 반복이 일주일 이상 진행했던 적도 있습니다. 처음엔 이게 빨리 나가야 되는 기능인데 이렇게 해도 되나 라는 생각을 했는데요. 꼼꼼한 코드리뷰를 통해 기능 개발에 있어서 설계, 테스트, 컨벤션 등 정말 여러가지 측면을 배울 수 있었고 함께 일하는 방법, 팀원들의 소통 방식 등을 학습할 수 있었습니다. 이러한 과정이 있었기에 더 빨리 더 좋은 코드를 만들 수 있었습니다.

저는 코드 리뷰가 정말 중요한 문화라고 생각하고 코드 리뷰가 카카오페이의 개발 문화를 지켜주는 핵심이라고 생각합니다. 간혹 코드 리뷰에서 나오는 코멘트나 리뷰 내용이 공격 혹은 지적이라 생각해서 힘들어 하는 분들이 계시다는 것을 알고 있습니다. 저도 예전에는 그런 생각을 많이 했고요. 하지막 카카오페이에서는 코드 리뷰를 함으로써 이 코드를 함께 책임진다는 생각을 하고 있습니다. 해당 코드로 인해 발생하는 장애나 문제점에 대해 함께 책임을 질 수 있는 문화, 이 문화의 핵심엔 코드 리뷰가 있었다고 생각합니다.

Part. 2 '개발자 채용'에 대하여

Q. 개발자 이력서 검토 시 눈에 띄는 이력이 있다면 어떤 건가요?

신입 개발자라고 해도 팀을 이뤄 사이드 프로젝트를 진행한 경험이 있다면 면접에서 많이 도움이 되곤 합니다. 사이드 프로젝트를 진행하면서 팀원들 간의 충돌을 해결하는 방법이나 함께 코드 리뷰를 하는 방법들을 보면서 지원자의 성향을 조금 더 깊이 있게 파악할 수 있었던 거 같고요. 그런 경험에서 얻을 수 있는게 많기에 협업 프로젝트 경험이 있는 지원자에게 유리한 점이 있는 것 같습니다. 경력 개발자의 경우에는 모두가 어려워하는 레거시 시스템을 개선해본 경험이 있거나 대량 트래픽을 견뎌내고 이슈를 해결해본 이력이 좋은 경험으로 보이는 것 같습니다.

Q. 신입 백엔드 개발자 취업 준비 시 꼭 알아야 할 내용이 있을까요?

‘나는 신입이니까’ 라는 생각보다는 경력자와 버금가거나 더 좋은 개발자가 되겠다는 생각을 가졌으면 좋겠습니다. 최근 신입 개발자라고 하더라도 3년차 경력 공고를 뚫고 입사하시는 분들이 간혹 있을 정도로 프로 마인드를 가지고 계신 분들이 많이 계시더라고요. 적응도 빠르고 오히려 기존 경력 개발자 분들보다 잘한다는 느낌이 들 정도로 대단한 신입 분들을 주변에서 많이 목격했던 것 같아요. 그래서 신입 준비를 하시더라도 '나는 신입이니까 조금 못해도 돼' 이런 생각보다는 '나는 프로 개발자다'라는 마음으로 진지하게 임해서 도전해주셨으면 좋겠습니다.

Part. 3 '제로베이스 백엔드 스쿨'에 대하여

Q. 백엔드 스쿨이 현직자 강사진으로 구성이 되어 있으며, 또 세열님께서 참여해주셨는데요.

맞아요. 제가 직접 커리큘럼 구성에 참여한 제로베이스 백엔드 스쿨은 저 포함하여 네카라쿠 전현직 강사진 분들로 구성이 되어있습니다.

Q. 백엔드를 현직자에게 배워야 하는 이유가 있을까요?

개발이라는 분야는 학문과는 다소 결이 다릅니다. 그리고 변화의 속도와 폭이 아직도 매우 크고 심지어 점점 더 빨라지는 것처럼 느껴지기도 합니다.
3~4년전에 썼던 기술들이 이미 구닥다리가 되는 경우도 많고, 잠시 인기를 끌었다가 금세 사그라든 기술들도 많습니다. 따라서 현업에서 현재 가장 인기를 끌고있는 기술을 적시에 배워야 구직 시에 매우 유리한 입장에 올라설 수 있다고 생각합니다.
그리고 코드리뷰와 같은 개발자들끼리의 커뮤니케이션 방법도 현직자들과 함께 개발 내용을 리뷰받은 후 일방적으로 수용하지 말고 나의 의견도 덧붙여보며 아무리 현재 나의 기술이 부족하다고 해도 일방적인 지도나 교육이 아닌 토론이라는 것을 배울 필요가 있다고 생각합니다.

백엔드 스쿨 커리큘럼

Q. 직접 커리큘럼을 구성해보며 느낀 점이 있다면요?

제가 중점으로 담당했던 파트는 자바에서 스프링으로 넘어가는 첫 단계입니다. 그렇기에 스프링을 현업에서 다뤄보지 않은 분들, 혹은 이름만 들어본 분들을 위한 커리큘럼을 만들기 위해 고심을 많이 했습니다. 순수 자바로 프레임워크 없이 main에서 시작되어 내가 모든 것을 컨트롤하는 방식으로 코딩을 하다가 갑자기 프레임워크의 세상에 와서 그 룰을 따라야만 했을 때의 갑갑했던 기억들을 떠올려보며 커리큘럼을 구성했어요. 그래서 바로 스프링 강의를 진행하지 않고 자바 프로젝트와 심플 스프링을 작성해보는 시간을 가진 후 진짜 스프링을 다루는 방식으로 진행하도록 구성했습니다. 제 강의가 자바 세상에서 스프링 세상으로 건너오는 좋은 교두보가 되길 바라 봅니다. (웃음)

Q. Java, 자료구조 알고리즘, 데이터베이스만 깊이 있게 3개월 다루는 게 어떤 의미가 있을까요?

서버는 특성상 한번 만들어지면 짧게는 몇 년, 길게는 십 년 이상 사용되기도 합니다. 그 안에 저장된 데이터들은 계속 보관되어야 하고요. 따라서 이 시스템은 한번 구동하게 되면 멈출 수가 없습니다. 그렇기에 처음 초기에 잘 못 만들어진 시스템은 고치는 것이 상당히 어려워지거나, 아예 버리고 새로 만들어야 하는 어려움에 처할 수도 있습니다.

다른 분야도 마찬가지겠지만, 백엔드는 특히나 기본적인 베이스 지식이 없이 프로젝트만 양산한다면 유지 보수성이 떨어지고 나중에는 더 이상 활용할 수 없는 골동품 시스템이 되곤 합니다. 그렇기 때문에 처음부터 시스템과 네트워크 등 다양한 환경들을 잘 고려해서 설계해야 합니다. 특히 자료구조-알고리즘-데이터베이스는 셋이 함께 연결되는 부분들이 많기 때문에 어느 하나를 소홀히 하게 되면 다른 두 개를 이해하는데 한계가 발생하게 됩니다.

그리고 언어는 어떤 언어든 하나를 제대로 알게 되면 좋지만 현재 가장 널리 사용되고 있는 자바를 깊이 있게 이해하고 있어야 지만 향후 프로젝트를 배우면서도 겉핥기가 아닌 깊이 있는 이해를 할 수 있다고 생각합니다.

Q. 백엔드 스쿨의 커리큘럼에서 이건 꼭 제대로 해야해 라고 생각하는 부분이 있을까요?

스프링은 오랜 기간 많이 성숙된 프레임워크입니다. 가끔 윈도우 같은 느낌을 받기도 하는데요. 윈도우에서 아직도 도스 게임이 돌아가듯 스프링도 10년 이상된 기술들도 지원을 하고 있습니다. 그만큼 다양하고 폭넓은 기술을 다 포용하고 있기 때문에 새로 시작하시는 분들 중에서는 '스프링이 너무 어렵다', '너무 복잡하다', '배울 게 너무 많다'는 이야기를 많이 하시더라고요.

제가 구성한 스프링 강의는 좀 더 핵심적인 기능에 포커스 맞춰 설명을 드리려고 합니다. 핵심과 본질적인 부분에 집중하여 스프링의 가장 코어한 기능이 무엇인지 파악할 수 있는 시간이 되실 겁니다. 그리고 그 외의 부가적인 기능들에 대해서는 조금 부담을 덜고 하나하나 차근차근 알아가시면 좋을 것 같아요.

Q. 도메인을 하나를 가지고 프로젝트를 수행해보는 것은 어떤 의미가 있을까요?

도메인에 따라 중요한 부분과 덜 중요한 부분이 달라집니다. 중요/덜 중요한 부분들에 따라 주로 활용하는 기술들도 다르고 같은 기술도 활용하는 방법들이 달라집니다. 특히 같은 기술을 각 도메인에 따라 다른 방법으로 적용하는 것들을 보면 기술에 대한 다양하고 균형감있는 시각을 가질 수 있을 것 같아요.

Q. 백엔드 스쿨을 추천하는 사람이 있다면요?

서비스를 만들어서 사용자들에게 서비스하는 기쁨을 느껴보고 싶은 사람. 탐구심과 끈기가 있는 사람. 특히 모든 과정을 제대로 진행한다면 제로베이스에서 꽤 괜찮은 베이스가 있는 개발자가 만들어질 것 같은데, 모든 과정을 집중력있게 진행할 수 있는 끈기가 필요해보입니다.

Q. 백엔드 취업 준비중인 수강생 분들께 격려, 응원의 한마디 부탁드립니다.

제로베이스 백엔드 스쿨 과정은 쉽지 않습니다. 대학 4년의 전공 내용을 짧은 시간에 압축적으로 배워야 하는 힘든 과정입니다. 하지만 모든 과정을 깊이 있게 이해하고 넘어간다면, 그리고 배운 것들을 해당 지식이 없는 사람에게도 설명할 수 있다면 좋은 개발자가 될 수 있다고 생각합니다. 잘 이해되지 않는 부분이 있다면 절대로 그냥 넘어가지 말고 끊임없이 탐구하고 토론해 보세요.

저도 열심히 탐구하고 토론하고 공부하고 있겠습니다. 그리고 우리가 함께 좋은 서비스를 만들고 서로가 배워가는 좋은 동료가 되는 그 날을 기다리겠습니다.


>> 백엔드 스쿨 바로가기


추천 컨텐츠