본문 바로가기
프로그래밍/자바스크립트

프로그래밍 「 자바스크립트 편」Strapi vs Nest.js: 백엔드 개발의 단순성과 유연성에 대한 이야기

by grapedoukan 2023. 6. 25.
728x90

지난 몇 주 동안 저는 한 번도 사용해 본 적이 없는 몇 가지 다른 기술을 접할 기회가 있었습니다.

저는 IT 회사에서 업무 효율성과 속도를 높이기 위해 회사에서 사용할 사내 소프트웨어를 개발하고 있습니다.

신제품을 개발할 때마다 모든 개발자가 거쳐야 하는 가장 중요한 고려 사항 중 하나는 사용할 스택입니다. 고려해야 할 사항 중 하나는 '누가 사용할 것인가'였습니다.

이 경우에는 이미 답변이 있었지만 장기적으로는 제품을 광고하기 위해 인플루언서를 찾는 많은 사람들이 사용할 것입니다. 그래서, 회사 소유자.

CTO는 빠르고 쉬운 출시를 원했기 때문에 Strapi와 함께 몇 가지 연구와 테스트를 수행해야 했습니다.

스트라피

제 생각에 Strapi는 프로젝트를위한 백엔드 데이터베이스 및 API를 만들고자하는 많은 사람들에게 빠르고 쉬운 솔루션입니다.

-데이터베이스

데이터베이스 테이블 생성은 매우 간단하고 쉽고 빠릅니다. Strapi에는 데이터베이스에 대해 전혀 모르는 사용자가 데이터베이스를 만들 수 있는 자체 GUI가 있습니다. 테이블 간의 관계를 쉽게 만들 수 있으며 각 테이블에 행을 만드는 것은 매우 쉽습니다.

- 인증/인증

이 부분이 그 어느 때보다 쉬워졌습니다. Strapi에 가입하고 로그인하는 RESTful API 엔드포인트를 알고 있다면 땀을 흘릴 필요조차 없습니다. 몇 번의 클릭만으로 인증된 사용자에게 특정 권한을 부여하면 개발자는 API에 액세스할 수 있는 사람과 액세스할 수 없는 사람을 제어할 수 있습니다.

- CRUD 작업

Strapi의 RESTful API 엔드포인트를 통해 사용자는 몇 개의 키로 데이터베이스에서 항목을 자유롭게 생성, 읽기, 업데이트 및 삭제할 수 있습니다. 이미 구조화된 끝점을 조금만 조정하면 데이터베이스의 모든 행을 원하는 대로 조작할 수 있습니다

스트라피는 전반적으로 어땠나요?

처음에는 모든 간단한 API를 즉시 만들 수 있다는 점이 마음에 들었습니다. 말 그대로 즉시였습니다. 나는 사용자로서 아무것도하지 않았지만 Strapi는 나를 위해 모든 것을 할 수있었습니다. 인증과 권한 부여가 가장 놀라운 부분이었습니다. 코드를 작성하지 않고 jason 웹 토큰을 발행하여 사용자에게 권한을 부여하는 데 활용할 수 있었습니다.

그러나 더 복잡한 API 디자인을 만들어야 할 때 모든 것이 매우 어려워졌습니다. 다대다 관계를 만들 때 엄청나게 긴 이름을 가진 테이블을 만들었고 TypeORM에 대한 지식이 없으면 코드에서 작업을 수행하기가 매우 어렵습니다.

그래서 간단히 말해서 간단한 CRUD 작업 외에는 사용하기가 너무 어려웠습니다!

또한 가장 중요한 문제는 문서 부족이었습니다. Nest.js와 같은 다른 프레임워크를 사용하는 동안 문제가 발생했을 때 문제와 관련된 많은 StackOverflow 질문이 있었고 이에 대한 모든 것을 다루는 멋진 문서가 있었습니다. 그러나 Strapi 관련 문제를 찾아 보았을 때 같은 게시물을 반복해서 읽었지만 많은 것을 얻지 못했습니다.

 

내가 경험한 두 번째 기술은 Nest.js였습니다. Nest.js는 Express를 기반으로 구축된 서버 측 프레임워크입니다. TypeScript의 기능을 개발 중 유형 검사 및 오류 감지를 위한 기본 언어로 활용합니다. Node.js 및 TypeScript의 최고의 기능을 결합한 Nest.js는 효율적이고 강력한 백엔드 시스템 개발을 가능하게 합니다.

Nest.js의 초기 학습 곡선은 사용자 친화적 인 GUI가 없기 때문에 Strapi에 비해 가파르 지만 눈에 띄는 몇 가지 강력한 기능을 제공합니다.

- 의존성 주입

의존성 주입은 처음에는 이해하기 어려울 수 있는 개념이며, 나 자신도 여전히 그것을 완전히 이해하는 과정에 있습니다. 그러나 Nest.js에서 Dependency Injection의 기본 개념은 클래스를 'Injectable'로 지정한 다음 다른 클래스에 'Inject'할 수 있다는 것입니다. 이를 통해 '주입 가능한' 클래스를 필요로 하는 다른 클래스에서 사용할 수 있습니다.

- 모듈식 구조

Nest.js에 대해 높이 평가한 또 다른 측면은 모듈식 구조와 파일의 상호 연결성입니다. Nest.js의 각 모듈은 특정 기능 세트를 캡슐화합니다. 이러한 모듈은 종속성으로 삽입되지 않는 한 독립적으로 작동할 수 있습니다. 그러나 모두 'AppModule'로 알려진 기본 모듈에 연결되어 있습니다.

-장식

데코레이터는 또한 내가 전에 배운 적이 없는 새로운 개념이었기 때문에 약간의 학습 곡선을 가지고 있었습니다. 그러나 데코레이터에는 '@' 기호가 접두사로 붙으며 클래스, 메서드, 속성 및 매개 변수를 수정할 수 있습니다. 데코레이터는 경로를 정의하고, 미들웨어를 지정하고, 인증을 구현하는 데 사용할 수 있습니다.

Nest.js 전반적으로 어땠나요?

JavaScript와 TypeScript에 더 익숙하기 때문에 Nest.js가 더 나은 선택이었습니다. 개발자가 거의 모든 상황에서 호출 및 사용할 수 있는 다양한 내장 기능을 갖추고 있습니다. 처음에는 데코레이터와 의존성 주입의 개념을 이해해야했기 때문에 모든 것이 어려웠지만, 익숙해지면 할 수있었습니다.

나는 여전히 효율적인 Nest.js 사용자라고 할 수 없지만 Nest.js의 장점 대부분을 이해합니다.

 

지난 3주 동안 저는 개발 여정에 새로운 문을 열어준 두 가지 멋진 기술을 방문하고 활용할 기회를 얻었습니다. 둘 중 하나를 사용하여 본격적인 응용 프로그램을 구축하지는 않았지만 각각에 대한 깊은 통찰력을 얻었다는 결론을 내릴 수 있다고 생각합니다.

결론적으로 Strapi는 간단한 사용 사례를 위한 단순성에서 빛을 발하는 반면 Nest.js는 TypeScript에 익숙한 개발자를 위해 보다 포괄적이고 유연한 프레임워크를 제공합니다. 궁극적으로 둘 사이의 선택은 특정 프로젝트 요구 사항과 기술에 대한 개발자의 친숙도에 따라 달라집니다.

728x90