Review

2024 당근 테크 밋업 후기 🥕

Doljae 2024. 11. 10. 21:35

서론

 

2024 당근 테크 밋업

당근이 성장하며 얻은 경험과 통찰을 나누며, 함께 더 나은 미래를 그려가요.

tech-meetup.daangn.com

지난 10월에 2024 당근 테크 밋업에 다녀왔습니다. 처음에 추첨으로 참가자를 뽑을 땐 아쉽게 당첨이 안 됐는데요. 감사하게도 지인 분이 VIP로 초대해 주셔서 다녀왔습니다. (고마워요 브룩 님 👍)

VIP 참가자는 미리 굿즈를 이것저것 담아주셨습니다. 팔찌 색도 다른 것 같더라구요 ^^

이번에 참가자 신청을 받을 때 네 가지 트랙(프론트, 서버, 데이터/ML, 플랫폼) 중 하나를 선택하고 당첨되면 선택한 트랙의 세션만 들을 수 있는 것이 기본 규칙이었습니다. VIP 참가자는 모든 세션을 자유롭게 들을 수 있었는데요. 그중에서도 저는 서버 트랙의 세션을 쭉 들었습니다. 다른 트랙의 몇몇 세션도 관심이 있었는데요. 세션 간 쉬는 시간이 길지 않았고 나중에 유튜브로 세션 영상을 올려주신다고 하셔서 서버 세션만 진득하게 앉아서 들었습니다.

 

제가 들었던 세션 중 몇 가지 세션에 대해서 정리해 봤습니다.

당근알바 초기 엔지니어링 전략: 빠르게, 빠르게, 더 빠르게 - 박용진 님

API를 개발할 때 GraphQL을 적용하신 것이 인상 깊었는데요. 데이터를 가져오는 행위에 대한 논의를 없애고 초기에 수시로 바뀌는 UX & UI에 쉽게 대응해 클라이언트 서버 간의 커뮤니케이션 비용을 없앴다고 합니다. 단순히 GraphQL을 사용해보고 싶어서가 아니라 목적과 상황에 부합하는 기술 선택이었다고 생각합니다. 최대한 속도를 내기 위해서 기술적, 기술 외적으로 시도하신 방법과 여러 가지 선택에 대한 이야기가 주된 이야기였습니다.

 

다만 이렇게 빠르게 빠르게 치고 나가려면 구성원 한 명 한 명이 정말 잘하는 사람이어야 한다고 생각합니다. 엔지니어링, 특히 코드 관점에서 보면 모두가 빠르게 개발하고 변경할 수 있는 좋은 코드를 써야 빠르게 변화에 대응할 수 있다고 생각하는데요. 목적에 부합하는 필요한 것만 개발해서 제한된 리소스를 효율적으로 사용하는 건 좋지만 그것이 돌아가기만 하는 코드, 내일의 부채에 대한 변명이 되어서는 안 된다고 생각합니다. 그래서 유지 보수하기 좋은, 기술 부채를 만들지 않고 변화에 빠르게 대응하는 그런 코드, 엔지니어링이 되어야 하고 이것을 빠르게 하려면 개개인이 정말 훌륭한 능력을 가지셔야 하지 않을까 싶습니다.

우리 동네 어디까지 좁아지는 거예요? 자연경계로 좁혀보는 우리 동네 - 손진 님

사람마다 느끼는 동네의 영역이 다르다는 것에서 이어진 당근의 동네 구분 기능을 어떻게 개선하고 있는지에 대한 세션이었습니다. 당근 사옥(교보 타워)은 서초 4동에 있지만 반포 1동, 논현 1동, 역삼 1동의 경계선에 있는데요. 이것을 장소성이라는 개념으로 설명하셨습니다. 당근은 다른 서비스와 다르게 동네 영역을 사용자가 지정하는데요. 우편번호, 행정동, 법정동로 구분하는 동네의 한계를 극복하기 위해 보다 더 작은 범위를 동네로 잡기 위해 사용한 여러 가지 기술을 소개해주셨습니다.

  1. 빌딩을 hot spot으로 클러스터링 -> 그럼 빌딩 데이터가 없는 곳은?
  2. 기존 행정 경계 + 토지 이용지도를 오버레이? -> 그럼 토지이용의 범위가 읍면동보다 높은 경우는?
  3. 기존 행정경계 + 자연경계(수계, 도로, 산지, 공원, 철도, 녹지)로 구분 -> 이건 데이터는 다 구할 수 있겠다 -> 채택!
  4. 영역에 일정 사용자 패턴이 보이는 경우, 이를 단위로 구분해 사람이 많이 사는 곳은 더 잘게 쪼개고, 산지 등 사람이 많이 없는 곳은 넓게 쪼개기

Spatial join, Voronoi diagram 등 여러 가지 어려운 개념이 나왔지만 각각의 알고리즘을 적용할 때의 변화를 시각적으로 보여주셔서 재밌었습니다. 예전에 아주 살짝 QGIS를 사용해 본 경험이 있는데요. 지리, 지도 도메인도 아직까지 여러 가지 해볼 만한 것과 도전과제가 많구나라는 생각을 했습니다.

지역 기반으로 중고거래 검색을 샤딩하라 - 임문규 님

당근의 핵심 서비스 중 하나인 중고거래 게시글을 샤딩해 효율적으로 검색 성능을 올린 이야기를 다루는 세션이었습니다. 검색 시 모든 샤드에 검색 요청이 가면 특정 지역의 게시글에 대한 검색 요청이 전혀 다른 지역 게시글에 대한 검색 요청 성능에 영향을 주게 되는데요. 이를 지역 기반 샤딩이라는 전략으로 해결했다고 합니다.

  1. 처음에는 Hot/Cold Architecture를 사용해 최근 게시글을 hot에 저장하고, 오래된 게시글을 cold에 저장해서 관리하는 방식을 사용했다고 합니다.
  2. 하지만 내부적으로 Hot, Cold의 경계를 지나면 추가 요청이 나가고 무엇보다 Hot, Cold 문서 간의 검색 랭킹이 끊기고 여전히 특정 지역의 트래픽이 다른 지역에 영향을 미칩니다.
  3. 그래서 지역이 계층 구조를 가지고 있다는 점에서 착안한 지역 기반 샤딩 전략을 선택했는데요. 연관 지역이 저장되어 있는 샤드에만 검색을 요청하도록 지역 계층 하나를 샤드로 잡고 샤딩 알고리즘을 직접 구현했습니다.
  4. 군집화(Clustering) 알고리즘 중 하나인 Weighted K-Means 알고리즘을 통해 문서 수를 반양한 군집화를 해서 인접한 지역끼리 샤딩을 했다고 합니다.
  5. 그리고 샤딩 정보 테이블을 메모리에 올려놓고 샤딩 서버가 어떤 샤드에 검색 요청을 해야 하는지 알 수 있도록 만들어 특정 지역의 문서를 가지고 있는 특정 샤드에만 요청을 하도록 했습니다.
  6. 응답속도 50% 이상 개선, 클라우드 비용도 53% 감소, 노드 별 CPU 사용량 편차도 줄었고 요청량이 늘어도 CPU 사용량 증가폭이 감소하는 등 많은 성능 개선을 이뤘다고 합니다.

샤딩 정보를 담고 있는 샤딩 서버가 SPOF(Single Point Of Failure)가 되어서 이를 잘 관리해줘야 하지만 그만큼의 효과가 있으니 좋은 설계라고 생각합니다.

 

이외에도 여러 가지 세션을 들었는데요. 발표자료도 깔끔하고 어려운 기술 이야기를 쉽게 설명하기 위해서 리허설도 많이 하셨을 것 같더라고요. 특히 연사 분들의 열정적인 모습이 굉장히 좋았고 행사 내내 모든 세션 흥미롭게 잘 들었습니다.

총평(?)

당근이 귀여워요 🥕

세션 외에도 여러 가지 이벤트를 준비해 주셨는데요. 특히 당근 임직원분이 만드시는 네트워킹 일정은 일정 알림이 오자마다 바로 만석이 될 정도로 인기가 많았습니다. 또 세션 중간중간에 나온 깜짝 퀴즈와 랜덤 뽑기 등으로 주신 귀여운 굿즈도 좋았습니다. 또 행사 가이드와 공지를 당근 모임이라는 당근 내부 커뮤니티 기능을 통해서 진행해 주셨습니다. 당근이 중고 거래뿐만 아니라 다른 도메인에도 도전하고 있는 것은 알고 있었지만 실제로 당근 모임은 이번에 처음이었는데요. 공지, 네트워킹 일정, 가이드, 퀴즈 등 행사 전반에 대한 리모컨 툴로 사용하시면서 자연스럽게 홍보 효과도 내신 것이 아닐까 싶습니다. 제가 생각했던 것보다 굉장히 많은 것을 할 수 있더라고요.

 

여러 IT 콘퍼런스를 가봤지만 당근의 콘퍼런스는 진짜 당근 같다(?)라는 느낌이 들었는데요. 당근이 만든 제품과 회사가 지향하는 그런 이미지와 분위기를 행사에도 그대로 녹여주신 것 같았습니다. 좋은 이야기 많이 들으면서 리프레시할 수 있었던 그런 시간이었습니다.