로컬 NAS로 서비스 배포해보기

먼지가 쌓여있던 NAS를 다시 켜다.

by citeFred

최근 클라우드 서비스가 대세인 만큼, 많은 IT교육과정과 채용시장에서 AWS와 같은 플랫폼을 통해 배포하는 경험이 중요시되고 있습니다. 하지만 스타트업이나 간단히 실제 서비스를 경험해보고자 할 때 AWS를 통한 서비스를 운영하면 지속적인 비용 문제를 간과할 수 없습니다.


AWS를 처음 접하면 다소 복잡하게 느껴질 수 있지만, 기본적으로 인터넷에 연결된 클라우드 컴퓨터를 렌탈한다고 생각하면 쉽게 접근할 수 있습니다. 또한 다양한 레퍼런스와 가이드들이 많은 개발자분들로부터 제공되고 있어서 스텝 바이 스텝으로 진행해보면서 감을 익힐 수 있다고 생각합니다. 로컬 환경에서 개발하고 테스트한 프로젝트를 실행해보는것에 익숙해졌다면 사실 물리적으로 보이지 않을 뿐 새로운 컴퓨터에 개발 환경을(실행 환경) 구축하고 소스코드 또는 빌드된 프로젝트를 전송하고 실행하는 데 집중하면 됩니다. AWS는 그 외에 수동으로 각종 서비스에 연결되어야 할 인프라 관점에서의 각종 설정을 GUI를 통해 도와준다는 점이 큰 장점입니다. 그러나 다양한 문제를 직접 경험하고 공부해 나가기 위해서 보다 클래식한 접근 방법으로 개인이 소유한 컴퓨터로 배포해보면서 관찰해보고자 합니다.


하지만, 개인용 PC는 개발뿐만 아니라 다른 업무에도 사용되기 때문에, 고정적으로 서버 역할을 할 PC가 필요합니다. 이때 놀고 있는 NAS를 활용하는 것도 좋은 대안이 될 수 있습니다. NAS는 네트워크에 연결된 스토리지로 많이 사용되지만, 결국 이 또한 인터넷에 연결된 하나의 컴퓨터로 생각하면 됩니다. 부가적으로 NAS 자체에서 서버로 사용될 수 있는 다양한 애플리케이션을 제공하기 때문에 한번쯤 경험해볼만 한 것 같습니다.



NAS의 장점과 활용 가능성

000000085304.jpeg

개인이 위와 같은 대규모 서버를 접해보기 어려운것이 현실이기 때문에, 그 전에 다뤄 볼 수 있는 작은 서버인 점에서 "다양한 경험을 할 수 있지 않을까?"라는 호기심이 생겼습니다. 이는 초보 개발자가 물리적 서버를 직접 경험해 볼 수 있는 접근성이 좋은 장점이 있다고 생각합니다. 또한 개인이 서비스를 도전해보고자 할 때 배운대로 AWS인프라를 활용하게 되면 항상 AWS의 비용이 예측이 되지 않는 두려움이 있습니다.

클라우드 서비스는 지속적인 비용이 발생하지만, NAS는 초기 투자 이후 유지비용이 상대적으로 적습니다. 또한 NAS의 가장 장점은 Docker, Nginx 등 충분히 다뤄 볼 만한 다양한 배포 도구를 지원하기 때문에 접근성이 나쁘지 않은 부분입니다. 이러한 점에서 NAS는 개인 프로젝트나 소규모 서비스에 실질적으로 적합한 선택이 될 수 있습니다.



NAS에서의 Docker 지원

image-24-3.png?fit=3840%2C2160&ssl=1

NAS를 활용한 서비스 배포 과정은 Docker의 힘을 크게 빌릴 것입니다. NAS에서 공식적으로 Docker를 지원하기 때문에, 각 프로젝트를 이미지화하고 컨테이너화한 후 이를 NAS로 이동시키는 것이 비교적 간단할 것으로 예상됩니다. 이 과정에서 Nginx, SSL 등 추가적인 연결 설정과 도메인과 웹 서버의 연결 등이 필요할 것으로 보입니다.


앞으로 마주할 문제를 해결하기 위해서는 로그를 확인하고 설정 파일을 점검하는 것 뿐만 아니라 각종 커뮤니티나 포럼에서 유사한 문제를 겪은 사람들의 경험을 참고하는 것도 큰 도움이 될 것입니다. NAS를 통해 서비스를 배포하면서 여러 가지 문제를 겪을 것으로 예상되며, 저 또한 문제 해결의 사례 중 하나로 누군가에게 도움 될 수 있는 사례가 되고자 문제 인식과 해결 방안을 찾아보고 그 과정을 공유해 볼 예정입니다.



최근의 관심사, NestJS와 Angular

스크린샷 2025-02-27 오후 5.33.59.png

현재 저는 NestJS를 백엔드로, Angular를 프론트엔드로 사용하는 프로젝트를 진행하고 있습니다. 이 두 프레임워크는 특히 Node.js 생태계에서 최근 관심이 높아지고 있으며, 모던 웹 개발을 지원하는 다양한 강력한 기능을 제공합니다. Angular는 컴포넌트 기반 아키텍처를 제공하여 프로젝트 구조화를 용이하게 하며, NestJS는 Angular와 유사한 모듈화된 구조 덕분에 유지보수가 용이한 서버 사이드 프레임워크입니다. Spring Boot 프레임워크와 상당히 유사한 점을 가지고 있어, Spring 생태계의 구현 사례들을 쉽게 참고하거나 적용할 수 있는 장점이 있습니다. NestJS와 Angular는 TypeScript라는 프로그래밍 언어의 통일성 덕분에 풀스택 개발에 접근할 때 러닝 커브를 줄일 수 있는 것이 큰 장점이라고 생각합니다. 일관된 개발 경험을 제공하고 있어 최근 꾸준히 익숙해지기 위해 다뤄보고 있는 프레임워크입니다.


Java 기반의 Spring을 접해본 경험 덕분에 기본적인 부분은 빠르게 적응하고 있는 것 같습니다. 물론 JavaScript 언어와의 근본적인 가치관 차이가 있지만, 객체 지향 프로그래밍을 위한 전반적인 프로젝트 구조화와 타입 안정성을 추구하는 TypeScript를 적극 활용하고 있어 충분히 접해볼 만한 프레임워크로 즐겁게 공부하고 있습니다.

작가의 이전글새로운 시작