본문 바로가기

Studying Programming/Node.js

Node.js - EC6, 프로젝트 구조

4️⃣Chapter4. ES6와 프로젝트 파일 구조의 이해

ES란?

ECMAScript란 ECMA international이라는 국제 표준 기구에서 관리하는 자바스크립트의 표준이다. ECMA-262 기술 규격에 따라 정의된다.

ES가 지속적으로 업데이트 되면서 수정이 이루어지고 있는데 ES5 → ES6에서 변화가 커 ES6 변화에 대해서 알아야한다.

ES6

ES6의 주요변화

위 블로그를 토대로 정리함 (일부부분 이해가 가지 않아서 이해가는 부분만 정리)

  1. ESM(모듈)모듈 내부에서 선언된 모든 변수, 함수, 객체, 클래스는 모두 지역적인 것 (local)로 간주된다.
    • 외부로 공개하고자 하는 것은 export하고 다른 모듈에선 import 구문으로 참조하여 사용 가능하다.
    • import 할 때 이름 변경하고 싶으면 as 예약어 사용
    • import 할 때 단일 객체 (export default) 되었다면 구조분해할당 사용하지 않고 단일 객체로 가져온다.
  2. 모듈 : 독립성을 가진 재사용이 가능한 블록, import/export를 통해 불러오기 내보내기가 가능하다.
  3. Promise 객체 지원
  4. 📚 자바스크립트 Promise 개념 & 문법 정복하기
  5. 구조분해할당
    let arr = [1, 2, 3, 4];
    let [a1, a2, a3] = arr;
    console.log(a1, a2, a3); // 1, 2, 3
    
    let obj = { name: 'melon', age: 30, nationality: 'KR' };
    let { name: n, age: a, nationality } = obj;
    console.log(n, a, nationality); //melon 30 KR
    
  6. 배열, 객체의 값을 추출하여 여러변수에 할당할 수 있는 기능
  7. Spread Operator 전개 연산자
  8. 자세한 문법은 JS 강의를 통해 알아보자..

프로젝트 파일 구조

프로젝트 구조는 정말 다향하게 있다. UMC 노드에서 사용하는 프로젝트 파일 구조는 Service-Oriented Architecture(Service Layer Pattern)를 간소화 한 구조 사용.

Service-Oriented Architecture

https://celeroncoder.github.io/blog/posts/should-i-adopt-service-oriented-architecture-soa/

  • Controller
    • 클라이언트의 요청을 받아 서비스에 전달
    • 서비스에서 작업을 마친 데이터를 받아 클라이언트에게 응답
    • 단지 요청을 받아 응답 처리를 진행한다. (routing)
  • Service Layer
    • 비즈니스 로직 캡슐화 및 추상화
    • Controller로 부터 전달된 요청에 로직을 적용하는 계층
  • Data Access Layer (Repository Layer)
    • 쿼리를 수행하며 DB와 상호작용
    • Service 계층에서 데이터베이스 접근이 필요한 경우가 발생하는데, 데이터에 대한 직접적인 코드가 작성되는 계층

계층형 아키텍쳐

  1. Presentation Layer
  2. 사용자와의 상호작용에 중점을 둔 계층 : view, controller
  3. Business/Domain Layer
    1. Domain Layer: 도메인 처리에 중점을 둠. 서비스(어플리케이션) 레이어에 의존하지 않도록 구현하는 것이 좋다. (한 어플리케이션에 의존하면, 다른 어플리케이션에서는 활용할 수 없기 때문이다.)
    2. Application Service Layer:
    3. 도메인 처리를 위해 필요한 제반 작업에 중점을 둠. 다른 인프라와 통신, 외부 API와 통신, 트랜젝션
  4. 소프트웨어의 도메인 로직 처리에 중점을 둔 계층
  5. Data Access Layer (Persistence Layer)
  6. 데이터베이스에 직접 요청을 하는 등 데이터베이스에 접근하는데 중점을 둠. 데이터베이스와 mapping되는 객체를 영구히 관리하는 계층: repository, DAO

계층형 아키텍쳐의 장단점 🅾️ 구조가 단순하고, 보편적으로 사용하기 때문에 처음 프로젝트를 시작할 때 적합하다는 장점이 있다. ❎ 결과적으로 각 계층이 의존성을 가지기 때문에 데이터베이스 주도 설계로 이어질 수 있다. 조직화가 어려워지고, 비즈니스 로직이 여기저기 퍼져있어 도메인 파악이 힘들어진다

클린 아키텍쳐

각 계층의 의존성을 낮추고 추상화를 통해 관심사 분리

'Studying Programming > Node.js' 카테고리의 다른 글

Node.js - Express  (0) 2025.03.13
Node.js  (0) 2025.03.07