근황; 풀스택으로 전향 중
#go, #backend•
- 처음으로 실무에서 백엔드 개발을 본격적으로 시작했다. 개인적인 욕심이 살짝 가미된 사내 프로젝트에서 백엔드를 개발한 적도 있었고, 사이드 프로젝트로는 백엔드 개발도 겸하고 있긴 했지만 실무에서 정식 업무로 할당 받은 건 이번이 처음이다.
- Node 기반의 개발 환경은 워낙 익숙하기도 하고, Nest.js는 진작에 사이드 프로젝트로 쓰고 있었기 때문에 업무에 적응하는 것은 어렵지 않았다. 다만 지난 수년 간 3명의 백엔드 개발자들을 거쳐가면서 만들어진 이 거대하게 꼬여있는 코드베이스는 당혹스럽긴 했다.
- 프론트엔드는 진작부터 내게 권힌이 주어져있던 편이었기에 수차례의 리팩토링과 전사적인 개편을 거쳐 지금은 대부분 정돈되어 있는 편이지만 백엔드는 거쳐간 개발자도 많지 않았고, 그 개발자들의 성향 자체도 형태 유지를 우선시하는 성향이기에 전반적인 코드 구조는 상당히 오래된 형태를 유지하고 있다.
- 사이드 프로젝트에서도 느낀 점이지만 MongoDB의 성능은 여전히 거지같다. 복잡하게 연계되어 있는 서비스 특성상 NoSQL보다는 SQL을 택하는 것이 성능적으로나 비용적으로나 괜찮았을 것이라 아쉬운 부분이다.
- 여튼 거지같은 aggregation 문법을 헤쳐 나가며 기존에 느렸던 쿼리 몇 개를 개선했다. 백엔드... 나쁘지 않을지도?
- 그래서 요즘은 Go를 배워보고 있다. 기술 스택이 왜 JS 밖에 없냐는 말도 그만 듣고 싶고, 사이드 프로젝트를 진행하면서 빠르고 가벼운 서버에 대한 니즈를 크게 느끼고 있기 때문에 진작에 배워보고 싶던 언어였다.
- 아니 근데 Pointer 뒤지게 불편하네.
- 마침 동시성이 필요한 배치 서버를 하나 만들 일이 있어서 Go로 짜보고 있는데 고루틴 성능 미쳤다.
- 회사 스트리밍 서버가 Node로 개발되어 있는데(심지어 Nest.js랑 MongoDB 스택을 이악물고 유지 중) 이걸 Go + Redis 조합으로 개발했다면 얼마나 빠르고 비용도 절감했을까? 군침이 싹 돈다.