본문 바로가기
Back-end/기초부터 따라하는 nest.js

시즌 2 #0. 기초부터 따라하는 Nest.js 2 : Orientation

by hsloth 2024. 4. 8.

 

조금 더 디테일하게 따라할 수 있는 Nest.js 튜토리얼 시리즈를 제작해보고자 "기초부터 따라하는 Nest.js 2"를 제작하게 되었습니다.

먼저, 사전 준비를 간단하게 해주셔야 할텐데요. 다음 글들을 참고하시면서 준비를 해주시면 될 것 같습니다.

 

사전 준비

  • vscode, node.js(LTS 버전), postman 설치, mysql, mysql workbench
  • Javascript 문법 - class, forEach/map/reduce, 문자열 백틱, 콜백 함수, 화살표 함수

https://suloth.tistory.com/43

 

#0. 기초부터 따라하는 Nest.js : 이 글의 취지 & 시작 전 준비할 것들

먼저, 이 글의 목적은 학교 동아리 내에 멘토링을 위함과 동시에 nest.js 입문자분들을 위해 저의 방식대로 nest.js를 이용하는 방법을 소개, 알려드리기 위한 글입니다. 목표 : 비전공자, javascript에

suloth.tistory.com


기본적으로 알아야 하는 명령어를 모른다면?

https://suloth.tistory.com/44?category=1096080

 

#0-1. 기초부터 따라하는 nest.js : 터미널 키는 법 + 터미널에서 작업 폴더 이동

윈도우 윈도우는 윈도우+R 버튼을 누른 후, cmd 를 입력하여 터미널을 킵니다. 혹은 윈도우 버튼을 눌러서 검색창에 cmd를 검색하면 터미널이 나올텐데 그걸 실행시켜주시면 됩니다. Mac OS Mac의 경

suloth.tistory.com


git과 github 사용법을 모른다면?

https://suloth.tistory.com/44?category=1096080

 

#0-1. 기초부터 따라하는 nest.js : 터미널 키는 법 + 터미널에서 작업 폴더 이동

윈도우 윈도우는 윈도우+R 버튼을 누른 후, cmd 를 입력하여 터미널을 킵니다. 혹은 윈도우 버튼을 눌러서 검색창에 cmd를 검색하면 터미널이 나올텐데 그걸 실행시켜주시면 됩니다. Mac OS Mac의 경

suloth.tistory.com

 

조금 더 깊은 부분(Docker, CI/CD 등)은 추후, "기초부터 따라하는 Nest.js 심화편"에서 작성할 예정입니다. (언제가 될 진 모르겠지만요...)

 

글이 길어서 읽기 힘드신 분들은 빨간 글씨 위주로 봐주세요!!!

 

먼저, 이 글을 읽으시려는 분들에게 질문이 있습니다.

서버란 뭘까요?

게임을 하다가 게임이 원활하지 않을 때, 수강 신청을 하기위해 학교 수강신청 사이트에 들어갈 때  "아 서버 왜이래~" 라고 해본 경험이 있으실 겁니다.

여기서 이야기하는 서버는 무엇일까요?

서버는 직역하면 "서비스를 제공하는 사람"이라는 뜻입니다.

하지만 이 개념을 컴퓨터로 가져오면, "서비스를 제공하는 컴퓨터"라고 할 수 있습니다.

 

지금 여러분들이 이 글을 읽기위해 사용하는 컴퓨터도 얼마든지 서버가 될 수 있습니다.

다른 사람들이 인터넷을 통해서 여러분들의 컴퓨터를 이용할 수 있도록 컴퓨터를 열어두면, 여러분의 컴퓨터가 서버가 되는 것입니다!

다른 사람들이 나의 컴퓨터를 이용할 수 있도록 하는 이 행위를 "서버를 연다"라고 표현을 합니다.

그리고 저희가 프로그래밍(일명 코딩)을 해서 서버를 열 수 있는 것이죠!

 

또한 서버에서는 "서비스를 제공하는 컴퓨터"라는 말답게, 미리 사용자들을 위한 서비스를 준비해놔야합니다.

제공하는 서비스 또한 프로그래밍(코딩)을 통해서 제공할 수 있습니다!

 

 

클라이언트

서비스를 제공하는 사람이 있으면, 서비스를 받는 사람도 있겠죠.

서비스를 받는 사람을 클라이언트라고 합니다.

컴퓨터도 마찬가지로 서비스를 이용하는 컴퓨터를 클라이언트라고 합니다!

쉽게 말하면 지금 당장 우리 방안에 있는 컴퓨터를 클라이언트라고 부를 수 있습니다.

실제로 우리는 컴퓨터를 통해 게임도 하고, 검색도 하고, 쇼핑도 할 수 있습니다.

게임, 검색, 쇼핑을 서비스라고 부를 수 있고, 실제로 우리는 저런 서비스들을 서비스를 제공하는 회사의 컴퓨터를 통해 제공받는 것입니다. (조금 간단하게 이야기했습니다... ㅎㅎ)

 

 

서버와 클라이언트는 결국 둘 다 컴퓨터입니다!

즉, 사람이 서버와 클라이언트라는 역할을 가질 수 있듯이, 컴퓨터에게 서버와 클라이언트라는 역할을 부여했을 뿐입니다.

이 컴퓨터는 서비스를 제공하니까 서버~ 저 컴퓨터는 서비스를 받으니까 클라이언트~ 이런 개념입니다.

"내가" 손님도 될 수 있고 서버도 될 수 있듯이, "컴퓨터"도 클라이언트가 될 수 있고 서버도 될 수 있습니다.

 

 

다 좋은데... 서비스가 뭐야? 다른 사람들이 내 컴퓨터를 이용한다는 것에 대한 개념을 잘 모르겠어

라고 생각하시는 분들도 계실 것 같아서 간단히 짚고 넘어가겠습니다.

현실 세계에서 서비스를 뭐라고 부르나요? 명확하게 모르겠죠? 그냥 우리가 어딘가 가서 받는 모든 것을 서비스라고 하죠?

카페에 가서 커피를 마신다. 식당에 가서 밥을 먹는다. 놀이공원에가서 놀이기구를 탄다. 편의점에서 물건을 구입한다. 버스를 탄다. 등등 일상생활의 모든 것들을 서비스라고 부를 수 있습니다.

 

컴퓨터도 마찬가지 입니다. 컴퓨터로 할 수 있는 모든 것들을 서비스라고 부를 수 있습니다.

문서를 작성한다. 게임을 한다. 파일을 작성한다. 파일을 저장한다. 파일을 수정한다. 파일을 삭제한다. 화상 회의를 한다. 등등 이런 모든 것들을 서비스라고 부를 수 있습니다.

 

따라서 다른 사람이 내 컴퓨터를 이용한다는 것은, 다른 사람들이 내 컴퓨터로 무언가를 한다는 것을 말합니다.

예를 들자면, 마인크래프트나 스타크래프트 등의 게임을 하면서 LAN으로 연결을 해서 게임을 같이 play한다던가, 방을 판다던가 하는 행위는 모두 자신의 컴퓨터를 서버로 사용하는 행위입니다. 왜냐고요? 내가 방을 파준 덕분에 친구들이 게임을 할 수 있잖아요? 그러면 나는 친구들에게 게임을 할 수 있도록 방을 파준 "서비스"를 제공한게 됩니다.

 

게임을 안해보신 분들은 이해하기 힘드실 수 있지만, 대충 상대방이 내 컴퓨터로 접속을 해서 내 컴퓨터로 무언가를 한다면 그건 모두 서비스가 되는 것이죠. 그리고 내 컴퓨터는 서버가, 상대방의 컴퓨터는 클라이언트가 되는 것이구요.

 

아래는 컴퓨터끼리 서비스를 어떻게 주고받는지를 나타낸 그림입니다.

 

실제로도 이렇습니다. 어떻게 "야 서비스 내놔"를 하는지, "알았어 줄게..."가 일어나는지는 모르셔도됩니다. 기본적으로 "손님이 요청을 해야 서비스가 제공된다"는 원리만 기억하고 있으면 도움이 될겁니다. 

"야 서비스 내놔"를 하는 방법은 1장에서 다루도록 하겠습니다.

 

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

 

 

아참, 커리큘럼 이야기를 안했네요. 제가 생각하고 있는 커리큘럼은 다음과 같습니다.

0주차 - OT

  • 서버에 대한 기초적인 지식
  • 서버 개발, Nest.js 개발을 위해 기본적으로 세팅해와야할 것들에 대해
  • 앞으로의 커리큘럼 소개

1주차 - Express.js 소개 & DB 설계 기초

  • HTTP Method
  • Express.js와 바닐라 자바스크립트로 간단한 백엔드 서버 구축하기
  • MySQL을 이용한 커뮤니티 서비스 Database 설계
  • Express.js와 DB 연동

2주차 - Nest.js & ORM 소개

  • Nest.js의 기본 구조와 구성 요소들에 대한 소개
  • Nest.js 초기 세팅법과 컨벤션, 폴더 구조
  • Nest.js의 기본 구성 요소들에 대한 이해 (Interceptor 등)
  • ORM 이란?
  • Prisma 소개
  • TypeORM vs Prisma
  • Prisma로 DB 스키마 구현하기
  • Nest.js에 Prisma 세팅해보기

3주차 - Nest.js로 간단한 구현 & AWS에 서버 배포 하기

  • 간단한 CRUD 구현
  • Dto 구현
  • Swagger 구현
  • AWS RDS를 이용한 DB 설정
  • AWS EC2를 통한 서버 배포

4주차~6주차 - 간단한 토이 프로젝트 진행 (3주)

  • 주제 : Todo List (확정 아닙니다)
  • 도메인을 이용한 서버 배포 (AWS EC2, Route53, RDS 활용 예정)

 

위 커리큘럼은 멘토링을 가정하고 만든 커리큘럼이기 때문에 본 강의와는 맞지 않을 수 있습니다.

 

그러면, 다음 시간에 만나요~