Node.js 서버를 왜 사용해야 하나요?

boyeonJ·2023년 7월 7일
0

FRONT

목록 보기
6/14

Node.js 서버를 왜 사용해야 하나요?

라는 질문을 받고 뭐라고 대답해야 할지.. 생각해보는 시간을 가져보자!


Node.js란?

Node.js는 JavaScript를 서버 측에서 실행할 수 있도록 하는 런타임 환경입니다.

1. 단일 언어

웹 브라우저에서 JavaScript가 실행되는 것과는 다르게, Node.js는 서버 사이드에서 JavaScript를 실행하고 네트워크 요청, 파일 시스템 액세스, 데이터베이스 연결 등 다양한 서버 측 작업을 수행할 수 있습니다. 이로 인하여 Node.js를 사용하면 웹 애플리케이션의 전체 스택을 JavaScript로 작성할 수 있습니다. 클라이언트 측 코드와 서버 측 코드동일한 언어로 작성할 수 있어 개발 생산성을 높여줍니다. 또한, 코드를 공유하고 재사용하기 쉬워집니다.

const mysql = require('mysql2');

// 데이터베이스 연결 설정
const connection = mysql.createConnection({
  host: 'localhost',
  user: 'username',
  password: 'password',
  database: 'database_name'
});

// 데이터베이스 쿼리 실행
connection.query('SELECT * FROM users', (error, results, fields) => {
  if (error) throw error;
  console.log(results);
});

// 연결 종료
connection.end();

2. 생태계와 패키지 관리

npm(Node Package Manager)을 통해 많은 패키지와 모듈을 사용할 수 있는 확장성 있는 생태계를 가지고 있습니다. npm은 JavaScript 패키지를 쉽게 설치, 관리, 공유할 수 있는 강력한 도구입니다. 이를 통해 개발자들은 수많은 오픈 소스 모듈을 활용하여 개발 속도를 높일 수 있습니다.


그럼 Node.js전에는 데이터베이스 연결(서버측 코드)을 어떻게 수행했나요?

node.js 이전에는 PHP, Java, Ruby, Python과 같은 서버 측 언어와 프레임워크를 사용하여 각각 자체적인 방식으로 데이터베이스 연결을 다루었고, 해당 언어 및 프레임워크에 따라 데이터베이스 연결 설정, 쿼리 실행, 결과 처리 등에 사용되는 API 및 라이브러리가 다를 수 있습니다.

python

from flask import Flask
from flask_mysqldb import MySQL

app = Flask(__name__)

# 데이터베이스 연결 설정
app.config['MYSQL_HOST'] = 'localhost'
app.config['MYSQL_USER'] = 'username'
app.config['MYSQL_PASSWORD'] = 'password'
app.config['MYSQL_DB'] = 'database_name'

mysql = MySQL(app)

# 데이터베이스 쿼리 실행
@app.route('/')
def index():
  cur = mysql.connection.cursor()
  cur.execute('SELECT * FROM users')
  results = cur.fetchall()
  cur.close()
  return str(results)

if __name__ == '__main__':
  app.run()

ruby

# 데이터베이스 연결 설정
client = Mysql2::Client.new(
  host: 'localhost',
  username: 'username',
  password: 'password',
  database: 'database_name'
)

# 데이터베이스 쿼리 실행
results = client.query('SELECT * FROM users')
results.each do |row|
  puts row
end

# 연결 종료
client.close

java

import java.sql.*;

public class DatabaseExample {
    public static void main(String[] args) {
        String jdbcUrl = "jdbc:mysql://localhost:3306/mydatabase";
        String username = "your-username";
        String password = "your-password";

        try {
            // 데이터베이스 연결 설정
            Connection connection = DriverManager.getConnection(jdbcUrl, username, password);

            // 쿼리 실행
            String sql = "SELECT * FROM users";
            Statement statement = connection.createStatement();
            ResultSet resultSet = statement.executeQuery(sql);

            // 결과 처리
            while (resultSet.next()) {
                int id = resultSet.getInt("id");
                String name = resultSet.getString("name");
                System.out.println("User: " + id + ", " + name);
            }

            // 연결 종료
            resultSet.close();
            statement.close();
            connection.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}

이렇게 다양한 언어로 작성하면 통일성이 없음.. node는 모두 javascript로만 작성가능해서 개발 생산성을 높여줌


또한, node.js 아래와 같은 특징이 있습니다.

  • 이벤트 기반, 논 블로킹 I/O 모델 (<-> 멀티 쓰레드, 블로킹 I/O 모델
  • 싱글 쓰레드
    ...

0개의 댓글