🎤 SY : 안녕하세요. 준님 :) 인터뷰에 응해주셔서 정말 감사드립니다. 먼저 간단한 자기소개를 해주실 수 있을까요?
🙇♂️ 준님 : 그리팅의 백엔드 챕터에서 그리팅을 개발하는 권준이라고 합니다. 초기 합류해 백엔드 개발을 하고 있어요.
🎤 SY : 준님은 그리팅의 초창기부터 개발을 하셨다 보니 이해도가 굉장히 높을 것 같습니다. 그래서 그런데 준님이 생각하는 백엔드 관점에서 현재 가장 풀어야 할 문제는 무엇이라 생각하시나요?
🙀 준님 : 예전에는 빠른 개발을 지향하다 보니 API나 Table 등이 점차적으로 ‘강결합’이 되고 있었어요.
‘강결합’이 되어있다 보니 기능을 딜리버리 하는 개발자 입장에서 “지금 어떤 부분이 강결합되어있어서 기능 개발하는데 좀 어려움이 있을 것 같아요.” 또는 “강결합 때문에 시간이 조금 많이 필요할 것 같아요.”라는 식의 이야기해왔어요. 이를 해결하기 위해 MSA에 대한 이야기를 하고 전환 중에 있어요.
🎤 SY : 안 그래도 최근 슬랙을 보니 ‘데이터 강결합’이라는 단어가 자주 보이던데 ‘데이터 강결합’은 무엇인지?
😺 준님 : 쉽게 말하자면, 변경을 해야 하는 부분만 변경할 수 있도록 해야 하는데 그동안 하나를 변경하기 위해 전체를 수정해야 하는 번거로움이 있었어요. 이게 데이터 강결합인데, 이를 해체시키는 작업이 MSA의 한 종류라고 볼 수 있어요.
예를 들어 지원자 정보에 대한 ‘기본 정보’가 있고 ‘학력 사항’, ‘자격증 정보’ 등 다양한 것들이 있는데 기존에는 기본 정보를 바꾸기 위해 학력사항, 자격증 정보 등을 다 체크해야 해요. 하지만 모듈화를 하면 고쳐야 하는 부분만 고칠 수 있기 때문에 굉장히 효율적이라 볼 수 있어요.
🎤 SY : 저도 인터뷰 준비하면서 좀 찾아보니 대부분 스타트업은 모놀리식으로 개발하는 것으로 알고 있는데, MSA를 고려하게 된 배경이 궁금해요. 분명히 각자 장단점이 있던 것으로 알고 있었거든요!
😼 준님 : 사실 제가 2~3년 전부터 MSA에 대한 이야기를 꺼내왔었어요. 당시 MSA로 전환하게 된다면 기술적으로 성장할 수 있고, 나중에 새로운 팀원이 합류했을 때 각 팀원에 대한 Speciality가 높아질 것 같다고 생각해 장기적으로는 좋을 것 같다고 생각했었어요.
하지만 당시의 문제를 해결하는 데 꼭 필요한 아키텍처는 아니었고 오히려 모놀리식 아키텍처가 효율적이기도 했어요. 최근 반년 정도 전부터 MSA로 전환하지 않았기에 발생하는 강결합으로 인해 유저가 원하는 기능 개발을 빠르게 하지 못하는 상황이 올 수도 있겠다 생각이 들었어요. 저희의 가치인 빠른 실행, 고객이 사랑하는 서비스를 만들기 위해 MSA로 전환은 불가피하다고 생각해 24년 목표로 잡게 되었어요.
참고 : 모놀리식 vs 마이크로서비스, 어떤 아키텍처를 사용할까?
🎤 SY : 그럼 MSA가 굉장히 좋은 아키텍처인 것 같은데 처음부터 도입은 어려운 것일까요?
😾 준님 : 처음부터 MSA로 서비스하기에는 MSA 규모 자체가 굉장히 커서 적절하지 않다고 생각해요. 그리팅을 예로 들면 초창기에는 칸반 보드를 옮기는 정도의 간단한 기능을 위해 MSA를 도입하면 소위 ‘배보다 배꼽이 더 큰’ 경우가 생길 수 있어요. 또한 모놀리식 아키텍처라면 몇 시간이면 만들 수 있지만 MSA를 하면 오히려 며칠이 걸리는 정도로 오래 걸리기에 당시 상황에서는 저희 팀의 밸류인 ‘빠른 실행’을 할 수 없기 때문이에요.
그리고 회사의 비용 측면에서도 만약 고객이 10명이라 가정했을 때 모놀리식 아키텍처이면 서버 1개면 충분하지만 MSA라면 서버를 5개를 쓰는 등 과하게 비용을 지출해야 하는 단점도 있었기 때문에 초기에는 모놀리식 아키텍처를 사용한다고 말씀드릴 수 있어요.
🎤 SY : MSA 전환했을 때 엔지니어 측면에서의 장점은 무엇인가요?
😸 준님 : EDA(Event Driven Architecture)를 고민한다던가 어떠한 트랜잭션(Transaction)을 고민한다거나 등 엔지니어 입장에서 큰 고민들을 해볼 수 있기 때문에 엔지니어로서 성장할 수 있다는 장점이 있어요.
🎤 SY : 지금 그리팅의 MSA 전환은 어느 정도 진행되고 있나요?
👨🏫 준님 : 전환의 시작과 끝을 어떻게 기준 잡냐에 따라 다를 수 있지만 현재로서는 이제 본격적인 시작 단계라 볼 수 있을 것 같아요. 사실 MSA를 사전 준비하는 단계가 오래 걸렸어요. 왜냐하면 MSA 전환에 대한 안건을 꺼내고 이게 왜 필요한 것인지, 그리고 어떻게 할 것인지에 대해 사전에 준비가 필요하고, 관계있는 모든 팀을 (제품팀 등) 설득하고 Align을 해야 하거든요.
이 과정이 끝난 이후에는 팀 내부적으로 MSA로 전환하려면 어느 정도 좋은 Practice가 필요하다 생각하는 데 이를 만들기 위해 어떤 기술력이 필요하고 어떤 컨벤션(Convention)이 필요한 지 등을 논의하며 방향성을 잡았어요.
현재 진행 상황은 방향성을 잡고 코드적인 개편과 그리팅 서비스 중 어떤 특정 부분은 MSA 전환된 부분으로 기능 배포가 될 예정이에요. 하지만 이제 시작인 거죠 (웃음)
🎤 SY : 이야기를 들어보니 PO/PM 분들 설득하는 것이 굉장히 중요했을 것 같아요.
😄 준님 : 맞아요. PO/PM 분들은 비즈니스적으로 새로운 기능을 어떻게 딜리버리 할까 등에 대한 전반적인 고민을 하시는 것이 목표고, 우리 백엔드 엔지니어는 새로운 기능뿐만 아니라 기존에 있는 기능들을 어떻게 유지 보수할지에 대해 고민을 하는 것이 목표잖아요. 그러다 보니 백엔드 엔지니어는 MSA가 지금 왜 필요한지에 대한 공감이 있지만 PO/PM 분들은 상대적으로 공감이 덜 되실 수 밖에 없다고 생각해요. 하지만 저희가 앞으로 더 안정적이고 빠른 서비스를 제공하려면 MSA 도입이 불가피하다는 것을 설득했고 이후 리소스 분배도 적극적으로 도와주셔서 기능 개발과 MSA 전환을 잘 진행하고 있는 것 같습니다.
🎤 SY : 그럼 MSA 전환을 하면서 기술적으로 힘든 부분은 어떤 부분인가요?
🧐 준님 : 음.. 아까 예로 들었던 EDA라던가 트랜잭션의 대표적인 패턴인 SAGA 패턴, 2PC 등이 있을 텐데 이 중 어떠한 패턴으로 할지 등등의 고민이 있습니다. 그리고 MSA 전환을 하게 되면 중간 미들웨어인 Kafka를 어떻게 사용할 것인지에 대한 고민들이 지금도 진행 중이면서 어떻게 하면 더 잘할 수 있을지 함께 고민하고 있어요.
그래서 아직 넘어야 할 산은 굉장히 많다고 생각해요. 디벨롭하면서 더 좋은 방법을 찾고 그리팅에 맞는 최적의 MSA 전환을 하려고 해요.
🎤 SY : 현재 찾고 있는 분이 이런 것들을 도와주실 분이라 보면 되겠네요.
👀 준님 : 맞아요. 저희처럼 모놀리식 아키텍처에서 MSA로 전환하면서 생기는 고민들의 시간을 단축시켜주실 수 있는 경험과 노하우를 가지신 분을 현재 모시고자 노력하고 있어요. 그래서 MSA 환경에서 개발을 하시면서 더 좋은 방향을 끊임없이 탐구하시고 적용해 본 분이거나 현재 저희처럼 전환을 해보신 분이 필요합니다.
그리팅 백엔드 채용공고 보러가기 👉 채용 공고
🎤 SY : 지금 그리팅 백엔드 팀에는 어떤 능력을 가진 분들이 계신가요?
🧚 준님 : 그리팅 백엔드 엔지니어들은 ‘문제해결력’이 좋은 분들이라 생각해요. 특정 회사들은 명세 등을 받아 그대로 개발하는 곳이 많은 것으로 알고 있어요. 하지만 저희 팀의 경우에는 명세보다는 고객이 어떤 문제를 겪고 있는가부터 시작해 고객의 문제를 보고 해결 방향에 대해 이야기하거든요.
비단 PO/PM 분들뿐만 아니라 백엔드 엔지니어, 프론트 엔지니어 모두가 그 문제에 대해 더 정확하고 쉽게 해결할 수 있는 방법을 다 같이 논의하고 그 결과를 도출해 내기에 그러한 회사의 팀들에 비해 ‘문제해결력’이 좋다고 생각합니다.
같이 고민하며 문제해결 한 사례를 보고 싶다면? 💁♂️ [두들린사이드] 문제 해결을 위해 깊게 고민하고, 빠르게 실행해요. (feat. 연동 서비스)
🎤 SY : ‘우리 팀에 합류하면 이런 것들을 경험해 볼 수 있어.’가 있을까요?
🙆♂️ 준님 : 사실 개발자라면 모두 고민해 보셨을 것이 있어요. 보통 “나는 서비스를 만들고 싶어”라는 마음으로 개발자가 된 사람들이 많다고 생각해요. 서비스를 통해 고객의 문제를 해결해 주거나 니즈를 충족시켜주는 것을 원하는 분들이 많을 텐데 생각보다 꽤 많은 회사에서 명세에 기반한 개발을 하고 있어요.
물론 큰 서비스의 일부를 지속적으로 담당하기에 해당 분야에 전문성과 히스토리 트래킹이 쉽다는 장점이 있을 것 같아요. 하지만 그만큼 다른 기능이나 서비스를 경험하기 어려운 환경이지 않나 생각해요. 저희 팀에 합류하시면 특정 기능만 담당하지 않고 사일로에 따라 그리팅의 다양한 부분을 개발해 볼 수 있어 서비스 자체를 만드는 경험을 해보실 수 있다고 생각해요. 또한 누군가가 ‘저 이 기능 개발을 담당하고 싶어요’라고 했을 때 얼마든지 할 수 있도록 장려하는 것도 되게 큰 장점이라 생각해요.
🎤 SY : 마지막으로 그리팅에 합류할 미래의 팀원에게 한마디를 한다면?
💁♂️ 준님 : 앞서 말씀드렸던 것처럼 저희 팀에 오면 정말 다양한 도전을 해보실 수 있어요. 문제를 발견하고 어떻게 해결할지 함께 고민하고 최적의 방법으로 해결해나가는 재미를 느끼고 싶다면 주저 말고 지원해 주세요. 커피챗도 언제든지 환영입니다!!
그리팅 백엔드팀에 지원하고 싶다면? 👉 채용 공고
그리팅과 커피챗을 해보고 싶다면? 👉 안녕하세요. 카페 '그리팅' 입니다 ☕️