Search
Duplicate
👨‍💻

매스어답션 백엔드 개발자를 만나다!

안녕하세요 의거님! 간단하게 자기소개 부탁드려요!

안녕하세요. 저는 매스어답션의 백엔드 개발자 문의거 입니다. 개발자로서 커리어를 시작한지는 만 4년 정도 되었구요. 이전에는 AI 기술 기반의 회사에서 근무 했었습니다. 매스어답션에 합류한지는 이제 9개월 정도 되었네요. 매스어답션에 오게된 이유는 NFT를 통해서 유통업계에 있는 문제를 해결한다는 재미있는 아이디어에 이끌렸고, 회사명 처럼 NFT라는 기술을 가장 잘 사용하는 회사라는 생각에 합류하게 되었습니다. 백엔드 개발자로 들어왔지만 프론트엔드도 같이 개발을 하고 서버스의 Cloud 인프라 구축 및 운영도 같이하고 있습니다. ㅎㅎ

매스어답션의 백엔드 개발자가 하는 업무가 궁금해요!

매스어답션의 백앤드 개발자라고 해서 특별히 다른 회사의 백엔드 개발자와 업무적으로 크게 다를 것은 없어요. 다만 매스어답션이 서비스하는 Vircle은 외부 서비스와 많은 상호작용을 하기 때문에 다양한 API활용 하고, 상호작용을 추상화 하는 작업들을 경험할 수 있습니다. 추가적으로 다양한 Block-Chain API를 써볼수 있다는 점 또한 흥미로운 경험을 할수 있는 포인트라고 생각해요. 처음에는 블록체인 기술 기반의 테크회사라서 블록체인 기반 기술에 대한 많은 지식이 필요할 것 이라고 생각을 했지만 중요한건 블록체인 기술의 활용에 대한 아이디어 인것 같아요. 회사 이름처럼 매스어답션은 블록체인 구현 기술보다는 블록체인을 활용한 솔루션에 목적을 두고 있는 회사에요. 그렇기 때문에 블록체인을 잘 모른다고 해서 백엔드 엔지니어로서 일하는데 큰 어려움은 없습니다.

매스어답션에서 백엔드 개발자로 일하며, 언제 성취감을 느끼시나요?

개발자로서 멋지고 재미있는 제품을 만드는 순간도 보람차지만, 저는 팀의 작업들을 자동화 시킬때 큰 성취를 느끼게 되는것 같아요. 저는 개발단계의 배포, 인프라 구축, E2E 테스트, mono-repo관리 등의 작업을 자동화 했는데요. 반복적으로 작업으로 소요되는 많은 시간들을 절약 할수 있었어요. 자동화는 작업자의 실수를 줄이고 생산성을 크게 증가 시키는 것 같아요. 스타트업 같은 애자일한 조직에서 개인의 작업시간은 매우 귀중한 자원이에요. 그래서 자동화로 반복되는 작업의 소요되는 시간을 줄인다는 것은 매우 의미있고 가치있는 일인것 같아요.

매스어답션에서 어려운 과제를 극복하고 스스로 성장하고 있다고 느낀 경험이 있다면 말씀해 주세요.

한 호스팅 업체와 매스어답션의 Vircle서비스를 연동하는 프로젝트를 진행한적이 있어요. 사실 연동 자체는 엄청 어려운 작업은 아니었어요. 그 호스팅 업체의 OpenAPI와 인증체계를 이해하면 나머지는 구현의 문제 였거든요. 다만 정말 중요한 문제는 앞으로의 연동 이었어요. Vircle이라는 서비스는 앞으로도 다양한 서비스와 연동이 될 계획이었기 때문에 계속되는 연동은 Vircle의 Core한 시스템에 지속적으로 영향을 주게 되요. 결국 서비스의 의존성 증가 ⇒ 복잡도 증가 ⇒ 서비스의 안정성 저하를 가져오게 될거라 예상할수 있었죠. Vircle의 Core 시스템에 복잡도를 더하지 않으면서 빠르게 새로운 연동 기능을 추가할 수 있도록 하는게 중요했습니다. 이 문제를 해결하기 위해 시스템의 구조적 개선과 백엔드 개발을 동시에 진행했어요. 안정적으로 서비스의 구조를 바꾸면서도 새로운 기능을 런칭 한다는게 쉽지 않은 작업이었던 것 같아요. 많은 시행착오를 했던 기억이 나네요... 그래도 그 작업을 통해서 백엔드 개발을 보는 시점이 넓어 진것 같아요. 기존에는 하나의 App을 어떻게 잘 동작하게 하는지에 관점이 있었다면, 이제는 다양한 어플리케이션간의 상호작용과 인프라 구성까지 고려하는 관점을 얻게 된것 같아요.

백엔드 개발자로서 좋은 성과를 만들기 위해서는 어떤 역량과 자질이 필요하다고 생각하시나요?

저는 개발을 컴퓨터 과학적 사고를 통한 문제해결 이라고 생각해요. 그래서 개발자의 역량을 크게 2개로 나눈다면 컴퓨터 과학적 사고능력문제해결 능력인것 같아요. 중요한건 컴퓨터 과학적 사고능력은 문제를 해결하기 위한 하나의 도구라는 것입니다. 개발을 하다보면은 당면한 문제보다는 제품의 기술적인 품질에 몰입하게 되는 순간이 있어요. 물론 높은 기술적 수준을 갖추는 것은 엔지니어에게 중요하지만, 너무 매몰되면 오히려 문제 해결은 달성하지 못할수도 있어요. 처음부터 완벽한 것을 만드는 것은 매우 어렵습니다. 그래서 미숙하더라도 완성된 제품을 꾸준히 개선해 나가는 것이 좋은 성과를 만들어내는 방법일 것 같아요.

매스어답션에서 백엔드 개발자는 어떤 기술 스택을 바탕으로 업무를 진행하나요?

매스어답션은 Node.js 환경에서 Backend App을 개발하고 있어요. 앞에서 말했듯이 Vircle은 외부서비스와 상호작용이 많기 때문에 Node.js의 Non-Blocking io와 비동기적 특성은 아주 잘 맞는 기술 스택이라고 할수 있죠. 만들어진 Node.js App은 AWS 클라우드 플랫폼 위에서 동작하고 있어요. 아직은 EC2 기반의 기초적인 MSA형태를 띄고 있지만 추후에는 쿠버네티스를 통해서 Service-Discovery나 Service-Mesh같은 MSA 패턴을 도입하고 싶어요. 소스코드는 많은 기업처럼 Github을 이용해서 관리하고 있어요. 특히 Github Action을 통해서 대부분의 CI/CD 작업들은 진행하고 있습니다. 추가적으로 매스어답션 테크팀은 Mono-Repo를 적극 도입하고 있어요. 하나의 Repo에서 Frontend 프로젝트, Backend 프로젝트 모두 하나의 프로젝트에서 개발이 되고 있어요. mono-repo는 여러 개발 이슈를 통합하고 유지보수 되지 않는 코드가 없도록 하는데 큰 도움이 되고 있습니다.

매스어답션만의 특별한 개발문화가 있을까요? 있다면 소개해주세요!

개발자로서 매스어답션에서 경험할 수 있는 가장 좋은 문화는 회사가 제품에 개발에 있어서 높은 DRI(Directly Responsible Individual)를 부여해 주는 거라고 생각해요. 쉽게 말해서 내가 개발해야하는 파트에 대해 모든 기술적 결정에 최대한의 주도적으로 할수 있습니다. 기존에 회사에서 사용하지 않는 기술이라고 해서 사용하는데 제한이 있지 않아요. 내가 담당한 제품을 만드는 가장 좋고 효율적인 방법이라고 판단한다면 과감하게 도전할 수 있어요. 저 같은 경우는 새로운 프로젝트에 기존의 메인프레임 워크로 사용되는 JS기반의 Express라는 프레임워크를 버리고 TS와 함께 Nest.js라는 새롭게 떠오르는 프레임워크를 도입 했거든요. 안정적이고 확장에 유리한 서비스를 만들어 내기 위해서는 JS+Express보다는 TS+Nest.js가 이점이 크다고 판단했어요. 제가 판단한데로 새로운 프레임워크가 도입된 제품의 코드품질은 높아지고 확장성도 높았어요. 제가 주도적으로 문제를 발견하고 솔루션을 제시하고 문제의 개선을 경험한거죠. 저는 이게 개발자로서 매우 귀중한 경험이라고 생각해요. 개발자의 성장은 이런한 경험을 통해 이루어 지거든요. 다만 DRI가 있다고 해서 모든것을 내 마음대로 한다는 것은 아닙니다. DRI의 전제는 이 기술적인 문제를 해결하는데에 있어서 내가 가장 최선의 판단을 내릴수 있다는 거에요. 그래서 동료들에게 왜 이 기술적 결정이 최선인지를 설득시킬수 있어야 해요.