brunch

매거진 Work

You can make anything
by writing

C.S.Lewis

by 카카오뱅크 Plus Apr 09. 2024

든든한 기반 플랫폼을 만드는 서버 개발자를 만나다

공고 너머의 직무 이야기

Intro


카카오뱅크의 기반기술 서버 개발자는 어떤 일을 어떻게 하고 있을까요?

직무에 대해 조금 더 알아보는 시간, 공고 너머의 직무 이야기를 통해 확인해 보세요.

→ 서버 개발자 - 기반기술 공고 확인하기




Interviewee  


▪️ Brian : 기반기술엔지니어링팀을 맡고 있는 브라이언입니다. 팀에서 맡은 서비스와 관련된 다른 부서와의 협업을 주선하고, 정보 수집과 공유를 맡고 있습니다. #리더

▪️ Solar : 은행 코어 시스템과 외부 API를 연결하는 대외연계 시스템, 대고객 이미지 서빙 플랫폼을 개발하고 있는 서버 개발자 솔라입니다. #대외연계

▪️ Walter : 대고객 메시지 발송 시스템의 개발, 운영을 맡고 있는 월터입니다. #알림

▪️ Nathan : 사내 계정 관리와 계정 인증 서비스의 개발과 운영을 담당하는 네이썬입니다. #인증

▪️ Marc : 컴플라이언스 영역을 맡아, 여러 시스템을 만들고 운영하는 마크입니다. #컴플라이언스


(수줍..)


안녕하세요. 만나 뵙게 되어 반갑습니다. 오늘 '서버 개발자 - 기반기술' 직무에 대해 함께 살펴볼 예정인데요. 본격적인 질문에 앞서 간단한 팀 소개 부탁드릴게요!

Brian. 기반기술엔지니어링팀은 카카오뱅크가 서비스를 운영하는데 필요한 기본적이고 공통적인 플랫폼과 시스템을 만드는 조직입니다. 일례로 저희 팀에서 맡고 있는 고객에게 알림(카카오톡, 문자 메시지 등)을 발송하는 시스템은 전사에서 다양한 목적으로 활용하고 있는데요. 이처럼 어느 한 서비스나 팀에 해당하지 않은 회사 공통의 기반 시스템을 다루고 있답니다. 때문에 대고객용, 사내용 시스템을 모두 개발하고 있어요.



팀은 전부 서버 개발자로 구성이 되어있나요? 어떤 경험과 경력을 가진 구성원이 있는지 궁금해요.

Solar. 팀원은 전부 서버 개발자로 구성이 되어있어요. 연차는 2년 차부터 20년 이상까지 다양하고요. 기반기술엔지니어링팀 규모가 상대적으로 큰 편인데, 그중 금융 도메인을 가진 사람은 한 명 밖에 없는 걸로 알고 있습니다. 여러 도메인에서 온 동료들이 모여있어서 다양한 경험을 토대로 개발에 대한 의견을 주고받을 수 있는 분위기예요.


Nathan. 카카오뱅크에서 인턴으로 경력을 처음 시작하신 분도 있고, 대고객 서비스 개발 경험이 있거나 백오피스 개발을 해오신 분 등 다양한 사람들이 있어요. 어떤 배경을 가지고 있는 분이 와도 공감대를 형성하실 수 있을 거예요. (웃음)



그동안 대고객 서비스의 서버 개발자를 주로 채용했다 보니, 기반기술 서버 개발자는 어떤 직무인지 호기심을 가지고 있는 예비 지원자분들이 있을 것 같아요. 두 직무에 어떤 차이점이 있을까요?

Solar. 기반기술 서버 개발자는 플랫폼적인 성격을 가진 시스템을 개발, 운영하는 '플랫폼 개발자'에 가까운 직무인 것 같아요. 은행 서비스를 만드는데 기반이 되는 플랫폼을 개발하다 보니 회사 내 다양한 팀과 소통이 필요하고, 새로운 플랫폼을 개발하게 되는 경우 새로운 기술을 적용해 볼 수도 있어요. 개발하는 서비스의 영향을 받는 사람이 고객뿐만 아니라 내부 직원도 포함되기 때문에 폭넓게 고민을 해야 한다는 것도 차이점이에요.


Brian. 기반기술엔지니어링팀이 대고객 서비스를 개발하지 않는 건 아니에요. 일반적인 대고객 서비스 서버 개발자가 고객이 이용하는 예금, 대출 등 은행 상품/서비스를 다룬다면, 기반기술 서버 개발자는 그 상품과 서비스가 잘 제공될 수 있도록 직간접적으로 필요한 시스템을 개발하는 것에 가까워요. 개발을 할 때 고객에게 미치는 영향을 항상 생각해야 한다는 점은 동일하지만 더 다양한 이해관계자를 고려해야 하는 거죠. 



✍ 기반기술엔지니어링팀의 일은 크게 알림, 대외연계, 인증, 컴플라이언스로 나누어볼 수 있는데요. 업무 범위가 넓고 다양하다 보니 이해를 돕기 위해 영역별로 인터뷰를 정리했습니다.



# 대외연계

담당하고 있는 주요 프로젝트를 소개해 주세요.

Solar. 저는 대외연계 시스템(FEI, Front End Interface)과 대고객 데이터 서빙 서비스(MSM, Moderated Storage Manager)를 담당하고 있어요. 


먼저 FEI는 카카오뱅크가 외부 기관과 통신할 수 있게 하는 중간 레이어 시스템입니다. 기술적으로 설명해 보면 은행 코어 시스템의 Fixed Length 전문 형태를 json으로 변환하여 외부 기관과 이어주는 시스템이고 Kotlin과 Spring, JPA를 사용해 개발하고 있어요. 카카오뱅크만의 플랫폼(중개) 서비스를 출시하거나 외부 기관 데이터를 연계하는 등 외부 연계의 목적과 방향이 다양해지다 보니 니즈가 확장되고 있는 영역이랍니다.


MSM은 특정 조건에 맞는 고객이 이미지 업로드/다운로드를 할 수 있도록 하고, 썸네일을 생성하여 제공하는 콘텐츠 저장소 서비스예요. 스토리징 및 딜리버링을 구현하지만 사용자 인증 등도 함께 수행해야 하기에 기술 사용과 컴플라이언스를 동시에 고려해야 하는 서비스입니다. 기술 스택은 AWS EKS, DynamoDB, S3, Lambda이고 개발에는 Kotlin과 Quarkus, go 등을 사용하고 있어요.



담당 영역과 시스템에 따라 다른 언어를 사용한다고 보면 될까요?

Nathan. 기본적으로 Java 언어와 Spring Framework를 주로 사용하지만, 시스템의 성격에 따라 조금씩 차이가 있는 것 같아요. 필요에 따라 Quarkus를 프레임워크로 사용하는 동료도 있어요. 시스템을 설계할 때 본인이 원하는 언어와 환경을 요구사항에 따라 능동적으로 선택할 수 있다는 점이 기반기술 서버 개발자로 일하는 것의 장점 중 하나인 것 같아요.



소개하고 싶은 프로젝트가 있다면 마음껏 자랑해 주세요!

Solar. MSM을 소개하고 싶어요. MSM은 앞서 설명했듯 콘텐츠 저장소 서비스인데요. 모임통장에 공지 게시판(모임 게시판)이 새롭게 추가되면서 이미지 업로드 기능이 필요하게 되었고, 이에 대응하기 위해 만들어진 시스템입니다. 과거 기록통장의 서비스 '최애적금'에 MSM의 이전 버전이라고 할 수 있는 시스템을 구축했었는데요. 비슷한 니즈가 생긴 것을 확인하고, 플랫폼적 성격을 지닌 시스템으로 개발해야겠다는 판단을 해 추진하게 되었어요. 만약 모임통장의 개발자가 이 시스템을 만들었다면 모임통장에 한정되고 확장되기 어려웠을 텐데, 기반기술엔지니어링팀에서 개발하다 보니 전사적으로 활용할 수 있는 플랫폼이 될 수 있었답니다. 다양한 서비스에 활용될 수 있도록 시스템의 확장성에 대해 고민하며 개발할 수 있어 즐거웠던 경험이었네요.


요즘 카카오뱅크의 다양한 서비스가 클라우드 네이티브 환경으로 구축되고 있는데요. MSM도 그중 하나랍니다. 은행에서 클라우드를 사용한다는 것이 쉬운 일은 아니었지만, 규제에서 어긋나지 않으면서 새로운 경험을 할 수 있게 되어 신선했어요. 클라우드팀에서도 많은 지원을 해주셔서 성공적으로 서비스를 오픈할 수 있었는데요. 이 자리를 빌려 감사하다는 말을 전하고 싶네요.


* 카카오뱅크는 서비스 구축 시 클라우드를 사용함으로써 온 프렘 장비 구매 및 관리에 들어가는 리소스를 줄이고, 트래픽 증가 시 오토스케일링 등 운영에 용이한 기능을 활용할 수 있도록 하고 있습니다.



어떤 팀과 협업을 하고 계신가요?

Solar. 시스템, 프로젝트마다 다른데요. 우선 FEI의 경우 비즈니스 로직을 개발하는 계정계 개발자와 주로 소통하고 있어요. FEI가 계정계 서버와 외부 기관을 이어주는 서비스다 보니, 계정계와의 싱크를 맞추고 외부 기관과도 협업하는 게 주된 업무라고 볼 수 있죠. MSM은 아직까지는 모임통장의 모임 게시판에서만 활용하고 있어서 주로 모임통장의 모바일, 서버 개발자분들과 이야기 나누고 있습니다.



# 알림

담당하고 있는 주요 프로젝트를 소개해 주세요.

Walter. 저는 UMS(Unified Messaging System)라는 대고객 메시지 발송 시스템을 맡고 있어요. UMS는 카카오뱅크에서 발송하는 모든 메시지(SMS, LMS, 알림톡, 이메일 등)를 고객에게 전달하는 시스템이고, Java, Kotlin, Spring, Kafka, MySQL 등을 사용하고 있습니다. 6명의 팀원과 함께 하고 있어서 기반기술엔지니어링팀 안에서 규모가 큰 시스템 중 하나가 아닐까 싶네요.



어떤 팀과 협업이 이루어지는지 궁금합니다.

Walter. 시스템의 성격 상 협업 부서가 굉장히 넓은 편이에요. 우선 카카오뱅크의 모든 서비스의 기획자, 개발자와 협업하며 다양한 목적으로 알림과 메시지를 발송할 수 있도록 하고 있어요. 그중에서도 강한 협업을 하는 팀은 그로스마케팅팀인데요. 고객의 인게이지먼트와 캠페인의 퍼포먼스를 높일 수 있는 방법을 함께 고민하며 고도화된 알림 서비스를 만들어가고 있답니다. 고객서비스실은 메시지를 바탕으로 고객을 응대하는 곳이다 보니 중요한 협업 부서 중 하나이고요. 



UMS를 개발, 운영하면서 어떤 점을 중요하게 생각하시나요?

Walter. 은행의 거의 모든 서비스와 시스템에서 메시지 발송 서비스를 사용하고 있다 보니 작은 코드 수정에도 민감하고 영향을 미치는 범위 또한 상당히 큽니다. 시스템을 안정적으로 운영한다는 건 모든 개발자에게 당연한 말이지만, 저에게는 특히 최우선 순위이면서 큰 책임감을 느끼는 부분인 것 같아요. 그렇다고 해서 저희가 기존 것만 고집하고 바꾸지 않으려는 건 아니에요. 안정적인 운영 상태를 유지하면서도 다양한 기술적 시도를 이어나가고 있답니다. 필드에서 사용하고 있는 최신 기술을 최대한 활용해 보려 하기 때문에 더욱 도전적이며, 달성했을 때 성취감이 높아요. 안정적이면서도 새로운 시도, 두 마리 토끼를 다 잡기 위해 노력하고 있는 과정이 다이내믹한 것 같네요.



최근 집중하고 있는 프로젝트가 있다면 무엇인가요?

Walter. UMS는 카카오뱅크 오픈 때부터 존재해 왔고 많은 서비스와 연관되어 있다 보니 대형 레거시 시스템이 되었어요. 때문에 빠른 변화나 개편이 정말 어렵겠다고 생각했던 시스템 중 하나였는데요. 더 안정적이고 효율적인 메시지 발송을 위해 자체 개발한 시스템으로 교체하기 위한 프로젝트를 진행 중입니다. 어쩌면 카카오뱅크 전체가 사용하고 있다고 해도 과언이 아닐 정도로 시스템의 규모와 영향도가 크기 때문에, 기존 시스템이 안정적이고 평온하게 운영되는 와중에 교체 작업을 진행하는 것이 굉장히 어려웠는데요. 점진적으로 잘 추진되고 있어 저 역시 시스템과 함께 성장하는 경험을 하고 있습니다.





# 인증

담당하고 있는 주요 프로젝트를 소개해 주세요.

Nathan. 제가 맡은 영역은 IAM(Identity and Access Management)이라고 정의될 수 있어요. 구성원의 인사 정보를 통해 계정 정보를 생성하고, 사내 서비스들이 일관적으로 인증을 처리할 수 있도록 하는 직원의 계정 정보 관리 및 인증 연동 서비스나 솔루션을 제공하고 있습니다. 사용자 식별, 인증, 접근 통제 등 정보보호를 위한 민감한 영역을 다루고 있어 큰 책임감이 따라오는 영역이랍니다. Java, Spring와 더불어 Javascript, Vue Framework 등의 기술을 사용 중이며 Apereo, Openldap, Keycloak 등의 오픈 소스도 관리하고 있습니다. 



인증 영역을 맡아 개발, 운영하며 가장 신경 쓰고 있는 점은 무엇인가요?

Nathan. 영역의 특성상 내부 자원 관리를 지원하거나 조직 간 업무 프로세스를 다루는 일이 많은 편이에요. 저의 고객이 카뱅 동료들이고 다루는 데이터도 회사 내부 데이터다 보니, 어떻게 하면 큰 트래픽을 처리할 수 있을까라는 고민보다는 내부의 요구사항을 신뢰성 있고 효율적으로 처리할 수 있는 방법을 찾는데 집중하게 됩니다. 즉 프로세스 자동화나 업무 효율성 향상을 목표로 하고 있다는 점이 특징이라고 볼 수 있어요.



어떤 팀과 협업이 이루어지는지 궁금합니다.

Nathan. 사내 서비스를 운영하는 거의 모든 부서와 연관성이 있어요. 우선 계정이 존재하기 위해서 인사 정보가 있어야 하기 때문에 인사팀과 협업하고, 인사 시스템을 관리하는 경영플랫폼팀과 외주 직원 관리를 맡고 있는 총무팀과도 함께 일하고 있습니다. 또 계정에 있는 민감 정보를 어떻게 보호하고 관리할지에 대한 논의가 필수적이기에 정보보호실과도 많은 대화를 나누고 있고요.



소개하고 싶은 프로젝트가 있다면 부탁드려요.

Nathan. 최근 Keycloak을 활용한 사내 통합 인증 및 권한 부여 서비스를 론칭 준비 중에 있어요. 통합인증(SSO, Single-Sign-On)을 지원하고 인증 활동을 중앙 집중식으로 관리해, 동료들이 출근해서 로그인을 하는 순간부터 퇴근하는 순간까지 자연스럽게 인증이 수행될 수 있는 환경을 만들어보려고 합니다. 카카오뱅크가 빠른 성장을 하면서 다양한 목적의 사내용 서비스가 론칭되고 있는데요. 그에 따라 인증 수단 및 방식을 다양화하면서도 보안과 편의성을 함께 확보하는 것이 필요한 상황이에요. 보안, 안정성과 편의성을 모두 잡으며 사내 인증을 고도화할 수 있는 방법에 대해서 앞으로 고민해 나갈 예정입니다.



# 컴플라이언스

담당하고 있는 주요 프로젝트를 소개해 주세요.

Marc. 다른 영역에 비해 컴플라이언스 영역은 시스템의 목적과 종류가 다양한 편이랍니다. 우선 카카오뱅크에서 사용하는 모든 시스템과 자산을 매핑해 관리하는 IMS(정보 관리 시스템, Information Management System)을 개발, 운영하고 있어요. 또 발생한 오류를 리포트하는 오류관리 시스템, 데이터클렌징 및 자체감사 행정시스템, 서버/DB 접근통제 서비스를 맡고 있습니다.



새로운 시스템을 개발하는 경우가 더 많으신가 봐요.

Marc. 금융 규제가 변경됨에 따라 새로운 시스템이 필요한 경우가 많거든요. 또 회사가 빠르게 성장하면서 수기로 관리되고 있던 것을 시스템화하여 효율성을 높이는데 초점을 맞추고 있는 시기이기도 하고요. 각 시스템의 성격이 다르다 보니 다양한 기술을 적용해 볼 수 있고, 하나의 시스템을 '완성'하는 경험을 쌓아갈 수 있다는 장점이 있습니다.



어떤 팀과 협업이 이루어지는지 궁금합니다.

Marc. IT자체감사팀과 강한 협업이 진행되고 있어요. 컴플라이언스 영역에서 다루는 은행법과 금융 규제가 구성원분들이 일하는 데 있어 불편함으로 느껴지지 않도록 깊이 있는 고민을 나누며 시스템을 기획, 개발하고 있습니다.





# 채용 공고 함께 읽기

이제 채용 공고를 함께 살펴볼게요! 가장 먼저 담당할 업무인데요. 어떤 업무를 함께 하게 될까요?                              

담당할 업무

· Compliance 업무 수행에 필요한 서비스 개발
· 정보보안 서비스 개발
· 대외기관 연계 관련 서비스 개발

Marc. 저와 함께 컴플라이언스 영역의 개발을 맡을 분을 영입하고 있습니다. 앞서 설명했듯이 컴플라이언스 영역에서는 궁극적으로 개발자들이 법과 규제보다는 편의성에 중점을 두고 개발하더라도 자연스럽게 금융당국의 기준에 맞는 결과물을 낼 수 있도록 고도화하려고 하고 있어요. 이런 부분을 함께 하고 싶은 분이라면 지원해 주시면 좋을 것 같습니다.


컴플라이언스나 정보보안 관련 배경 지식이 필수인지 궁금해요.

Marc. 관련 지식과 경험이 없어도 입사 후 충분히 배울 수 있는 환경이라 걱정하지 않으셔도 됩니다. 실제로 팀에서 입사지원서를 검토할 때 이전 직장의 규모, 산업군, 트래픽 크기 등은 고려하지 않아요. 필수 경험과 역량에만 해당한다면 코딩테스트를 통해 개발 역량을 검토하고 있습니다.



다음은 필수 경험과 역량이에요. 단 한 줄, Java 역량만 필수 지원자격으로 두셨는데요. 어느 정도 수준의 역량과 경험을 보유하신 분이면 좋을지 구체적으로 말씀해 주시면 좋겠습니다.                              

필수 경험과 역량

· Java를 이용한 서비스 개발 및 운영 경험 5년 이상 10년 이하인 분

Brian. 필수 경험과 역량은 지원 자격이기 때문에 이 요건에 반드시 해당하는 분의 입사지원서만 검토하고 있어요. 새로운 영역의 사람과 만나서 대화를 통해 업무를 이해하고, 완성도 높은 서비스를 만들어낼 수 있는 수준을 고려해서 셋팅한 자격요건입니다. 



기반기술 서버 개발자에게 가장 중요한 역량은 무엇일까요?

Walter. 회사 내 다양한 부서와 협업을 진행하다 보니, 이해관계자 간의 원활한 커뮤니케이션이 가장 중요해요. 카드, 뱅킹, 비금융 서비스 등 상대방의 도메인이 다양하기 때문에 알림이 의도대로 잘 나가게 하려면 계속 만나서 대화하고 이해하려는 과정이 필요하거든요. 연차나 경험 등을 모두 떠나서 서로를 존중하고 의견을 경청하는 것이 기반이 되어야 옳은 방향으로 일이 진행되고 서로 발전할 수 있다고 생각합니다. 두 번째는 일정 관리인데요. 상품/서비스 오픈에 차질이 없도록 하기 위해서는 기반이 되는 저희 플랫폼이 정해진 일정에 정확히 준비가 되어야 하기 때문에 이 부분을 신경 쓰고 있어요.


Brian. 다른 팀과 이야기할 때, 보통 본인의 팀 관점에서 이야기를 하게 되는데요. 저는 그 순간 상대 팀의 입장으로 들어가 보려고 하는 것 같아요. 상대방을 빠르고 정확하게 이해하기 위해, 열린 마음으로 커뮤니케이션할 수 있는 것이 가장 중요한 역량이 아닐까 싶네요.



마지막으로 팀 자랑을 마음껏 해주세요!

Walter. 다양한 경력과 역량을 갖고 있는 동료와 함께 많이 배우고 성장할 수 있습니다. 

Solar. 카카오뱅크 서비스의 근간이 되는 플랫폼 서비스를 개발하며 성장하고 싶은 분이라면 지원해 주세요!



브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari