[Good Bye! 2020] 사진으로 보는 스타트업 백엔드 개발자 회고

작년 회고 링크: 2019년 빵빵한 빵년차 백엔드 회고

Gyeong Jun Paik
13 min readJan 1, 2021

재작년부터 회고를 일 년 주기로 작성하고 있다. 너무 타임라인 순으로 한 행위에 강조하기 바빴다.

이번 회고에서는 내가 느꼈던 것과 반성하고 발전 할 수 있는 부분에 초점을 맞추고 싶다.

고려대학교 백엔드 멘토 참가

고려대 해커톤 멘토 참여

선욱이의 콜로 고려대 해커톤의 백엔드 멘토로 참여하게 되었다. 주변의 빵빵한 멘토들의 멘터링과 멘티분들의 열정을 보면서 배우며 자극받았던 해커톤이다. 그중에서 가장 기억이 남는 팀은 구독 에그리게이트 서비스를 개발하는 “구구독”이라는 팀이다.

Django를 이용해 개발하는 유일한 팀이었고, 해커톤 이전부터 개발해 어느 정도 고도화 돼 있는팀이었다. 내 부스에서 아예 자리를 잡고 같이 피자를 먹으며 이런저런 얘기를 나누었는데, 완성도가 높아 모두가 창업에 집중하는 학생분들인 줄 알았는데, 팀원 중 한 분은 이미 취업을 하고, 출/퇴근을 하면서 개발을 하고 있었다.

그 모습을 보면서 내 창업에 대한 욕구가 조금 두근거렸다.

프로그라피

나와 Fit이 맞는 사람들과 함께하는 프로젝트 Fitple
내 이름은 안 보이지만…

발표 자료: JWT 이해하기

프로그라피에 들어온 지 벌써 2년이 다 되어간다. 처음 프로그라피에 들어와서 좋은 멘토들을 만나 많이 성장했고, 멘토 제안이 왔을 때도 “내가 이전 멘토들 처럼 할 수 있을까?”라는 고민이 있었고, 주변에서 응원에 힘입어 “할 수 있다!”라는 마음으로 임했다.

멘토링을 하면서 멘티분들의 실수는 오히려 나의 성장을 만들어 주었다. 내가 만나지 못한 에러와 상황들을 가지고 오면 같이 고민하고 해결하는 과정이 좋았다.

코로나 이후로는 기술적인 이야기에 초점이 맞춰지고 원격으로 멘토링을 하다 보니 공수가 2배 이상 들어 사실 많이 지쳤다.

프로그라피는 내 개발자 인생에 많은 행복과 성장을 만들어 준 곳이다. 지명하여 말하진 않겠지만, 그 친구들에게 정말 감사하다는 마음을 여기에 표현하고 싶다.

윽..고인물들

Django 라이트닝 토크

화질구지네요

발표 자료 : 아직도 보고서를 직접 보내시나요?

코로나가 완전히 심해지기 전 발표 할 수 있는 기회를 얻었다. 비단뱀(파이썬 백엔드 개발자 모임)에서 장고 라이트닝 토크를 주최했다.

광고 후, 보고서가 고객에게 나가는 과정을 자동화한 내용으로 발표를 했다.

네트워크 시간에 idus의 시니어 백엔드 개발자분을 만나 이야기했는데, idus의 분업화에 대한 이야기가 너무 흥미로웠다. idus의 백엔드 개발자는 비즈니스 로직과 테스트 코드의 집중을 하고, 배포의 과정은 DevOps팀에 의해 자동화되어 실제로 어떤 인프라 구조가 어떻게 구성되어있는지 모를 정도의 수준으로 개발이 진행된다고 했다.

보통의 스타트업의 백엔드 개발자는 인프라 자원을 효율적으로 다루는 것에 고민하고 오히려 테스트 코드와 거리를 두는 경향을 보곤 했다.

오히려, 큰 회사일수록 테스트 코드를 잘 짜고 비즈니스 로직에 집중하는 개발자를 찾는다는 이야기를 듣고, 나의 앞으로의 커리어를 어떻게 준비해야 할지 계속 공부를 하지만 항상 시작인 느낌이 들었다.

AngelHack Seoul 2020 Online

밤샘 코딩
마지막 날 쓰러지기 직전

일주일 동안 코멘토의 팀원분들과 해커톤을 진행했다.

디자이너 1명, 프런트 개발자 3명, 백엔드 개발자 1명으로 팀이 구성됐다. 여러 곳에서 팀을 이뤄 개발을 해봤지만, 가장 프런트 비율이 높았던 팀이다. 프런트 개발 속도가 빨라 백엔드가 손이 부족했다는 느낌이 들 정도다. 코멘토 팀원들은 개발도 빠르게 하지만, 인성이 매우 훌륭한 분들이 많다.

아쉬웠던 점은 해커톤이라는 생각에 커밋 메시지와 문서화, 클린 코드에 대해 무시하고 빠르게 진행하는 데 집중했는데, 배포 이후 롤백이 필요한 부분이나, API에대한 설명을 전달하기에 많이 부족한 점이 있었다. 지금은 클린 코드를 읽은 상태이기 때문에 더욱 침착하고 기본에 집중해서 개발 할 수 있다는 자신이 있다.

사내 파이썬 스터디

Django 네임드분이… 감동

회사에 새로운 디자이너분(절친, Jenny)이 오셨다.

Jenny(자체 발광)가 오고 회사의 분위기가 많이 밝아졌다. 나 또한 Jenny 덕에 회사가 재밌어졌다. 차분하지만 에너지가 넘치는 분인데, 프로그래밍에도 관심이 있으셨다. 나 또한 하고자 하는 사람이 있다면 손을 먼저 뻗는 타입이기에 파이썬 스터디를 시작했다. 일주일에 한 번 챕터를 같이 보고, 그 챕터와 관련된 숙제를 냈다. 커밋이 올라온 시간 간격을 보니 정말 열심히 하셨다.

그렇게 한 달이 지나고,

Jenny가 블로그 글( 실제 데이터로 시안 만들기 )을 공유하면서 피드백을 요청했다. 스터디에서 배운 내용을 활용해 디자인 시안을 만드셨다. 나는 매우 뿌듯한 마음에 Python korea에 올렸는데, 반응이 너무 뜨거웠다. 글은 디자이너인 Jenny가 쓰셨는데, 좋아요는 내가 다 받았다.

인싸의 삶을 잠깐이지만, 상상해 볼 수 있었다.

서비스 배포: 오늘의 헤드라인

오늘의 헤드라인

회사의 새 서비스 “오늘의 헤드라인"이 App store와 Google play에 올라왔다.성공하는 서비스를 만들고 싶다는 마음으로 초기 개발 셋업에 어떤 자원을 사용할지에 대한 고민을 많이 했다.

MSA 도입

  • 이전 서비스 운영 경험
  1. 기획에 따라 무궁무진하게 늘어 날 수 있는 도메인들: 예전에는 Django 하나로 2개의 서비스를 운영했는데, 서비스 하나를 고쳤는데 2개의 서비스를 다시 배포하는 문제가 있었다.
    오늘의 헤드라인은 빠르게 변할 수 있고, 기획에 따라 도메인이 무궁무진하게 늘어날 수 있는 서비스다.
  2. 이전 서비스의 서치의 검색 엔진: Django서버의 복잡도가 올라가, 검색 엔진만을 위한 Typescript와 Serverless조합으로 백엔드 API를 추가했었다.
    복잡한 로직이 많기에, 도메인 별로 영향을 주지 않게 분리하는 것도 중요했다. 오늘의 헤드라인 역시 추천이 핵심이기 때문에 추천 로직을 따로 분리하여 관리하는 것이 이득이 많았다.
  3. 엔지니어 채용 계획: 데이터 & 추천 엔지니어분들과 같은 로직을 건드리면서 충돌 나는 것보단 도메인 별로 분리해 전담하는 것이 유지보수 측면에서 유연했다.

Fast API 도입

  • 추천 로직이 붙기에 속도는 중요했고, 추천 & 데이터 엔지니어 분들과의 시너지를 위해 Fastapi를 사용했다.
  1. 이전 검색엔진은 프레임워크를 사용하지 않았는데, 기능이 더해질수록 lambda function의 수가 많아져 관리하기 힘들었다.
  2. 1번의 이유로 새 서비스를 사용하는데, express를 이용해 개발했는데, Coroutine에 대한 예외처리를 매번 넣어주는 것이 좋은 구조가 아니라고 생각했는데, Koa는 Coroutine에 대한 예외처리가 되어있어 Koa를 이용해 개발 했다.
  3. 파이썬 백엔드 커뮤니티에서 우리 회사가 python backend를 이용하는 회사 리스트에 올라왔고, PO분이 회사가 언급 사실에 기뻐하는 모습을 보았다.
  4. 그 모습 + 추천 & 데이터 엔지니어분들이 python을 많이 사용한다는 사실에 엔지니어들과의 커뮤니케이션 비용을 줄이기 위해 Koa로 짠 코드를 flask로 짤 생각을 했는데.
  5. flask는 느리다. 추천 로직은 많은 계산이 들어갈 것이고, 초기 단계부터 속도를 어느 정도 잡아줘야 한다고 생각했다.
    ASGI기반의 서버를 생각했고, sanic에 대한 레퍼런스가 그나마 많아 선택했다.
  6. 오픈소스 컨트리뷰톤에서 만난 딜리버리 히어로의 개발자분과 이야기를 하다 sanic의 메인테이너가 나갔다는 소식을 듣고, Fastapi가 괜찮다는 말을 듣고, 찾아보았는데 문서화가 잘 돼 있고, pydantic이 디폴트로 있어 validation과 타입 힌트로 더욱우아한 코드로 짤 수 있었다. sanic으로 짠 코드를 다시 fastapi로 포팅했다.

데이터 샘플링

데이터 파이프라인이 가져오는 데이터가 많아 API에서 사용할 샘플링이 필요했는데, Redis를 이용해 최신 시간을 기준으로 관리하는 로직을 설계했다. 지금은 로깅과, 추천 로직 등에 더 다양한 방법으로 활용되고 있다.

데이터 엔지니어분이 들어오고 나서 고도화가 매우 빠르게 진행됐다.

  • 로그 시스템 분리
  • 모든 코드 리팩토링(클린 코드&테스트 코드 도입)
  • CI/CD 도입
  • IAC(terraform) 도입
  • 장애 노트 작성
  • 쿠버네티스 도입
  • Big query 도입

정도의 변화가 있었다.

서버를 혼자 담당하다 보니 핑계 겸 겁이 나 시도를 못 한 것들이 많았는데,

능력자가 오시니 가슴이 웅장해져 여러 시도에 대해 긍정적으로 바뀌었다.

오픈소스 컨트리뷰톤

훌륭한 멘토님과 열정 넘치는 멘티분들과 함께했다는 사실이 좋았다.

멘토님의 pytest로 파이썬 코드 테스트하기

세션을 듣고 내가 이전에 짠 테스트 코드는 큰 의미가 없는 코드란 것을 알았다. 그리고 오픈소스에 첫 PR을 날려보았다. (close 됐지만…)

SQLAlchemy는 정말 잘 만든 DB 툴킷이다.

멘토님 멋있음…

멘토님께서 SQLAlchemy Korea를 운영해보는 것에 대해 권해주셨다. 새해에는 SQLAlchemy Korea를 활성화 해보려고 한다.

최영선 멘토님 감사합니다

기타

마이크로소프트웨어 400호 표지 이벤트 당첨

마이크로소프트웨어 400호 표지에 나왔다!

Pinterest Clone

Django(GraphQL) + RN(typescript, Apollo)

기획이 러프하게 나와 중단됐지만 Flutter로 다시 만들어 볼 것이다!

회사 이전 from 삼성동 to 삼성동

내 자리… 더럽

회사의 사람들이 늘어 8인실에서 15인실로 이동했다.

사내 스터디

회사에 새로운 데이터 엔지니어분이 오셨다. 내 완만해지는 성장 곡선을 다시 가파르게 만들어준 분이다.

클린 코드

클린 코드는 왜 이제 읽었을까 생각이 든다. 이전에 클린 코드 관련 블로그 글을 읽고, “아, 그렇구나" 이러고 넘어갔다. 이 책은 스타트업 개발자들이 더 읽어야 할 책이다. 책 한줄 한줄을 읽을 때마다, 내가 만들었던 “깨진 유리창”들이 나한테 박힌 느낌을 받았다.

이 책은 왜 클린 코드를 짜야 하는지, 클린 코드가 선택이 아닌 필수라는 것을 사례를 들어 이야기한다. 위에서 idus 개발자 분이 테스트 코드와 비즈니스 로직을 잘 짜는 분들을 찾는지 마음에 확 와닿았다.

파이썬 클린 코드

이 책은 파이썬을 이용해 클린 코드 방법론을 정리한 느낌이 든다. 클린 코드를 읽고, 그다음 보면 좋은 책이라 생각한다.

SRE

이 책은 지금도 스터디를 진행하고 있다.

구글이 얼마나 대단한 회사인지 체감하게 해주는 책이다. “회사에 어떻게 도입할 수 있을까?”에 대한 내용으로 스터디를 진행하는데, 클린 코드와 테스트 코드는 규모와 상관없이 필수라는 생각이 들지만, 이 책은 규모에 따라 점진적으로 하나하나 적용해야 하는 부분이 많았다.

구글의 인프라 환경과 운영사례, 모니터링, 데이터 파이프라인, 부하 테스트 등에 관심이 있는 분들께 추천하는 책이다.

작년 목표 달성

검도를 배웁시다
  1. 운동하기
  • 9월에 보름 정도 입원했었다.
  • 아직도 회복기다. 지금도 주기적으로 병원에 다닌다.
프로그라피 사람들과 비디오콜
오늘의 헤드라인 팀원들과 비디오 콜
  • 병실 침대에 누워 있을 때, 건강하게 살아야겠다고 생각했다.
  • 퇴원하고 검도를 시작했다! 정말 재밌게 하고 있었는데… 코로나가… 빨리 상황이 좋아지면 하고 싶은 것이 검도다.
  • 머리이이이이!

2.커뮤니케이션 스킬 업하기

  • 결론부터 말하기, 생각을 정리하고 말하기 등 일상생활에서 노력하려고 노력했다.
  • 신중하게 말하려고 노력하다 보니 말 수가 많이 줄었다…
  • 단순히 일상생활에서의 노력만 하기보단, 이번 해는 커뮤니케이션 관련 수업을 들어볼 것이다.

3.좋은 책 읽기

  • 연초에는 활동한다는 것이 많다는 핑계로 좋은 블로그 글이라도 출퇴근길에 많이 읽으려고 노력했다.
  • 그 글들을 여기에 읽고 모은다.
  • 책은 요즘 들어 몰아 읽고 있다.

내년 목표

  1. SQLAlchemy Korea 활동하기(많은 관심 부탁드립니다!)
  • 1월 중순에 진행할 SQLAlchemy 스터디를 만들었다.
  • 스터디 멤버들과 공부 후, SQLAlchemy 튜토리얼 세션을 온라인으로 진행하고 싶다.
  • 그 외에 오픈소스 활동과 번역 등의 활동도 생각하고 있다.
    (아직은 생각만)

2. 쿠버네티스와 데이터 파이프라인 정복하기

  • 회사에서 사용한다고 해서 내 온전한 스킬은 아니라고 생각한다.
  • 자유롭게 다루는 정도가 목표다.

3. 서비스를 사랑하기

  • 기술적인 공부에 집중을 하다 보니, 서비스 개발자인데 서비스에 관심이 없는 나를 발견 할 수 있었다.
  • 막연한 목표로 잡긴 싫다. 그래서 이 방법을 수치화할 수 있는 것들에 대해 고민하고 있다.
  • 개발하면서도 그 방법이 무엇일까 계속 머릿속을 헤집는다.
  • 방법이 있다면 이야기해주세요! (제발)

4. 안 할 것에 대해 고민하기

  • Go 스터디(코로나 때문에 중단)와 로토 님께서 진행하는 바닐라 자바스크립트 스터디를 끝까지 제대로 완주하지 못했다.
  • 내가 하는 것들이 많아 지쳤고, 나의 몸은 하나라는 것을 깨달았다.
  • 입원하기 한 달 전에는 잠을 많이 줄이면서까지 진행했는데, 벌린 일들이 많아 따라가기 급급하다 뻗어버린 것이 아닐까? 라는 생각이 들었다.
  • 할 수 있는 일들은 너무 많은데, 다 할 수 없으니 과감히 안 하는 것도 중요한 것을 느꼈다.
  • 일의 우선순위를 두고, 너무 무리가 되는 것은 제쳐두고 “진행 중인 일을 더 잘해야지”라는 생각이 들었다.

하고 싶은 이야기

2020년 너무 빠르게 지나갔다.

흘러가는 시간을 담는 것이 회고라고 생각을 한다. 회고의 내용은 더 나은 내가 되기 위한 내용이 중요하다고 생각한다. 단순한 새해 목표가 아닌 성장하기 위한 나의 반성을 반영하는 새해가 됐으면 좋겠다.

이번 해의 가장 많이 이야기한 주제는 “코로나”였다. 경직되있는 분위기를 느낄 수 있고, 빨리 없어지면 좋겠다는 마음에 거리 두기를 열심히 하고 있다.

회고가 끝난 후에는 감사한 사람들에게 소식을 전하려고 한다.

새해는 모두 아프지 말고, 복 많이 받기를!

오늘의 헤드라인 대박나라!

--

--