내가 다니는 회사는 백엔드 개발을 NestJS로 한다. 입사 초기에는 순수 Express를 사용하여 개발하였지만, 비즈니스 로직과 데이터 로직이 뒤죽박죽 섞이면서 유지보수하는데 굉장히 애를 먹었다. 이 때문에 작년부터 새 프로젝트에서는 비교적 아키텍처가 어느정도 강제되어 있고 의존성 주입과 다양한 미들웨어 형태를 제공하는 NestJS를 도입하게 되었다.
NestJS를 처음 채택하여 개발을 시작했을 때 불안했던 것은 실무에서 이 프레임워크를 사용하는 회사가 있을까? 하는 것이었다. 분명 꽤 잘 만들어졌고 편리한 기능들이 많음에도 실전에서 사용할 수 있을 만큼 괜찮은 것인가 하는 의문이 들었다.
하지만 올해(2023년)를 기준으로 봤을때 국내 레퍼런스도 눈에 띄게 많이 나오고 있고, 토스, 당근마켓, 인프런, 팀스파르타 등의 규모가 어느정도 있는 회사에서도 일부 서비스를 NestJS로 개발하고 있다는 것을 알 수가 있었다. 토스에서는 아예 AOP 패키지를 공개하기도 하였고, 팀스파르타는 국내 NestJS 커뮤니티를 주도적으로 이끌고 있다.
따라서 올해 시작하는 신규 프로젝트에서도 NestJS를 적극 채택하였고 어느덧 1년째 사용해오고 있다.
NestJS는 프론트엔드 프레임워크인 Angular의 영향을 많이 받은 것으로 알려져 있다. 태생부터 Angular 개발자들이 만든 프레임워크라는 것이 알려져 있다.
나는 이 글을 작성하는 시점에서는 Angular에 대해 자세히 알지는 못한다. 구글이 개발했다는 것과, 배우기가 어렵다(러닝커브가 높다)는 것, 그리고 지금은 React에 밀렸다는 이야기 정도? 나 또한 프론트엔드는 React만을 배웠고 Angular에는 관심이 별로 없었다.
하지만 NestJS를 이용하여 백엔드 API를 개발하면서, 그 태생이 된 Angular는 어떤 물건일까 하는 생각이 들었다. 어떤 특징을 가졌으며 내가 배웠던 React랑은 어떤 점이 다른 지 알고, NestJS가 Angular의 어떤 부분에서 영향을 받았는지 알아보고자 한다.
이를 알아보기 위하여 두 프레임워크를 이용하여 투두리스트를 만들고자 한다. 현행 버전인 Angular 15 버전과 NestJS 9 버전을 이용할 것이며, 만드는 과정은 추후 시리즈로 연재하고자 한다.