반응형

Wiki에서는 Node.js를 어떻게 설명하고 있을까 ❓❓

| Node.js는 크로스플랫폼 오픈소스 자바스크립트 런타임 환경으로 윈도우, 리눅스, macOS 등을 지원한다. Node.js는 V8 자바스크립트 엔진으로 구동되며, 웹 브라우저 바깥에서 자바스크립트 코드를 실행할 수 있다.[3]

주로 확장성 있는 네트워크 애플리케이션과 서버 사이드 개발에 사용되는 소프트웨어 플랫폼이며, 논블로킹(Non-blocking) I/O와 단일 스레드 이벤트 루프를 통한 높은 처리 성능을 가지고 있다.

내장 HTTP 서버 라이브러리를 포함하고 있어 웹 서버에서 아파치 등의 별도의 소프트웨어 없이 동작하는 것이 가능하며, 이를 통해 웹 서버의 동작에 있어 더 많은 통제를 가능케 한다.

- 크로스 플랫폼(Cross-Platform)

장점:

  • PC환경에서는 Window와 Mac / 모바일 환경에서는 Android와 IOS 운영체제에 모두 동작 가능하다는 의미이다.
  • 최근 들어서는 크로스 플랫폼 프로그램을 통해 하나의 코드로 다수의 운영체제에서 동작되게 하는 개발 방식이 인기를 끌고 있다.
  • 당연히 생산성이 올라간다.

단점:

  • 기존 운영체제 네이티브의 플랫폼보다는 최적화되어있지 않기에 성능적인 이슈가 있을 수 있다.
  • 그러나 이러한 문제도 최근 여러 업데이트를 통해 보완되고 있으며, 실리콘 밸리의 굴지의 기업들도 이러한 크로스 플랫폼 서비스를 운영하고 있다.


- 서버 사이드 개발(Server-Side Development)

  • 서버의 리소스를 사용하여 운영되는 서비스를 개발하는 것을 의미한다.
  • 반대로 클라이언트 사이드 개발이 있다.


- 논블로킹(Non-blocking) I/O

  • 오류가 발생하기 전까지는 인입되는 Inpus request를 계속 받아준다.
  • 비동기 I/O 와 다른 점은 비동기 I/O는 응답을 받아주지만, 논블로킹 I/O는 응답값을 받아주지 않는다.


- 단일 스레드(Single thread)

  • 단일 스레드는 한번에 하나의 동작만 처리할 수 있다는 의미이다.
  • 그러나 하나의 한번의 동작을 비동기적으로 처리하기 때문에, 사용자 입장에서는 속도나 성능에 대한 이슈를 인지할 수 없다.
  • 단일 스레드에서 하나의 함수를 호출하면, 이벤트 루프가 여러개의 이벤트를 처리한다.


- 이벤트 루프(Event loop)

  • 단일 스레드를 지원하는 javascript 프로그램을 다중 스레드(PC)에서 동작시키기 위한 객체이다.
  • 이벤트 루프는 javascript 프로그램에서 실행된 하나의 함수를 여러개의 다중 스레드가 대기하고 있다가 실행하고, 이후 액션을 진행하는 것을 담당한다.
  • 이벤트 루프와 비동기 방식을 통해, 사용자는 javascript 서비스가 단일 스레드여서 느리다고 생각할 수 없게 된다.(실제로도 느리지 않다😲)



누가 만들었을까? 💁🏻

🥇 2009년에 ‘라이언 달’이라는 사람이 만들었다.

🥈 Joyent 라는 회사에서 일하는 사람이고, 현재도 Joyent에서 개발 및 운영 중이다.

🥉 파일 상태를 서버에 쿼리를 통해 확인하는 것을 보고 조금 더 쉬운 방법을 찾다가 고안해 내었다고 한다.

  • TMI. Joyent는 2016년 삼성전자에 인수되었다.



+ Node.js를 사용하는 기업 Top 3 🌟

아래 언급된 회사 외에도 거의 모든 회사에서 Node.js를 사용하고 있다.

  • Facebook
  • Amazon
  • Google

마이크로서비스 아키텍쳐 시대가 오면서 다양한 서비스 API들이 제공될 수 밖에 없고,

대부분의 회사는 이런 환경에서 Node.js를 사용하고 있다.



맺는말

Node.js는 개발을 하는 사람들이라면, Front, Backend 상관 없이 한번쯤은 모두 들어봤을만한 이름이다.
처음 라이언 달이라는 한 개인의 심플한 고민이 시작이 되어,
이제는 모두에게 생산성과 편의성을 가져다 준 프로그램이 되었다.
이처럼 우리의 작은 고민 하나가 어쩌면 많은 사람들에게 영향력을 줄 수 있을 것이다.

 

반응형
반응형

안녕하세요 

개발자 헨리입니다.

 

제가 요즘에 프로그래머스에서 진행하는 

Node.js 백엔드 개발 스터디를 참여하며

백엔드에 대해서 공부하고 있습니다.

 

강의를 듣게 된 이유는

저의 최종 목적지는 빅데이터 엔지니어인데,

그곳을 가기 위해, 백엔드는 필연적인 과정이라고 생각이 들었습니다.

회사에서는 Python을 이용한 Fastapi 서버

집에서는 배달의 민족 김영한님의 스프링 완전정복 커리큘럼을 공부하고 있는데,

 

공부라는게 혼자서 하는것보다 여럿이서 같이 하는게 

훨씬 더 재밌고 제가 추구하는 방향과 같아서

앞으로 좋은 스터디들을 찾아서 하려고 합니다.

 

"실무와 가까워지는 Node.js 백엔드 개발(feat,TypeScript)"

 

 

 

# 스터디를 시작하기 전에

3가지 준비물이 필요합니다.

 

- 소통하기 위한 슬랙

- 스켈레톤 코드가 담긴 깃 레파지토리 클론하기

- 매주 목요일 온라인 스터디를 위한 줌 설치

 

 

# 1주차 스터디를 통해서 배운 점

1. 데이터베이스 설계를 먼저 해라

프로젝트를 시작할 때, 우선 데이터베이스 설계를 하는 것이 중요하다.

왜냐하면, 결국 데이터의 형태와 타입에 따라서 프로그램이 설계되기 때문이다.

스터디 리더이신 배달의민족 "송요창" 리더님도 이번 스터디를 통해서

프로젝트에 따른 데이터베이스 선택 방법을 잘 익혔으면 좋겠다고 말씀하셨다.

 

2. 인증과 인가

예전에 면접을 보려던 어떤 스타트업에서 이런 질문을 받았던 적이 있다.

 

"지금 회사에서 Fastapi를 사용해서 API 서버를 운영하고 계시다고 하셨는데,

인증은 어떻게 하고 계세요?"

 

그때 인증에 대해서 제대로 알지 못하고 있었기 때문에, 

답변을 하지 못했다.

 

그런데 이번에 인증과 인가 개념에 대해서 제대로 배울 수 있어 좋았다.

 

인증이란, 너가 누구인지 궁금해 하는 것이고,

인가란, 너가 누군지는 알겠는데, 권한이 있느냐 는 것이다.

 

이번 수업을 통해서 배울 수 있었다.

 

3. 타입스크립트와 자바스크립트의 차이

송요창 리더님께서 타입스크립트와 자바스크립트의 차이에 대해서 명확하게 설명해주셨다.

자바스크립트는, 자료타입이 제대로 명시가 되어 있지 않은 프로그래밍 언어이기 때문에,

이 경우에 타입 처리를 해줄때, 에러를 에러로 보지 않아서, 실제 운영환경에서 많은 에러가 발생한다.

그래서 타입스크립트가 나오게 되었다. 그 결과 기존 프로젝트 개발 테스트 환경에서 80% 에러가 소멸하게 되었다.

타입스크립트는, 자바스크립트와 문법적으로 배우 유사하지만, 각 변수들의 타입들을 명시해주는 것이

특징인 언어이다.

 

# 리더님이 계신 배달의 민족에서도 타입스크립트는 사용하고 계시고,

계속적으로 인기가 많아지고 있다.

 

타입스크립트 관심도 변화

 

4. 파이어베이스의 파이어스토어

파이어베이스는 예전에 개인적으로 채팅 프로젝트를 만들 때, 혼자서 데이터 저장소로 사용했었다.

이번 프로젝트에서는 파이어스토어를 사용해서 진행한다고 한다.

파이어스토어는 JSON 포맷 형식처럼 작성이 가능하다. 자바스크립트만으로 데이터베이스 활용이 가능하고, GUI로 편집이 가능하다. 또한 작은 규모에서는 무료라는 점도 좋은 것 같다.

클라우드 파이어스토어

 

 

# 1주차 다짐

최종적으로 이번에 만들 프로젝트는

커피 주문 프로젝트이다.

 

물론 기존에 스켈레톤 코드를 주시긴 하지만, 그래도 기대가 된다.

 

프로젝트 초기 구동 화면

 

반응형

+ Recent posts