[서버 파트] 당근 테크 밋업 후기 🥕

상호·2024년 10월 10일
6
post-thumbnail

🥳 테크 밋업 당첨

운이 좋게도 당근 테크 밋업에 당첨이 되어..얼마 전 10월 7일 월요일에 테크 밋업을 다녀왔다!

테크 밋업에 대한 내용들은 노션으로 잘 정리가 되어 있었고,
계속해서 이메일과 문자를 주며 안내를 지속적으로 해주었다.

또한 이렇게 당근 앱 내부에 있는 '모임'이라는 기능을 활용해서도 행사에 대한 정보를 공유 받을 수 있었다! 공지나 단체 채팅방에서 대화를 하는 등 한 곳에서 모두 할 수 있어서 좋았던 것 같다.
당근을 평소에 많이 쓰는 편은 아니라..이런 기능들까지 있는 줄은 이번에 처음 알게 되었다.


🥕 당근 테크 밋업 입장

테크 밋업의 위치는 코엑스 컨퍼런스룸이었고, 공식적인 시작은 11시 50분부터였다.
10시 반부터 입장이 가능하다고 들었는데, 나는 조금 늦게 일어나버려 12시가 살짝 넘어 도착했었다..🥲

빠르게 입구 사진도 찍고! 나는 B 서버파트로 이동했다.

테크 밋업은 아래의 네 파트로 나뉘어져 세션을 진행했다.

A파트 : 프론트엔드
B파트 : 서버
C파트 : 데이터 & 머신러닝
D파트 : 플랫폼

각 파트마다 6~7개의 세션이 있었던 것으로 아는데..당근 측에서 세션에 정말 많은 준비를 했다고 느껴졌다! 👍🏻


🚀 서버 파트 세션 진행

지금부터는 세션 내용에 대한 이야기를 해 보려고 한다.
필기를 하기가 조금 어려운 상황이었기도 하고, 발표에 집중하기 위해서 기록은 많이 해두지 않았기에 느낀 점 위주로 작성하게 될 것 같다!

✅ 1. 당근 알바 초기 엔지니어링 전략 빠르게, 빠르게, 더 빠르게

1. 효율적으로 에러 대응하기

  • 매번 에러에 대응하게 되면 빠른 배포를 할 수 없었음
  • 에러 대응 리소스
    1. 컨텍스트 전환 비용
    2. 대응에 걸리는 시간
  • 하고 있던 작업을 멈추고 → 대응하지 않고 영향을 파악 → 영향이 크지 않다면 현재 작업중인 것을 먼저 끝냄
  • 중요한 것은 가시성 확보
    • Sentry
    • Grafana
    • Datadog …
  • 제품 퀄리티 < 현재 작업에 집중하는 것

2. 클라이언트와 효율적으로 협업

  • 클라이언트에서 데이터를 유연하게 가져갈 수 있도록

    • GraphQL을 사용하여 클라이언트에게 데이터를 가져오는 것에 대한 책임을 맡김
    • 이를 통해 엔지니어링 논의 비용을 감소시킴
  • "가장 중요한 것에 집중하면서 중요하지 않은 것을 잠시 미뤄두기"

🧑🏻‍💻 정리
보통 사람들은 서비스에 장애가 생기게 되면 하던 일을 올 스탑 하고 해당 에러를 고치려고 노력하고는 한다. 물론 이는 지극히 정상적으로 보이나, 기존에 하고 있던 일로 돌아가는 것에도 큰 리소스가 들기에 전체적으로 보면 손해일 수 있다. 때문에 당근에서는 에러가 발생했을 때 바로 고치려 드는 것이 아니라, 해당 에러가 서비스에 얼마나 영향을 끼치는지를 먼저 파악한다고 한다. 이를 파악하기 위해서는 가시성 확보가 필수적이기에 다양한 모니터링 툴들을 활용한다.

💡 느낀 점
우선순위와 영향력이 낮다면 과감하게 에러 해결을 포기하고 하던 일을 먼저 한다는 결단력에 조금 놀랐던 것 같다. 이를 보며 당근이 얼마나 효율성과 생산성에 집중하고 있으며, 순간이 아닌 전체를 보려고 노력하는지 알 수 있었던 것 같다!

✅ 2. 우리 동네 어디까지 좁아지는거에요?

1. 우리 동네

  • 장소성
    • “무분별한 공간으로 시작된 것이 우리가 그것을 더 잘 알고 가치를 부여하게 되면서 장소가 된다.”
  • Location Intelligence

2. 어디까지

  • 어디까지를 우리 동네라고 할 수 있을까?
  • 당근은 공급자 & 수요자의 위치가 유동적
  • 행정동 & 법정동보다 좁은 범위를 선택하기가 어려움 → 어떻게 더 좁힐 수 있을까?
  • 대용량 데이터를 다루는 것보다, 사람들이 인식하는 경계의 기준으로 하고 싶었음
    • 기존 행정경계 + 자연경계로 구분해보자!
  • Q : 각 영역의 크기가 너무 제각각 아닌가요?
    • 우편번호와 같이 실제 사람들이 사는 곳들을 기준으로 나뉘어짐

3. 무슨 의미가 있죠?

  • 도보 ~분 이내에 갈 수 있는 영역

🧑🏻‍💻 정리
두 번째 세션으로는 당근의 우리 동네가 어떤 방법으로 정해지는지를 알 수 있는 세션이었다.
우선 당근과 다른 커머스와 다른 점은, 공급자와 수요자의 위치가 둘 다 이동될 수 있다는 것이다.
기존의 당근 우리 동네 방식으로는 행정동 & 법정동 보다 좁은 범위를 선택하기가 어려웠다. 때문에 이를 개선하기 위해서 자연경계 데이터를 활용하고, 경계에 맞게 영역을 구분하고, Voronoi Diagram 을 쓰는 등 갖은 노력이 행해졌다.
결국 당근만의 동네 시스템을 구축할 수 있었고, 이는 도보 ~분 이내에 갈 수 있는 영역을 파악하기 용이해졌다.

💡 느낀 점
GIS(Geographic Information System) 라는 직업이 있다는 걸 이번에 처음 알게 되었고, 동네를 기반으로 플랫폼을 확장시키는 당근인만큼 기술적으로 퀄리티가 높음을 느낄 수 있었다. 솔직히 말하면 중후반부터는 잘 이해를 하지는 못 했지만.. 상황에 맞춰 여러가지 기술과 방법론을 도입하며 결국에는 해결해내는 과정이 흥미로웠고 멋있었다!

✅ 3. 당근 채팅 시스템 어떻게 만들까?

🧑🏻‍💻 정리
세 번째 세션으로는 당근의 채팅 시스템에 대한 자세한 소개가 이어졌다.
우선은 당근의 기본적인 채팅 시스템 구조에 대한 설명을 한 후에, 점차 규모가 커지는 시나리오에 따른 기술력의 변화를 보여주셨다.

💡 느낀 점
메시지 전달 시스템 부분에서 유저 ID를 하나씩 전송하게 되면 성능상 느리기에, 배열로 묶어 전체를 보내준다. 다만 여기서 한 번에 모든 ID에 따른 작업을 처리하려면 성능 상 좋지 않기 때문에, 유저 ID를 청크 단위로 나누어 보내주게 된다. 이러한 부분들을 보며 어떻게 해야 더욱 효율적이고 안정적으로 메시지를 주고 받을 수 있을지에 대해 고민할 수 있었다. 또한 데이터베이스 설계와, 샤딩에 대해서도 알 수 있어서 유익했던 것 같다!

✅ 4. 멈춰버린 세계 : 네트워크 통신 불가를 해결하기 위한 여정

🧑🏻‍💻 정리
네 번째 세션으로는 당근 페이 팀에서 마주친 문제와 이를 해결한 과정에 대한 내용이 이어졌다.
어느 날 Redis와 DB에서 타임 아웃 및 연결이 끊기는 에러가 발생하였고, 이에 대한 수많은 추정 원인들을 기준으로 파악하기 시작했다. 문제를 해결하기 위해서 모니터링을 진행하며 성능개선에 힘을 썼고, ZGC 적용 & 쿼리 튜닝 & 커넥션, 리드 타임아웃 조정 등의 방법을 사용했다.
그럼에도 Redis에서는 문제가 발생했고, 이는 테스트 시나리오를 세운 후에 Istio Proxy CPU Limit을 제거함으로써 최종적으로 해결할 수 있었다.

💡 느낀 점
요즘 들어 모니터링과 성능 개선의 중요성을 깨닫고 관심을 가지고 있던 터라, 가장 재미있게 들었던 세션이 아니었나 싶다. 문제를 해결하기 위해서 우선적으로 현재의 아키텍처에서 부하가 생길 만한 부분을 파악하는 과정이 인상적이었고, 발생할 수 있는 모든 경우를 고려하여 하나씩 해결해 나가는 것이 멋있었고 재미있어 보였다! 또한 마지막으로 테스트 시나리오를 세운 후에 검증하고 최종적으로 해결을 해 나간 것에서 나까지 쾌감을 느끼는 듯 했다. 많은 트래픽을 받아 문제가 발생하고 해결하는 경험을 할 수 있다는 것에 부러움도 느껴지는 순간이었다..나도 얼른 회사에 들어가 문제를 해결할 수 있는 개발자가 되었으면 좋겠다!

✅ 5. 지역기반으로 중고거래 검색을 샤딩하라

💡 느낀 점
다섯 번째 세션에서도 DB, 샤딩 그리고 성능 개선에 대한 이야기가 이어졌다. 사실 샤딩에 대해서는 들어만 봤고 직접 해 본 적은 없었는데, 이번 기회로 어떻게 쓰이는지 또 왜 써야하는지를 알 수 있어서 굉장히 유익했던 것 같다. 아직 샤딩을 할 정도로 큰 데이터를 만져본 적은 없지만, 그래도 한 번 공부를 해 보고 적용해 보면 좋을 것 같다. 백엔드 공부를 하면 할수록 DB를 잘 알아야한다는 생각이 들었었는데, 이에 더욱 확신이 드는 순간이었다!

✅ 6. 빠르게 변하는 운영 도메인에서 살아남는 코드 만들기

💡 느낀 점
사실 이때는 집중력이 저하돼서 조느라 제대로 내용을 듣지 못했었다 😂
집중해서 들었으면 좋았을 내용이었는데 아쉽다..후에 세션 영상은 당근에서 공개해 준다고 하니 다시 들어볼 예정이다!
확장성설정 가능성이 있는 코드에 대한 이야기가 이어졌고, 후반부에는 메타 프로그래밍에 대한 이야기도 나왔다. 이전에 큐시즘 전문가 초청 강연에서 당근 프론트엔드 원지혁 원사님께서도 알려 주신 방법이라 조금 더 관심을 가져봐도 좋을 것 같다!

✅ 7. 당근의 회원 시스템을 마이크로서비스로 분리하기

🧑🏻‍💻 정리
마지막 세션으로는 당근의 회원 시스템을 마이크로서비스로 분리하는 과정에 대해서 소개해주셨다.
초기 당근은 모놀리스 시스템으로 구현되었는데, 유저와 서비스가 점차 추가됨에 따라 성능을 고려하게 되었다. 결국 특정한 서비스에서 장애가 발생하였고, 이것이 다른 서비스에도 영향을 주어 시스템의 안정성이 낮아졌다. 때문에 안정성확장성을 고려하여, 회원 시스템은 마이크로서비스로 분리하기로 결정했다. 여기서 sidecar를 도입하여 기존 API 호환성을 유지하고, 점진적으로 API를 전환하도록 구현하였다. 서비스를 구현한 후에 조금씩 트래픽을 마이크로서비스 쪽으로 옮겼고, 최종적으로 sidecar를 제거하며 분리를 마칠 수 있었다.
그 결과 서비스 분리 후 장애는 0건이며, 성능도 66% 개선할 수 있게 되었다.

💡 느낀 점
sidecar라는 개념을 이번에 처음 알게 되어서 유익했던 것 같다! 새로운 방식으로 바로 트래픽을 모두 옮기게 되면 문제가 발생할 여지가 크기 때문에 이를 조금씩 옮기는 것이다. 이는 무중단 배포 방식 중 canary와 비슷하지 않나..? 라는 생각이 들었다. 이에 대해서는 조금 더 공부를 해 보면 좋을 것 같다! 서비스를 성공적으로 분리시켜 결국 뛰어난 성과를 이룬 점에서 흥미로운 세션이었던 것 같다.


🎁 굿즈

컨퍼런스하면 굿즈를 빼 놓을 수가 없다!
당근은 귀여운 캐릭터도 있기 때문에.. 이 부분도 많이 기대를 하고 갔다 🤤

입장 후에 위와 같은 구성품의 굿즈들을 받을 수 있었다!
개발자 당근이 스티커와 안경닦이, 볼펜, 수첩 등 쓸만한 것들이 많아서 좋았다!
스티커는 너무 귀여워서 바로 노트북에 붙였다 👍🏻

붙이고 남은 애들은 주변에 기부했다^^

그리고 여기서 끝이 아니었다!

설문 조사를 한 후에 럭키 드로우를 할 수 있었는데,
운 좋게도 갖고 싶었던 개발자 당근이 티셔츠를 받게 되었다! 🥕
(사실 키링을 조금 더 받고 싶긴 했다)

집가서 이거 입고 새벽까지 개발했다 🧑🏻‍💻


🎬 마무리

행사에 대해 전반적으로 느낀 점을 끝으로 글을 마무리하려 한다!

  1. 첫 테크 컨퍼런스임에도 행사 진행을 잘 한 것 같다! 참가자 발표 때 이슈가 있다고 듣기는 했으나.. 그래도 이를 제외하고는 전반적으로 매끄러웠다. 계속해서 안내를 주는 것도 좋았고, 노션과 당근 앱을 활용해서 정보를 한 곳에 모아두는 것도 좋았던 것 같다! 또한 모임 기능을 활용해서 깜짝 문제나 네트워킹 모집을 하는 것도 편리했다.

  2. 파트 별로 세션을 나누어서 들어서 개인적으로는 좋았다. 당근의 현업자들이 실제로 일을 하면서 느낀 점 또는 문제를 해결한 점들을 주로 말해주었는데, 내가 관심 있는 분야들에 대해서 많은 정보들을 들을 수 있어서 즐거운 시간이었다. 준비하신 모든 분들에게 감사를 표하고 싶다 🙏🏻

  3. 분위기가 당근스러웠다. 즉 행사장에서 관리하는 사람들, 세션을 진행하는 사람들 모두 당근이라는 단체에 소속된 느낌이 강하게 들었다. 당근하면 무언가 따뜻하고 친근한 느낌이 든다. 이는 메인 컬러도 주황색이고, 말투도 ~에요로 통일했기 때문이라는 생각이 들었다. 발표를 하시는 개발자분들도 모두 따뜻한 말투로 진행을 했고, 장표의 느낌도 모두 비슷해서 눈이 편했다. 이런 부분들도 분명히 신경을 쓴 것이라는 생각이 든다!

  4. 캐릭터가 귀엽다. 스티커가 귀엽다! 브랜드 캐릭터의 중요성을 다시 한 번 느꼈다...

  5. 기술적으로도 많은 정보들을 얻을 수 있었고, 현업에서는 어떤 부분들을 많이 고려하고 있는지 알 수 있어서 귀중한 시간이었다. 또한 당근이라는 기업에 대해서도 조금 더 알게 된 점도 수확인 것 같다! 🥕

profile
상호작용하는 백엔드 개발자

8개의 댓글

comment-user-thumbnail
2024년 10월 10일

오우 글 너무 유익하당
이런 정보는 어디서 얻는거야ㅠㅠ

당근 채팅은 1:1인걸로 알고 있는데 id를 배열로 모아서 청크 단위로 작업하는 방법이 구체적으로 궁금해요!!

1개의 답글
comment-user-thumbnail
2024년 10월 12일

헐 개발자 티셔츠 넘 귀엽다! 덕분에 당근 스티커 나눔받을 수 있어 좋았슴돠!! 이 글을 읽으며 나도 IT공학 복전 열심히 해서 요런 곳 가봐야겠다는 결심을 할 수 있었습니당~~~ 유익한 글 땡큐!

1개의 답글
comment-user-thumbnail
2024년 10월 15일

Flying Wolf: A thrilling adventure that blends the power of the wild with the mystery of the skies. Experience untamed freedom and fierce determination https://theflyingwolf.com.pk/

답글 달기
comment-user-thumbnail
2024년 10월 15일

Malik Rent a Car - Your Trusted Partner for Reliable, Affordable, and Hassle-Free Car Rentals. Explore the City with Comfort and Convenience at Unbeatable Prices https://maliktravelsandtours.com/

답글 달기
comment-user-thumbnail
2024년 10월 15일

Tech Solution - Innovative IT Services Tailored for Your Business. Streamline Operations, Enhance Productivity, and Drive Growth with Cutting-Edge Technology https://techsolutions.ae/

답글 달기