////
Search
🎙️

요기요 - 박성환 개발자님 (서버/백엔드 포지션)

개발자 커리어 점프 [점핏]! 개발자를 위한 직무 이야기를 전해드립니다.
개발자님의 직무 이야기
1. 담당하고 계신 업무를 소개해주세요.
요기요 서비스의 App 서버 개발을 하고 있습니다.
요기요는 고객 입장에서는 하나의 음식 배달 서비스지만, 개발적으로는 MSA(MicroService Architecture)를 지향하는 R&D Center의 철학에 따라 수많은 마이크로 서비스들로 구성되어 있습니다. 저는 이중 요기요 앱을 통해 고객이 주문하면 음식점 사장님께 전달하고, 사장님의 수락/거절 여부를 확인해 이를 다시 고객에게 보내는 과정의 한 부분을 담당하고 있습니다.
2. 현재 회사와 지금의 직무를 선택하게 된 계기는 무엇인가요.
이전부터 알고리즘과 인터넷 네트워크, 파이썬에 관심을 가지고 공부했는데요. 네트워크와 파이썬을 좋아하다 보니 파이썬의 유명한 프레임워크인 Django를 공부하고 활용하고 있었습니다. 요기요가 파이썬을 쓴다는 것을 알고 있었는데, 우연히 링크드인에서 '루키 히어로'라는 인턴십 프로그램 모집 공고를 보고 지원했습니다. 운 좋게 코딩 테스트와 면접을 거쳐 입사했고, Backend 개발자로 일한 지는 1년 정도 됐습니다.
3. 하루 일과를 소개해주세요.
사무실에 출근하는 경우는 사내 카페 '요기로'에서 음악을 들으며 커피를 마시면서 하루를 시작합니다. 오전에는 바로 코드를 작성하기보다는 30분 ~ 1시간 정도 팀이 관리하거나 개인적으로 관심 있는 서비스들의 repository를 방문해 코드를 리뷰하며 예열하는 시간을 갖구요. 그 이후에는 기능 개발과 테스트, 배포 및 서비스 운영 등의 일상적인 업무를 합니다.
재택근무를 하는 경우도 크게 다르지는 않습니다. 회의가 있을 때 구글 행아웃으로 참여한다는 점이 다르네요. 사내 VPN 네트워크가 잘 준비되어 있어 재택 환경에서도 개발은 물론이고 배포나 운영 등에서 지장이 없습니다. 아, 다른 점을 찾아보자면 좀 더 점심시간을 유동적으로 갖게 되는데요. 사무실에서는 점심시간이 보통 12시 반 전후로 고정되어 있는데, 재택 근무를 할 때는 꼭 그 시간에 구애받지 않고 12시, 1시 등 제가 원하는 시간에 점심을 먹기도 하는 것 같아요.
4. 업무를 하며 가장 보람을 느낄 때는 언제이신가요.
저는 고객이 음식을 주문하면 사장님께 그 주문을 보내는 특정 구간을 담당하는 서비스를 주로 관리하고 있는데요. 개발, 배포, 운영 등을 제가 주로 하고 있습니다. 제가 아직 미숙하여 최근까지도 배포 후 많은 에러를 만들었는데 그때마다 실제 고객에게 나쁜 사용자 경험이 전달되기 때문에 에러가 발생하면 예민해지고 스트레스를 받습니다. 그래서 개발한 기능을 배포하고 문제가 없을 때 보람을 느낍니다. 또 주문의 특정 구간을 담당하는 작은 서비스지만 수많은 실제 고객의 주문을 처리하고 있는데요. 제가 개발한 내용으로 수십만의 주문이 진행되고 있다는 것을 지표 등을 통해 확인하면 가끔 소름이 돋습니다. 1년 전의 저는 개발 블로그만 운영하는 그냥 평범한 학생이었는데 말이죠.
[요기요]의 개발 이야기
1. 업무의 프로세스를 소개해주세요.
1-1. 기획부터 개발까지 진행되는 프로세스
요기요 R&D Center에는 PO(Product Owner)라는 직군이 있는데 다른 회사의 기획자 역할도 함께 하고 있습니다. PO 레벨에서 기능이 요청되면 개발자가 코드 단위에서 설계합니다. 설계 시에는 PO분들과 의견을 조율하기도 합니다. 구현이 완료되면 로컬 테스트를 한 뒤 코드 리뷰를 받습니다. 코드 리뷰에서 문제가 없었다면 스테이징 서버에서 QE(Quality Engineer)분들이 실제 기능 단위로 테스트해 주십니다. 여기까지 문제가 없다면 결국 배포됩니다.
1-2. [설계, 분석, 개발, QA, 런칭] 단계별 소요되는 평균시간
이건 상황에 따라 너무 달라 일반화하기 어려운 것 같습니다. 설계, 분석, 개발 등이 며칠 만에 끝날 수도 있고 몇 주가 갈 수도 있습니다. QA 단계에서 edge case가 많다면 며칠에 걸쳐 지속될 수도 있습니다.
2. ★개발 배포 프로세스를 소개해주세요.
개발기: 테스트 코드는 필수이기 때문에 회사에서 배우게 된 TDD 방식으로 개발하려고 노력합니다. 코드 리뷰를 받는 것은 업무의 일환이기도 하지만 어떻게 보면 다른 개발자분들의 시간을 쓰는 것이기도 하기 때문에, 코드 리뷰를 받기 전에 만든 코드에 이상이 없는지 로컬 테스트는 가급적 진행합니다.
코드 리뷰: 코드 리뷰는 우리 회사의 자랑이자 특징입니다. 스테이징 테스트 이전에 코드 리뷰를 꼭 받아야 합니다.
스테이지: 스테이징 서버에 올려 테스트합니다. 개발자가 코드 단위에서 테스트를 진행하고, 이어 QE 분들이 기능 단위에서 QA를 수행해 주십니다.
배포: 요기요는 MSA 별로 배포를 진행하고 있습니다. 백엔드 챕터에서는 각각의 기능 구현이 완료되고 QA가 끝났다면 쌓아두지 않고 가급적 그 다음날 배포하는 방식을 선호합니다.
3. ★개발환경을 소개해주세요.
맥북을 기본 지급해 주는데 취향에 따라 PC를 받아 리눅스를 설치해서 쓰는 분들도 있습니다. 개발 언어는 기본이 파이썬입니다. 런타임 버전은 개발하는 서비스마다 상이하고 형상관리는 git, github를 사용합니다.
에디터는 대부분이 제공되는 Pycharm을 사용하는 것 같습니다. 하지만 Sublime text 등을 쓰는 분들도 봤기에 본인의 선택입니다.
4. 코드리뷰 문화를 소개해주세요!
제가 계속해서 코드 리뷰를 언급했습니다. 그만큼 요기요 R&D Center는 코드 리뷰를 중요시하고 강조합니다.
모든 마이크로 서비스에서 Pull Request 등록 후 개발자 두 명 이상의 approve를 받아야 merge 되고, QA 단계로 넘어갈 수 있기 때문에 아무리 작은 변경이라도 반드시 리뷰를 받아야 합니다. 따라서 적극적인 코드 리뷰가 이루어지는 환경이며 PR comment에서 코드에 대한 활발한 토론이 이루어지기도 합니다.
코드 리뷰에서 고민하는 것은 성능, 인간의 참/거짓 논리 인지, 유지 보수 편이, 보안 등이며 생각지도 못했던 관점에서 리뷰를 주시면 깜짝 놀라기도 합니다.
특히 입사 초기에 이런 것을 크게 느꼈는데요. 입사 전에 개인적으로 '좋은 코드'에 대한 관심이 많았고 혼자나마 나름의 생각을 가지고 있었습니다. 그런데 입사 후에는 다른 분들이 남기신 코드 리뷰 comment를 보며 제가 생각할 수 있었던 범위를 넘어서는 훨씬 깊고 넓은 차원의 '좋은 코드'에 대한 생각을 접할 수 있었고, 그래서 지금까지도 저는 코드 리뷰를 진심으로 즐기고 있습니다.
'돌아가는 코드'가 아니라 '더 나은 코드', 1바이트의 무게를 고민하는 코드를 작성해보고 싶은 분들에게는 요기요가 훌륭한 선택인 것 같습니다. 많은 분들의 지원을 기다립니다.
※ 개발자님께서 이미지에 대한 아이디어도 주셨어요
5. 장애나 긴급상황에서는 어떤 프로세스로 대응하시나요.
Newrelic이라는 툴을 사용하여 등록한 정책에 따라 transaction 대비 일정 비율 이상의 에러 등을 slack으로 통지받는 등으로 대응하고 있습니다.
6. 기술 도입이나 업무 영역의 확장이 자유로우신 편인가요.
파이썬을 사용하면, 프레임워크나 버전의 선택은 자유롭습니다. 새로운 프로젝트에서는 Django뿐 아니라 flask, fastAPI 등 다양한 프레임워크를 사용하는 경우가 많습니다. 요기요 R&D Center는 Cross functional Team으로 일하고 있는데요. 개발자가 코드 작성만 하기보다는 문제 인식부터, Planning, Develop, Release의 전 과정에 참여하고 있습니다.
나의 개발 Tip
1. 개발을 위한 나만의 데스크 세팅!
전 Vim 에디터를 정말로 좋아합니다. 입사 전에는 모든 개발을 Vim으로 했는데요. Vim에서는 몇 가지의 커맨드 옵션을 조합해 경이로운 작업을 한 번에 할 수 있습니다.
가령 '공백을 기준으로 4개의 단어를 지워', '여기서부터 12개의 라인을( or 12번 라인까지 ) 지워' 와 같은 내용을 몇 가지의 키 조합으로 한 번에 동작시킬 수 있습니다. 저는 이를 한글에서 자음, 모음, 받침을 조합해 하나의 글자를 완성하는 것으로 비유하는 것을 좋아하는데요. 파이참을 지금 쓰고 있지만 Vim 키보드 세팅은 반드시 필요합니다.
그 외에는 저는 장비 등을 크게 가리지 않는 편인 것 같습니다. 회사에서 지원해 주는 맥북과 HD 모니터, 키보드, 마우스 등과 함께라면 그 어떤 개발도 두렵지 않습니다.
2. 최근 가장 관심있는 기술스택(예, OS/ 언어) 은 무엇이며, 왜 관심을 가지게 되셨나요?
지금은 Django와 파이썬 자체에 대한 이해도가 부족한 것 같아 이를 더 공부하고 있습니다. 또 회사에서 AWS 서비스를 많이 쓰고 있어 공부 중입니다. 추상화된 인프라는 저를 춤추게 합니다.
3. 현재 하고 있는 업무의 역량을 키우기 위한 나만의 노력은 무엇인가요?
내부 스터디를 하면 도서 구매를 지원해주기 때문에 동료들과 HTTP 네트워크나 파이썬 외의 다른 언어를 스터디하기도 합니다. 개인적으로는 RDB와 Django에 대해 시간을 내어 공부하고 있습니다.
그리고 일을 하다 보면 수많은 개발 용어들을 접하게 되는데요. 아무래도 개발자로 일하는 것이 요기요가 처음이다 보니 다들 일상적으로 편하게 소통하는데 저만 모르고 있는 단어들이 있습니다. 이런 단어들을 검색해보고 대화의 맥락을 따라가며 많이 배우고 있습니다.
우리회사는 개발자를 위해 이렇게 지원합니다.
함께 일하는 동료들을 소개해주세요. 우리 회사에는 파이썬 guru라고 할만한 분들이 계시는데 이런 분들의 코드 리뷰를 따라가면 파이썬에 대한 이해를 함양하는 데 정말 도움이 많이 됩니다! 또 회사에 시니어분들이 많습니다. 그래서 그 자체만으로도 저같은 주니어가 배울 점들이 정말 많습니다. 개발 프로세스에서 지켜야 할 원칙이나 테스트 코드 짜는 법, 제가 개발하는 코드가 영향을 미칠 부분에 대해 고려하고 대응하는 법, 이후 작업에 대해 한 수 앞을 보고 미리 코드를 짜는 등의 통찰력을 보며 '좋은 코드'란 단순한 개념이 아니라는 것을 알 수 있었습니다.
우리 회사의 테스트 기기 및 업무 환경은 입사 시 맥북 혹은 Dell PC를 선택해 지급 받을 수 있습니다. 2년마다 교체도 가능합니다. 그리고 요기요 서비스는 다양한 이해 관계자들과 얽혀 있습니다. 실제 주문하는 고객과 주문을 받아 조리 하시는 사장님, 배달하시는 라이더 분들 등. 만든 기능을 테스트하기 위해서는 이 분들의 입장에서 기능을 확인해볼 필요가 있고, 따라서 테스트용 모바일 기기, 사장님용 주문 접수 기기, 라이더 분들의 배달 확인 및 결제 기기 등이 잘 지원되고 있습니다.
[요기요]만 가지고 있는 멋진 개발 문화!
요기요 R&D Center는 학습과 성장을 중요하게 생각합니다. 사내 스터디도 활성화되어 있고, 스터디를 위한 도서 구매비는 전액 지원해주기도 합니다. 또한 온라인 강의도 지원이 되구요. 이렇게 학습한 내용을 동료들과 나누며 함께 성장할 수 있는 문화를 가지고 있습니다. 그 부분이 가장 잘 드러나는 것이 ADR(Architecture Design Review)과 코드 리뷰 입니다.
ADR은 요기요만의 독특한 개발 문화입니다. 서비스가 개발되어 어느 정도 틀이 잡히면 이를 다시 수정하는 것은 힘들기 때문에, 서비스 개발을 시작하기 전에 모든 개발자가 모여 그 서비스의 인프라 구성을 어떻게 하면 좋을지 공유하고 검토 받는 시간인데요. 프로젝트를 맡은 소수 개발자가 정하고 끝나는 것이 아니라 많은 분들의 피드백을 받고 개선할 수 있는 기회가 됩니다. 이때 성능, 보안, 가격 등의 다양한 차원의 고민을 하기 때문에 참여하는 것 만으로도 도움이 많이 되고, 결국 이런 고민의 시간이 곧 좋은 서비스의 시작인 것 같습니다. 또 코드 리뷰는 계속 강조하게 되는데요. 글을 써보면 글을 다듬는 과정을 꼭 갖는데 이를 '윤문'이라고 하죠. 코드도 똑같습니다. 여기서는 당신과 제 코드를 윤문 할 기회를 매일매일 가질 수 있습니다. 이왕 짜는 코드, 바람직해야 하지 않겠습니까?
요기요의 채용 포지션이 궁금하다면?! 점핏에서 확인해보세요