메뉴 건너뛰기


커리어 세부메뉴

직무인터뷰 > 모바일개발

우아한형제들 백엔드개발자

우태균 개발자 · 송인태 개발자 2021.06.23. 조회수 9,048 Tag #우아한형제들 #배달의민족 #백엔드개발자

우아한형제들

우태균 / 백엔드 개발자
송인태 / 백엔드 개발자

 

Interview 01

담당업무 소개

 

우아한형제들에서 맡고 있으신 주요 역할에 대해 소개해 주세요.

우태균 개발자: 안녕하세요. B마트서비스팀에서 백엔드 개발자로 일하고 있는 우태균입니다. B마트서비스팀은 고객분들이 직접적으로 사용하는 앱과 웹 서비스를 만들고 있는데요. 저와 같은 백엔드 개발자들은 서비스에 필요한 각종 API를 제공하고 상품, 카탈로그와 같이 노출에 필요한 데이터를 관리하고 제공합니다.

저를 포함 네 명의 백엔드 개발자들은 여러 영역을 넘나들며 함께 작업하고 있는데요, 최근 저는 다양한 상품을 고객들이 원하는 시점에 원하는 구성으로 보여주기 위해 노력하고 있어요. 개인화 추천 상품 구좌와 AB 테스트를 통한 데이터 기반의 서비스 발전을 위한 기반 작업을 하고 통계 데이터를 수집, 분석하는 데 기여하고 있습니다.

송인태 개발자: 안녕하세요, 딜리버리플랫폼팀 라이더서비스파트에서 백엔드 개발자로 일하고 있는 송인태입니다. 우선, 제가 속해 있는 파트에 대해 소개하자면 라이더분들의 생애 주기에 관련된 업무를 담당하고 있어요. 라이더분들의 가입부터 시작하여, 운행 그리고 탈퇴 시까지 라이더분들에게 보험, 정산, 맞춤형 광고, 운행 통계 등을 제공하여 더 나은 환경에서 배달을 할 수 있도록 지원하고 있습니다.

저는 파트 내 대부분의 업무를 진행하면서 파트 및 팀 내에 다양한 직군의 팀원들과 함께 ‘더 나은 서비스들을 제공하기 위한’ 기능 개발과 개선 업무를 맡아 진행하고 있고, 백엔드 개발자로서 서비스를 안정적으로 운영할 수 있도록 시스템 모니터링 환경 구축 및 실질적인 시스템 모니터링, 그리고 성능 개선 업무를 맡고 있습니다.

 

우아한형제들에서 백엔드 개발자로 일하며, 언제 성취감을 느끼시나요?

우태균 개발자: B마트 서비스가 성장하는 과정에서 발생하는 이슈를 관리하고, 업무들을 수행할 때 성취감을 느끼고 있어요. B마트 서비스는 2019년 배민마켓으로 오픈해서 B마트로 서비스명칭이 변경되고, 마트 규모의 장보기 서비스로 발전해 왔는데요. B마트 서비스를 제공하는 지역도 확장되고 이용하는 고객과 판매하는 상품 구색도 다양해지면서 몇몇 이슈들이 있었고, 서비스 성장을 위한 여러 시도를 하게 되었어요. 그중에서도 저는 사업의 확장과 동시에 안정적인 서비스 제공을 위해 인프라를 분리시키고 구조를 잡는 일들을 하고 있습니다. 이런 안정성과 관련된 작업은 진행하는 당시에는 다소 과해 보이는 작업으로 보일 수도 있고 장점이 크게 보이지 않는 경우도 있어요. 하지만 시간이 지나고 보다 복잡하고 다양해진 데이터를 다루는 일에도 큰 부담 없이 확장해나가는 스스로를 발견하며 ‘과거에 내가 한 일이 현재의 나를 만들었다’는 생각과 함께 큰 성취감을 안겨줘요.

오픈 초기와 달리 서비스가 성장 궤도에 접어들면서 다양한 마케팅을 시도하게 되고, 고객 이용 패턴 분석을 통한 의사 결정 등 데이터를 기반으로 한 다양한 업무가 생겨납니다. 이때, 데이터팀과 협력하여 추천 모델을 만들기도 하고 저희 데이터를 마케팅 매체에 제공할 수 있게 가공하여 전달하는 등 다양하게 확장된 업무들을 진행하게 될 때면, 특정 업무 내에서도 여러 가지 시도를 통해 인사이트를 얻고 더 발전된 형태로 나아가게 되는데요. 다양한 방식으로 함께 고민하고 한 걸음씩 나아가 종국에 서비스 성장에 기여되는 모습을 지표로 확인할 때 성취감을 느끼고 있습니다.

송인태 개발자: 팀에서 제공하는 배민커넥트 서비스는 제가 팀에 합류하고 지금까지 지속적으로 빠르게 성장을 하고 있는데요. 이렇게 폭발적으로 성장하는 서비스를 운영하는 과정의 다양한 순간에 성취감을 느끼고 있습니다.

우선, 지속적으로 늘어나는 라이더분들(배달대행을 해주시는 라이더분들과 배민커넥트 서비스를 이용하는 일반 유저) 및 배달의민족, B마트 배달건들을 대응하면서 운영하고 있는 시스템에 예상하지 못한 여러 이슈가 발생했고 팀에서는 이를 해결하기 위해 많은 노력을 하고 있습니다. 예를 들어, 많은 주문량을 처리하기 위해 팀원들과 함께 시스템 구조를 개선하거나 새로운 기술 스택을 익히고 학습해 적용하고, 문제를 해결해 나가면서 다양한 경험을 하고 있습니다. 문제를 해결하거나 새로운 기능을 개발할 때 이전의 내가 생각하지 못한 다양한 관점에서 고민하고 기능을 개발하는 매 순간마다 성취감을 느끼고 있습니다.

또한, 이런 시스템적인 부분뿐만 아니라 서비스를 사용하는 사용자가 많아지면서 다양한 기능을 제공하는데, 이를 통해 여러 도메인을 경험하고 있어요. 정산 시스템을 개발하거나, 라이더들의 보험을 보험사와 연동해 개발해 나감으로써 이전에 알지 못했던 도메인과 비즈니스 영역을 배우고 익히는 과정에서 성취감도 얻습니다.

Interview 02

기술 성장 과정

 

 

우아한형제들에서 어려운 과제를 극복하고 기술적으로 성장한 경험을 이야기해주세요.

우태균 개발자: 우아한형제들은 작년부터 ‘피트스탑(Pitstop)’이라 불리는 과제와 업무 재정비 기간을 약 한 달간 가지고 있는데요. *피트스탑(Pit Stop)이란, 피트(pit)라는 서킷(circuit) 안의 간이정비소에서 레이싱 경기 중, 차량을 정비보수하고 타이어 등을 교체하는 것을 말합니다.

이는 “새롭게 일을 추가하는 것만큼이나 이미 우리가 하고 있는 일의 생산성을 높이고 안정성을 확보하는 것이 중요하다는 것을 같이 공유하고 동참을 유도하기 위한 캠페인 개념”으로 대표이신 범준님이 전사에 공유해 주셨어요.

피트스탑 기간 동안 우아한형제들의 개발자들은 약 한달 동안 각 서비스가 보완해야 할 사항들을 개선해 나가는 작업을 진행 했습니다. B마트 서비스 또한 점차 다양한 형태로 발전하며 발생한 서비스와 시스템 안정성 문제를 해결하고자 피트스탑 기간 Pub&Sub 구조로 리드모델을 구축하는 작업을 진행했어요. 관리와 노출 도메인을 분리하여 구조적으로 안정성을 가져가는 이 모델은 Entity 변경점을 Hooking 하여 Consumer를 통해 노출을 위한 비정규화 데이터로 전환하는 과정으로 구성돼요. 관리에 용이한 정규화 데이터의 장점을 유지하고, 이를 비정규화하는 과정이 노출 도메인에 그대로 적용되면서 인스턴스 리소스 사용량을 크게 감소시키는 효과를 얻을 수 있었어요.
이 과정에서 복잡하게 얽혀있던 도메인을 분리하고 레거시 코드를 대거 제거할 수 있었습니다. 또한, 다양한 서비스 레이어에 걸쳐 적용되어 있던 캐시를 비정규화된 리드모델 하나만을 캐싱하는 형태로 수정하면서 복잡도도 낮추고 구조 변경에 따라 노출에 영향을 주는 범위를 크게 줄일 수 있었어요. 광범위한 영역을 동시다발적으로 수정해 나가며 구조를 잡는 과정이었기에 함께 작업한 동료들과 역할을 적절히 나누어 진행했고, 활발한 소통을 통해 최선의 형태로 구현되도록 노력했던 경험은 앞으로 백엔드 개발자로서 바르다고 생각되는 개선 사항을 진행하는 데 망설임을 줄이고 자신감을 얻는 계기가 되었어요.

 

라이더서비스 백엔드 개발자로 일하시며 스스로 성장하고 있다고 느낀 경험이 있다면 말씀해 주세요.

송인태 개발자: 백엔드 개발자로 일하며 다양한 도전적인 과제들을 수행해왔고, 그중 주문별 라이더 배치작업 성능 개선 과제를 소개하고자 합니다.

서비스가 빠르게 성장하며 주문별 라이더 배치작업 시스템의 데이터베이스에도 영향을 주기 시작했어요. 시스템 알람을 통해 장애가 발생하기 전에 로그 및 지표들을 확인하며 두 가지 문제점을 발견하게 되었습니다.

첫 번째는 데이터를 병렬로 처리하고 있는데, 데이터양이 방대해진 탓에 사용하는 스레드 개수가 증가하고 있었고 두 번째로는 각각의 스레드들이 독립적으로 작업을 수행하여 전체 배치의 성공 여부와, 배치 작업 완료 시점을 파악하기 어려운 부분이 있었습니다.

마침, 저희가 사용하는 기술 중에 스프링 배치로 문제점을 해결할 수 있는 Partitioning 기술을 제공하고 있어서 작업하는 스레드수를 손쉽게 제어할 수 있었고 전체 배치 성공 여부 및 완료 시점을 파악할 수 있었습니다. 또한 파트에서 이미 사용하고 있는 기술셋을 이용함으로써 다른 개발자분이 이해하기 쉬운 구조로 만들 수 있었어요.

이 경험이 인상 깊었던 것은 제가 주도적으로 모니터링을 진행하면서 장애가 발생할 수 있었던 문제를 파악해 사용하는 기술을 조금 더 깊이 있게 학습하며 현재 상황에 필요한 사항을 반영하는 경험을 할 수 있었던 점과 팀분들이 지속적으로 리뷰하고 피드백을 주셔서 문제를 잘 해결해 나가며 더 큰 보람을 느꼈기 때문입니다.

Interview 03

역량에 관한 생각

 

 

백엔드 개발자로서 좋은 성과를 만들기 위해서는 어떤 역량과 자질이 필요하다고 생각하시나요?

송인태 개발자: 백엔드 개발자로서 좋은 성과를 만들기 위해 여러 역량이 필요하지만, 저는 커뮤니케이션 역량과 근거를 바탕으로 결정하는 역량이 중요하다고 생각합니다.

우선, 처음으로 커뮤니케이션 능력이 가장 중요하다고 생각합니다. 서비스를 만들고 운영해나가다 보면 개발자는 코드를 작성하는 것뿐만 아니라 다양한 직군의 팀원분들과 협업을 하게 됩니다. 과제가 주어졌을 때, 해당 과제를 어떻게 더 나은 방향으로 해결할지 정하기 위해 다양한 직군의 분들과 정말 많은 이야기를 나누게 되는데요. 이때 원활한 커뮤니케이션 역량이 있다면 더 좋은 성과를 이끌어 낼 수 있다고 생각합니다. 또한, 개발자로서 개발을 진행할 때도 다른 개발자분들과 설계 및 코드 리뷰를 통해 많은 의견을 주고받게 되고, 이러한 다양한 의견을 주고받음으로써 더 나은 성과를 이끌어 낼 수 있다고 여겨집니다.

두 번째로는 근거를 바탕으로 결정하는 역량이 중요하다고 생각합니다. 개발 관련 서적을 읽으면서 “은 총알은 없다 (No Silver Bullet)”라는 글을 읽었는데, 저는 이를 ‘어떠한 문제를 해결할 때 만능 해결책은 없다’고 이해했습니다. 개발자로 일을 할 때도 이처럼 은 총알이 없기 때문에 항상 다양한 해결 방법을 두고 장단점을 고려하여 결정하는 능력이 중요하다고 생각합니다. 예를 들어, 데이터를 저장하기 위한 다양한 데이터 저장소가 존재하는데, 현재 상황과 각 저장소 간의 장단점을 파악하여 가장 최선의 선택을 해야 합니다. 또한 개발적인 부분 외에도 우리가 사용자에게 제공하는 기능의 정책, UI/UX 등의 다양한 요소를 모두 만족하는 해결책이 없을 수 있기 때문에 항상 여러 장단점을 고려하여 최선의 방향을 판단하는 역량을 증진시킨다면 좋은 성과를 만들 수 있다고 생각합니다.

 

B마트서비스팀의 백엔드 개발자로서는 어떤 기술 역량과 자질이 요구되나요?

우태균 개발자: 개발 영역에 관계없이 커머스 분야에 필요한 기술역량으로 소개해 드릴게요. B마트는 네이티브 앱과 웹이 적절히 결합된 형태를 취하고 있어요. 그렇기 때문에 각 환경이 갖는 특성과 JavaScript Interface를 비롯한 데이터 교환의 흐름, 서버와의 통신을 위한 데이터 처리 구조에 익숙하거나 잘 알고 있어야 해요.

저희 백엔드 기술 스택으로는 Java 8 + Spring + Redis + Mysql(Aurora,maria DB) + Queue(aws SNS + SQS)로 이루어져 있어요. 주된 작업은 대부분 이 기술 스택으로 이루어지기 때문에 기본적으로 갖추어야 할 역량이라고 볼 수 있습니다. 이 밖에도 모니터링, 로그 시스템, 추천/통계 시스템을 위해 InfluxDB, Kafka, Airflow, Athena, Grafana, Prometheus 등 다양한 기술을 상황에 맞게 선택하여 사용해요.

배포 환경 구성과 부하 테스트, 각종 스크립트 영역까지 포함하면 더 다양해질 수 있는데 이런 기술들을 모두 잘하는 건 어렵습니다. 그렇기 때문에 개발자는 본인이 잘할 수 있는 개발 분야는 요구받은 것 이상으로 주도적으로 수행해 성취를 이뤄내고, 부족한 분야지만 책임감이 따르는 입장에서는 빠르게 학습하고 습득해 자신의 영역을 넓혀가려는 자세가 뒷받침되어야 합니다.

그 외 앱 개발 환경도 말씀드리면 Swift, Kotlin 전환, Rx, DI 적용, 아키텍처 변환 등의 과정을 거쳐 지금의 기술 스택을 갖게 되었어요. 웹은 Vue.js, React.js 모두 활용되고 있고 디자인 시스템을 비롯한 공통 컴포넌트 확장 등을 통해 끊임없이 더 좋은 모습으로 발전하고 있어요.

B마트뿐 아니라 우아한형제들은 개발자로서 성장하는데 좋은 환경을 갖추고 있습니다. 개인의 역할을 스스로 한정 짓지 않고 주위를 둘러보며 필요한 일들을 하나하나 함께 이루어 나간다면 기술 역량은 자연스럽게 높아진다고 생각해요.

Interview 04

우아한형제들 개발문화

 

 

우아한형제들의 개발문화 중에 두 분이 생각하시는 좋은 문화를 알려주세요.

송인태 개발자: 저는 개인적으로 좋은 개발문화는 자신의 경험을 공유하는 테크톡 그리고 투투(Two-Two) 문화라고 생각합니다. 첫 번째로 회사에서는 주기적으로 자신의 경험을 공유하는 ‘테크톡’이 진행됩니다. 이를 통해 다른 분들이 경험한 다양한 문제점과 이를 해결해 나가는 과정을 보고 배우며 성장해 나갈 수 있었습니다. 테크톡을 통해 회사의 공유 문화가 안착됨으로써 각 팀에서 다양하게 자신의 경험을 공유해 주는데요. 제가 속해있는 팀에서도 개발자분들이 자신의 경험에 대해 주기적으로 공유해 주셔서 업무적으로도 많은 도움이 되고 있습니다.

두 번째로는 우아한형제들의 투투(Two-Two) 문화라고 생각합니다. 제가 이해하는 투투 문화는 어떤 상황을 해결하기 위해 최소 두 명 이상 같이 확인하면서 문제를 해결하는 것으로 알고 있는데요. 이러한 문화가 자리 잡혀 팀 내에서도 다양한 방식으로 활용되고 있습니다. 개발할 때는 페어(Pair) 코딩을 진행하거나, 두 명 이상이 필수로 코드 리뷰를 진행하고 실제 운영에 이슈사항이 있을 때는 항상 부담 없이 주변 동료에게 도움을 청해 같이 이슈사항들을 해결하고 있습니다. 이러한 투투(Two-Two) 문화 덕분에 회사 차원에서는 더 안정적으로 서비스를 운영할 수 있고, 개인적 차원에서는 업무에 투투 방식을 적용하면서 조금 더 안정감 있게 일을 진행할 수 있고, 동료분들을 통해 다양한 경험을 공유받을 수 있어 많은 도움을 받았습니다.

우태균 개발자: 여러 분야의 개발자들이 함께 일하다 보면 서로의 영역에 대해 더 이해하게 되고 그만큼 배우게 되는 점도 많아요. 저의 경우에도 처음에는 앱 개발자로 이 팀에 합류했지만 백엔드 분야의 업무도 조금씩 받아 가며 직무를 전환한 경우예요. 아무리 제가 백엔드 개발을 할 수 있었다 하더라도 서로 히스토리를 모르고 업무 연계성이 떨어지는 분리된 팀 구조였다면 불가능한 일이었겠죠. 서비스에 관심이 많고 팀이 함께 같은 목표로 나아가는 데 의미를 가진 분이라면 저희 팀은 단연 최고의 팀이라고 얘기할 수 있습니다.

제가 경험하고 알고 있는 우아한형제들의 개발 조직은 코드 리뷰를 의무화하고 서로 소통하며 도전적인 미션을 주도적으로 찾아내요. 각 팀의 자랑할 만한 결과물을 공유하고 축하하는 분위기가 형성되어 있어, 여러 훌륭한 개발자 동료분들의 인사이트를 지켜보며 함께 성장하는 기회를 찾기도 좋습니다.

 

우아한형제들에 입사를 희망하시는 분들에게 응원의 한 말씀 부탁드립니다.

송인태 개발자: 백엔드 개발자 채용에 관심을 가져주셔서 감사합니다. 노력하신 만큼 좋은 성과가 있길 기원하며, 저희 함께 성장하며 재밌게 일할 수 있으면 좋을 것 같습니다. 화이팅!

우태균 개발자: 우아한형제들은 참 특별한 회사라고 생각해요. 밖에서 보았던 우아한형제들도 구성원들이 똘똘 뭉치는 문화를 가졌다고 생각했는데 입사하고 나니 작은 행사와 문화 하나하나가 구성원들이 함께 참여할 수 있도록 이루어지더라고요. 내가 공감하는 일을 좋은 사람들과 함께 만들어가는 이곳에서 같이하게 될 분들이 기대되고 또 응원합니다.

 

>> 우아한형제들 기업정보 보러가기

>> 지금 채용 중인 IT 직무 보러가기

잡코리아 좋은일 연구소 취재기자 김가현 kimgahyun@jobkorea.co.kr

잡코리아 좋은일 연구소
취재기자 김가현

의견 나누기 200자까지 작성할 수 있으며 허위정보 및 명예훼손, 비방, 욕설, 광고성 글은 운영자에 의해 삭제될 수 있습니다.

의견 나누기

0 / 200 등록하기

0 / 200 등록하기

(주)우아한형제들 진행 중인 채용 공고

다음글
국내 최상 방산업체의 무기 시스템을 연구합니다
이전글
우아한형제들 라이더서비스 기획자·개발자