[Project] 42 Kanbanboard - Start

오준석·2022년 5월 4일
0

목차

  1. 들어가며
  2. 프로젝트 계획
    2-1. Phase1
    2-2. Phase2
    2-3. Phase3
  3. TIL

들어가며

42 Seoul에서 과제와 알고리즘, 블록체인 등 여러가지 공부를 하고 있는 중에 Piscine 동기인 Mingkim님이 javascript를 배워보려 한다며 혹시 프로젝트에 관심이 있는지 물어봐주셨다.
물론 과제나 스터디도 재미있었지만 평소에 프로젝트를 하나 해보고 싶다는 생각을 하고 있었기 때문에 당연히 OK! Mingkim님이 벌써 어느정도 구상해놓은 부분이 있어서 바로 시작하기로 했다. 아마 많이 다뤄보지 않은 프레임워크와 언어이기 떄문에 프로젝트의 규모는 크지 않겠지만 이번 경험을 통해서 많은 것을 배울 수 있을거라 생각한다. (협업 능력, 개발 역량 등)

프로젝트 계획

Phase1

  • todo list page 만들기
  • node.js로 API server 만들기
  • API server와 mongoDB 연결

Phase2

  • 회원가입 및 로그인 기능 만들기

Phase3

  • DB 비동기 처리하기

일단 프로젝트의 큰 틀은 다음과 위와 같이 러프하게 짠 상태이다. 계속해서 스케일 업 & 아웃을 해가며 프로젝트를 진행할 예정이다.

TIL

node.js란?

이전에 node.js에 대해 알고 있기로는 javascript로 웹서버를 만드는 프레임워크 정도로만 알고 있었다. 하지만 예시를 보면서 내가 알고 있던 것과 다르다는 점을 알게 됐다. 대부분의 예시에서 express라는 것을 사용하고 이것을 검색해 본 결과, express가 웹 프레임워크라는 것을 알게 됐다. 그렇다면 node.js는 무엇일까?
node.js는 javascript의 런타임으로 javascript를 웹 브라우저에서 독립시킨 크로스 플랫폼이다. 즉, 브라우저가 없더라도 node.js만 설치되어 있다면 javascript로 다양한 플랫폼에서 프로그래밍이 가능하다.

런타임? - 특정 언어로 만든 프로그램을 실행할 수 있는 환경을 뜻한다. 쉽게 이해하기로는 Java의 JVM과 같은 일을 하는게 아닌가라는 생각이 든다.

node.js의 특징

  • Event 기반
    • Event가 발생할 때 미리 지정해둔 작업을 수행하는 방식을 의미.
  • Event loop
    • event loop는 여러 이벤트가 동시에 발생했을 때 어떤 순서로 callback을 호출할지 판단한다.
    • node는 event가 종료될 때까지 처리를 반복하므로 loop라한다.
  • Non-Blocking I/O & Single Thread
    • node는 single thread이기는 하지만 non-blocking 모델이기 때문에 이전 작업이 완료될 때까지 기다리지 않고 다음 작업을 계속한다. (event 기반)

express

위에서 언급했지만 express는 node.js의 웹프레임워크이다.

  • express.json()

NoSQL

특징

  • 관계형 모델을 사용하지 않으며 테이블간의 조인 기능 없음
  • 직접 프로그래밍을 하는 등의 비SQL 인터페이스를 통한 데이터 액세스
  • 대부분 여러 대의 데이터베이스 서버를 묶어서(클러스터링) 하나의 데이터베이스를 구성
  • 관계형 데이터베이스에서는 지원하는 Data처리 완결성(Transaction ACID 지원) 미보장
  • 데이터의 스키마와 속성들을 다양하게 수용 및 동적 정의
  • 데이터베이스의 중단 없는 서비스와 자동 복구 기능지원
  • 다수가 Open Source로 제공
  • 확장성, 가용성, 높은 성능

장점

  • NoSQL은 스키마가 없기 때문에 유연하며 자유로운 데이터 구조를 가질 수 있다. 언제든 저장된 데이터를 조정하고 새로운 필드를 추가할 수 있음
  • 데이터의 분산이 용이하며 성능 향상을 위한 scale-up & scale-out이 가능함

단점

  • 데이터 중복이 발생할 수 있기 때문에 중복된 데이터가 변경될 경우 처리에 어려움이 있다.
  • 스키마가 존재하지 않기 때문에 명확한 데이터 구조를 보장하지 않으며 데이터 구조 결정이 어려움

위에서 살펴 본 것처럼 NoSQL의 특징으로 인한 장단점이 생기게 되고 이를 목적에 맞게 사용해야한다.

profile
오늘만 사는 개발자

0개의 댓글