Node.js 특강 - 손영수 멘토 (2)

MongoDB

  • 클라우드 서비스를 SaaS로 제공하려다가 그 중 DB 서비스가 제일 잘 나가서 MongoDB가 됨
  • No Schema: JSON data 삽입 시 field가 생성됨
  • Document data model
    • JSON data를 그대로 넣음
    • 성능 issue 때문에 BSON 형태(JSON의 binary 형태)로 저장됨
  • Table join: linking을 이용
  • Not null 개념이 없음. 구조가 정해져있지 않음
  • 스타트업에서 많이 사용
    • Master DB가 죽었을 때 slaves 중 하나를 master로 승격시켜야 하는데, 어느 놈이 master와 데이터가 가장 유사한 놈인지(승격시킬지)를 자동으로 결정해 줌
    • Mongos를 통한 auto-sharing 가능 (직접 짤 필요 X)
    • 실무에서 빠르게 결과를 보기 위해 많이 사용함
    • Insert 속도가 3배 빨라(단, 읽는 속도는 2배 느림) 현업에서는 로그 저장에 많이 사용함
  • 단점
    • MySQL이 JSON 데이터 지원을 시작
    • GPL license
      • 소스코드를 건드리거나
      • 고객사에 MySQL을 설치해줘야 할 경우, 라이센스 이슈가 발생해 돈을 지불해야 함 (Oracle은 악의 축.. 돈 독이 오름)

RoboMongo

Robomongo

  • MongoDB의 workbench 같은 것
  • query를 날리는 툴

NeDB

NeDB

  • 가벼운 MongoDB (MongoDB API와 비슷함)
  • Document DB
  • Javascript로 쓰여짐
  • 설치가 간단함

Nginx

  • iOS — (https) -> Nginx — (http) -> server
  • Load balancer, route proxy
  • 안정성

Express

  • 업계에서 가장 많이 쓰는 웹 프레임워크
  • 오랜 역사로 많은 레퍼런스와 가이드가 존재 (검증됨!)
    • Flutter의 경우 안정성이나 자료 면에서 부족해 네이버에서 도입하지 않기로 함

Reddis

  • 꼭 공부해볼 것을 추천
    • 강대명 멘토님 Reddis 천재 (판교 연예인)
  • RDBMS나 MongoDB의 단점을 보완
  • 얘도 master, slave 관계로 저장됨

요즘은 프론트엔드 엔지니어가 귀하다

  • 너무 빨리 바뀜
  • AngularJS -> React -> Vue.js …

업계에서 가장 많이 쓰는 차트

  • Highcharts
    • 굉장한 안정성 보장
    • 전세계에서 많은 유저가 사용
  • amCharts
    • 전세계 geographical 지도를 많이 보유

Production level

  1. Error handling
    • try - catch
    • uncaughtException
    • domain (deprecated) -> zone.js
    • forever/pm2
  2. Multi process
  3. Callback hell
  4. Logging
    • Winston
  5. Unit test

Sentry

[Sentry Error Tracking Software — JavaScript, Python, PHP, Ruby, more](https://sentry.io)
  • error handling 스택 정보를 웹사이트에 모아줌
  • 5천(5만?)개까지는 공짜, 이후로는 돈 내야 보여줌
  • 지원되는 언어가 많음
  • raygun.io 도 사용됨
  • 빵가루를 남길 수 있음
    • 사용자가 어떤 경로로 들어왔다가 에러가 생겼는지 추적됨

PM2

GitHub - Unitech/pm2: Node.js Production Process Manager with a built-in Load Balancer.

  • 서버가 죽어도 영원히 다시 살려줌
  • 업계에서 다 PM2 쓴다
  • Node.js뿐만 아니라 파이썬과도 호환됨
  • pm2 start app.js로 앱 실행
  • CPU 갯수만큼 띄우려면 pm2 start app.js -i max
  • pm2 list
  • pm2 monit
  • pm2 monitor: 성능 대시보드 제공 (14일까지 무료)
  • 다양한 명령어 옵션들

Winston

GitHub - winstonjs/winston: A logger for just about everything.

  • Node.js와 주로 사용되는 logging library
  • appender => rolling
  • 로그를 다양한 형태로 저장 / 전송 가능
  • 최대 저장 용량, 최대 저장 기간을 설정할 수 있음
  • 여러분은 더 이상 console.log로 로그 찍으시면 안 돼요
    • console도 찍고 파일도 … 해서 개발해야 해요

TDD vs. BDD

  • TDD
    • 코드 단위로 유닛 테스트
    • 구조가 너무 많이 바뀌는 경우에는 적합하지 않음
      • 프론트엔드에는 맞지 않음 - 버그를 빨리 발견하려면 프론트엔드 테스트
  • BDD
    • 시나리오 단위
  • Mocha
    • 이 두 가지 유닛테스트 방법을 모두 지원
    • 가장 기본적인 Javascript 테스트 프레임워크

SuperTest와 Swagger, JMeter

  • RESTful API를 테스트하는 모듈
  • super_test.js · GitHub
  • 권장하지 않음. 일일히 API 테스트하지 마라.
  • Express에 Swagger를 붙이면 API document가 자동으로 생성됨
    • 생성된 document를 공유 가능
    • 엑셀 말고 Swagger써라!!
    • JMeter에 import가 가능한 형태로 뽑아낼 수 있다 -> 부하 테스트 가능!
      • JMeter 사용법에 대해 제대로 정리된 책이 없다. 이 자료를 참고~

ElasticAPM

elastic

  • 다양한 언어를 지원
  • 연동하고 서버 설치하면 프로파일링을 통해 성능 측정 가능 (품질 확보)
  • URL 실행에 걸리는 시간과 빈도 수를 함께 고려하여 어느 것부터 튜닝할 것인지를 결정해야 함 (전체 시간이 큰 것부터!)
  • peak time도 고려
  • 돈으로 제품을 살 거냐 vs. ElasticAPM을 사용할 거냐 (돈이 없는 우리)

2019

Redis 기초 특강 - 강대명 멘토

1 minute read

Redis 소개 In-memory data structure storage disk 접근을 하지 않음 -> 속도가 빠르다 오픈소스(BSD 3) 제공되는 자료구조들 Strings, set, sorted-set, ...

Node.js 특강 - 손영수 멘토 (2)

2 minute read

MongoDB 클라우드 서비스를 SaaS로 제공하려다가 그 중 DB 서비스가 제일 잘 나가서 MongoDB가 됨 No Schema: JSON data 삽입 시 field가 생성됨 Document data model JSON data를 그대로 넣음 ...

Node.js 특강 - 손영수 멘토 (1)

2 minute read

웹 서버의 구동 방식에는 8가지가 있음(3페이지) Node.js는 비동기, non-blocking Server side Javascript Event driven Asynchronous Non-Blocking I/O ...

TensorFlow.js: Speech Command Recognizer (번역)

less than 1 minute read

TensorFlow.js의 공식 모델 중 하나인 Speech command recognition에 대해 조사해 보았습니다. 원문 링크: tfjs-models/speech-commands at master · tensorflow/tfjs-models · GitHub

Chapter 04. HTML & CSS 필수 기초 (2)

2 minute read

이 포스트는 SW마에스트로 자기주도학습으로 패스트캠퍼스의 웹 프론트엔드 올인원 패키지 Online을 수강하면서 작성한 노트입니다.

Chapter 04. HTML & CSS 필수 기초 (1)

1 minute read

이 포스트는 SW마에스트로 자기주도학습으로 패스트캠퍼스의 웹 프론트엔드 올인원 패키지 Online을 수강하면서 작성한 노트입니다.

Chapter 03. CSS 입문

1 minute read

이 포스트는 SW마에스트로 자기주도학습으로 패스트캠퍼스의 웹 프론트엔드 올인원 패키지 Online을 수강하면서 작성한 노트입니다.

CC 라이센스

less than 1 minute read

소프트웨어 마에스트로 과정에서 아기 울음소리를 인식하고 분류하는 딥러닝 모델을 작성하고 있습니다. GitHub에 공개되어 있는 소리 데이터셋을 사용하기 위해 확인한 라이센스 몇 가지를 정리해 보았습니다. 참고한 곳: CC 라이선스 :: Creative Commons K...

URI와 URL의 차이점

less than 1 minute read

이 포스트는 What Is The Difference Between A URI And A URL? - DEV Community 👩‍💻👨‍💻 를 참고하여 작성되었습니다.

Chapter 02. HTML 입문

1 minute read

이 포스트는 SW마에스트로 자기주도학습으로 패스트캠퍼스의 웹 프론트엔드 올인원 패키지 Online을 수강하면서 작성한 노트입니다.

블로그 개설

less than 1 minute read

Github 블로그를 드디어 개설했습니다.🎉

Back to Top ↑