“백엔드 개발자로서 다양한 시각에서 서비스를 바라보는 것이 어려울 수도 있는데, 스노우에서는 더 넓은 시야로 아키텍처를 설계할 수 있는 경험을 얻을 수 있었어요.”
안녕하세요. 스노우입니다.
오늘 소개해 드릴 구성원은 2021 신입 공채로 입사한 3년 차 개발자 김태호님입니다.
태호님께서는 개발자가 개발만 잘하면 되는 것이 아니라 다양한 시각에서 서비스를 바라보는 능력이 필요하다고 말씀해 주셨는데요. 어떻게 서비스에 대한 이해도를 높일 수 있었는지, 그리고 개발자로서 스노우는 어떤 장점이 있는 조직인지 자세한 이야기를 나누어 보았습니다.
안녕하세요. 스노우 Server 개발 부서에서 백엔드 개발을 맡고 있는 3년 차 주니어 개발자 김태호입니다. 저는 SNOW, B612, SODA, Foodie 와 같은 카메라 앱부터 편집 앱인 EPIK, VITA까지 다양한 서비스 백엔드 기술을 개발하고 있어요.
현재 가장 집중하고 있는 업무는 AI 프로필이나 AI 이어북 같이 생성형 AI를 이용한 상품들이 이용자들에게 잘 서비스될 수 있도록 하는 것이에요. 생성형 AI 서비스 같은 경우 앱, 웹, Vison기술 등 여러 조직과 협업하면서 진행되는데요. 저는 그 과정에서 사용자가 상품을 구매하고 난 후 시점부터 학습이 완료되고 확인하는 부분까지의 서버 기능을 개발하고 있습니다.
그 과정에서 신규 기능에 대한 비즈니스 로직 개발은 물론이고, 요청량이 급증해도 안정적으로 처리할 수 있도록 하는 기술에 관한 연구, 예외 상황이 발생했을 때 바로 알 수 있도록 알려주는 알럿이나 모니터링 툴까지 개발을 진행하고 있어요.
그뿐만 아니라 다른 서비스의 신규 기능에 대한 비즈니스 로직을 개발하기도 하고, 인프라 관리, 신규서비스 아키텍쳐 설계 등 다양한 업무를 진행하고 있습니다.
제가 느낀 장점을 크게 두 가지로 말씀드리고 싶어요.
첫 번째로는 이렇게 높은 글로벌 트래픽을 경험할 수 있다는 것 자체가 백엔드 개발자에게는 정말 중요한 경험이에요. 전 세계 이용자가 많으므로 사소한 기능을 개발할 때도 고려해야 할 것들이 많은데요, 예를 들어 네트워킹 환경이 안 좋은 국가들도 고려해야 하고, 순간적으로 트래픽이 몰리는 다양한 상황에 대해서도 대비하여 개발해야 하므로 많은 고민과 경험을 통해 빠르게 성장할 수 있어요.
두 번째로는 업무 진행 과정에서 다양한 직군의 동료들과 긴밀하게 협업하며 의견을 낼 수 있는 업무 문화를 가진 점이에요. 새로운 기능을 추가할 때마다 해당 기능을 담당하는 여러 직군의 담당자들끼리 TF를 이루어 업무를 진행하는데요, 개발뿐 아니라 기획, 운영, 디자인, 비즈니스까지 더 좋은 서비스를 만들기 위해 함께 논의하며 자유롭게 공유하는 분위기입니다. 이런 업무 환경을 경험했기 때문에 다른 직군에 대한 이해도를 높일 수 있고, 서비스에 대한 이해도 역시 다각도로 키울 수 있었어요.
백엔드 개발자로서 다양한 시각에서 서비스를 바라보는 것이 어려울 수도 있는데, 스노우에서는 더 넓은 시야로 아키텍처를 설계할 수 있는 경험을 얻을 수 있습니다.
앞에서 말씀드렸던 모든 서비스의 서버 개발을 저희 부서에서 담당하고 있으므로 다양한 기술 스펙과 프레임워크들을 파악하는 것이 가장 어려웠습니다. 서비스 중에서는 SNOW나 B612처럼 오래된 서비스들도 있고, 최근에 오픈한 서비스나 기능들도 있었는데요.
저희 부서는 오래된 개발 프레임워크부터 최신 기술을 도입하는 것까지 모두 열려있는 편이었기 때문에 정말 다양하게 개발 및 유지 보수를 하고 있었어요. 업무가 처음인 신입 입장에서는 어디서부터 어떻게 공부해야 할지 막막하게 느껴졌던 것 같습니다.
다행히 입사 후 꽤 오랫동안 코드를 읽고, 서비스를 파악할 수 있는 시간을 주셨는데요. 모르는 부분들에 대해서는 얼마든지 질문할 수 있었고, 어느 정도의 수준까지 공부하는 게 좋을지 도움을 요청할 수 있었어요. 얼마간의 적응 기간 이후 작은 스펙부터 직접 코드를 개발해 보았고, 많은 도움을 받으면서 점점 개발 실력과 이해도를 높여나갈 수 있었습니다.
스노우의 개발 문화 중 가장 중요한 키워드는 협업과 자기 주도성이에요.
앞서 말씀드렸듯 스노우에서는 하나의 기능을 개발할 때 다른 직군들과의 긴밀한 협업을 통해 업무를 진행하는데요, 더 나은 서비스를 제공할 수 있도록 함께 고민하는 시간이 많은 편이에요. 이런 경험을 통해 다양한 직군에 대한 이해도 높아지고, 각 기능의 담당 개발자로서 책임감을 느끼고 더 좋은 설계에 대해 고민하고 공부하며 여러 기술들을 사용해 볼 수 있는 것 같습니다.
또한 저희 부서에서는 각자 중요한 기능의 개발이 시작할 때와 끝났을 때 왜 이렇게 개발하였고, 여기서는 왜 이 기술을 사용했는지 기술과 조언을 공유하는 코드 리뷰도 활발하게 진행하는 편이고요. 도입해 보면 좋을 기술이 있다면 주기적으로 스터디를 진행하고, 실제로 적극 도입으로 이어지는 경우도 많이 있습니다.
저는 스케일을 정확하게 파악하는 능력이라고 생각해요.
학과에서 공부할 때는 어떤 알고리즘이 제일 빠른지, 제일 효율적인지 이런 부분들에 집중하여 공부했었는데, 직접 실무에 임해보니 무조건 가장 크고 빠른 것을 선택하는 것은 비용이나 시간상으로 비효율적이라는 것을 깨닫게 되었어요.
어느 정도의 사용자가 들어올지 스케일을 예측하고 그에 맞는 개발과 설계를 진행하는 것이 정말 중요해요. 수치적인 부분도 고려해야겠지만, 해당 서비스나 사업에 대해서 이해해야 보이는 것들이 있어요. 확장 가능한 사업일 경우 추후 완전히 방향성이 달라지거나 다른 기능이 추가될 필요가 있기도 하거든요. 그래서 실무에서는 상황에 따라 언제든 스케일 업 할 수 있도록 사전에 멀리 내다보고 예측하며 설계할 줄 아는 능력이 정말 중요하다고 생각합니다.
서비스를 즐겁게 사용하는 이용자들을 볼 때가 아닐까요? 일상에서도 그렇지만 특히 해외 여행지에서 스노우 서비스를 사용하는 분들을 보면 제가 만든 서비스라고 말하고 싶을 정도로 기분이 좋더라고요. 요즘엔 특히 AI 이어북이나 AI 프로필의 결과물을 지인들의 SNS나 온라인에서도 흔하게 볼 수 있는데요, 볼 때마다 굉장히 뿌듯한 마음이 듭니다.
최근 관심사는 아무래도 지금 진행 중인 업무들과 관련이 있는데요. 현재 저희가 가진 기술들을 B2B로 옮겨보는 시도를 하고 있습니다. 그 과정에서 어떤 식으로 서버를 구축해야 할지, API는 어떤 식으로 해야 할지, 인증이나 여러 민감한 문제들은 어떻게 처리하는 게 좋을지에 대해 여러 비즈니스 로직과 설계적인 부분을 고민하고 있어요.
기술적인 관심사로는 최근 제가 많이 사용하고 있는 webflux, mongodb, k8s정도가 있을 것 같고, 관심이 있어서 도입시켜 보고 싶은 부분으로는 최근 새로 릴리즈된 자바 21에서 가상 스레드 기술을 말씀드리고 싶네요.
스노우에서는 다양한 개발 경험과 기술적인 성장, 아키텍처 설계 및 구조를 파악하는 능력 등 개발자에게 필요한 역량들을 성장시키기에 너무나도 좋은 환경이라고 생각합니다. 글로벌 서비스와 높은 트래픽, 자유도가 높은 개발 환경에서 주도적으로 개발해 보고 싶으신 분이시라면 스노우에 입사하셔서 같이 즐거운 개발 했으면 좋겠습니다.