거북목개발자
[프로그래머스 스터디/5기]실무와 가까워지는 Node.js 백엔드 개발 - 1주차 본문
[프로그래머스 스터디/5기]실무와 가까워지는 Node.js 백엔드 개발 - 1주차
거북목개발자 2022. 6. 12. 00:14이번 주차에 배운 내용
- 서비스 요구사항 분석
- 데이터베이스 설계 (관계형 데이터베이스, 비관계형 데이터베이스)
- Firebase
- JavaScript와 TypeScript
- 서버와 HTTP
- Express.js와 Next.js
- Routing
- 이번주 미션
- WIL : Week I learned
서비스 요구사항 분석 및 데이터 베이스 설계
서비스 기획시 전체적인 프로젝트 구조를 파악하고 최소 요구사항을 생각해보자.
이후 표로 데이터를 저장해보고 데이터가 저장된 표를 뜯어 고치며 DB를 설계해보자.
관계형 데이터베이스 (SQL)
관계형 데이터베이스(RDB)는 정형화되어 있어서 사람이 이해하기 편하고 사용한지 오래 돼 유지 보수 툴이 많다.
원하는 정보를 쉽게 얻을 수 있도록 SQL 구문도 활용할 수 있다.
또한, 사이즈가 커지는 경우 NoSQL에서 관계형 데이터 베이스로 바꾸는 경우가 많다.
비관계형 데이터베이스 (NoSQL)
관계형 데이터베이스에 비해 구조 정의가 덜 빡빡하며 Key-Value 형태나 JSON 형식으로 데이터를 저장한다.
큰 회사에서 특정 목적을 위해 NoSQL을 사용하기도 한다. Ex) redis:캐시하는 경우 무조건 사용
Firebase (Cloud FireStore)
Firebase의 Cloud FireStore는 Cloud Firestore는 문서와 컬렉션으로 이루어져 있다. 각 문서에는 Key-Value 쌍이 들어 있고, 작은 문서가 많이 모인 컬렉션을 저장하는데 최적화되어 있다. 그래서 NOSQL이지만 SQL 처럼 테이블처럼 관리하기 용이하다. 컬렉션과 문서는 Cloud Firestore에서 암시적으로 생성이 되니 사용자는 그저 path를 지정하고 데이터를 할당하기면 된다.
JSON 포맷으로 작성 가능하며 자바스크립트용 라이브러리외에 Android, IOS에서 활용 가능한 라이브러리도 모두 제공한다. JavaScript만으로 DB를 활용가능하고, 작은 규모는 무료로 사용 가능하다. 또한, 별도의 Admin 없이도 Firebase console에 접속해 GUI로 편집 가능하다.
Firebase의 Realtime Database와 Cloud Firestore의 차이점 - 더보기 클릭
JavaScript와 TypeScript
TypeScript는 JavaScript의 슈퍼셋으로 JavaScript를 모두 포함하고 있고 그외 기능을 제공해준다.
쉽게 말해 TypeScript = JavaScript + α 인 것이다.
TypeScript와 JavaSciprt의 가장 큰 차이는 타입을 지정할 수 있다는 것이다.
덕분에 트랜스파일이 일어나기 전 IDE에서 에러를 확인할 수 있다.
TypeScript는 강타입언어로 런타임 전에 코드에디터에서 타입에 관한 에러 내용 보여줌
서버와 HTTP
서버의 역할은 요청에 대해 응답을 보내주는 것이다.
웹 서비스는 HTTP를 이용해서 요청을 받는다.
HTTP는 Hyper Text Transfer Protocol의 두문자어로, 인터넷에서 데이터를 주고받을 수 있는 프로토콜이다.
프로토콜은 규칙이라고 생각하시면 됩니다. 이렇게 규칙을 정해두었기 때문에, 모든 프로그램이 이 규칙에 맞춰 개발해서 서로 정보를 교환할 수 있게 된 것이죠.
추가설명링크 - 더보기 클릭 !
Express.js
Express.js는 node.js 에서 가장 널리 사용되는 웹 어플리케이션 프레임워크이다.
자바스크립트로 백엔드를 다룰 때 압도적인 사용량을 차지하는게 Express.js이다.
app.get('/', (req, res) => {
res.send('Hello World!')
})
위 코드를 보면 메서드에 해당하는 함수에 첫번째 인자로 path를 넣고, 두번째 인자로 Arrow Fuction을 넣었다.
두번째 인자는 res 매개변수의 send 함수로 Hello World!란 텍스트를 반환하고 있다.
클라이언트로부터 HTTP 요청을 받으면 Express가 이를 해석한 뒤 필요한 코드를 실행한다.
req,res 매개변수는 각각 Request, Response이다.
req는 요청에 관한 사항을 처리하고, res는 응답에 관한 상황을 처리하는데 쓰인다.
각각 http.IncomingMessage와 http.ServerResponse를 추상화해서 사용한다.
따라서 Web API를 만드는 과정은 코드 블럭을 만들어서 라우팅만 연결하면 되는것이다.
Next.js
MIT 라이센스로 제공되는 오픈소스 리엑트 프레임워크지만 Vercel(구 Zeit)이 주축으로 개발하고 유지보수하고 있습니다. 신규 개발이 꾸준히 이뤄진다고 볼 수 없는 익스프레스와 비교해보면 개발도 활발합니다.
Express는 유지보수가 거의 안되서 버려지고 있는 중이라고 볼 수 있다.
특히나 혼자 해야하는 프로젝트에서 백엔드 개발하다가 프론트 개발하러 IDE를 건너다니면 여간 헷갈리는게 아닙니다.
이런 상황에서 React.js로 프론트엔드를 다루고 필요한 몇가지 API를 별도 서버없이 추가할 수 있는 Next.js가 강점을 가집니다.
Routing (Next.js)
Next.js는 페이지 개념을 기반으로 구축된 파일 시스템 기반 라우터가 있다.
Next.js는 pages 폴더에 추가된 파일로 라우트를 자동 생성한다.
pages/api 폴더 외에 위치한 모든 파일은 html 반환한다고 보면 된다.
이번주 미션
단축 URL 서비스 과정을 설계하는 과정을 issue에 남기는 것이 이번주 미션이었다.
아직 백엔드가 익숙하지 않은 나에게 전체 설계 과정을 그리는 것이 쉽지않았다.
자체 서버를 두고 redirect 해주는 방식을 생각했었는데 나랑 비슷하게 생각하시는 분들도 있었다.
어떤 분은 설계서 까지 추가하며 구체적으로 과정을 작성하시는 분도 계셔서 놀랬었던 기억이 있다.
스터디원 중에는 현업자 분들도 계셨는데 현직자 분의 과정도 살펴 볼 수 있어 좋았던 것 같다.
기존 생각에 머물지 않고 더 구체적으로 설계 과정을 확장시킬 수 있었던 기회였던 것 같다.
WIL (Week I Learned)
- thunder client : vscode의 extension으로 postman 대신 API 테스트할 때 사용하기 좋다.
- MSA(MicroService Architecture) : 작고 독립적으로 배포 가능한 각각의 기능을 수행하는 서비스로 구성된 프레임워크
- redirect 추가 설명 링크 - 더보기 클릭
[스터디/5기] 실무와 가까워지는 Node.js 백엔드 개발(feat.TypeScript)
🚀 아쉽지만 5기는 마감되었습니다. 이번 기수 일정이 맞지 않다면 알림 신청을 해주세요. 오픈 알림 신청 실무와 가까워지는 Node.js백엔드 개발 (feat. TypeScript) 비교적 쉬운 기술 스택으로 백엔
programmers.co.kr
'Study > NodeJS CodeReview Study' 카테고리의 다른 글
[프로그래머스 스터디/5기]실무와 가까워지는 Node.js 백엔드 개발 - 4주차 (0) | 2022.06.26 |
---|---|
[프로그래머스 스터디/5기]실무와 가까워지는 Node.js 백엔드 개발 - 3주차 (0) | 2022.06.17 |
[프로그래머스 스터디/5기]실무와 가까워지는 Node.js 백엔드 개발 - 2주차 (0) | 2022.06.12 |
[프로그래머스 스터디/5기]실무와 가까워지는 Node.js 백엔드 개발 - 0주차 (0) | 2022.06.10 |
[프로그래머스 스터디/5기]실무와 가까워지는 Node.js 백엔드 개발 (0) | 2022.06.10 |