본문 바로가기
back-front end

[항해99] Node.js 심화 주차 키워드

by lucian 2022. 8. 11.

Q1. Class는 대체로 추상화를 위해 사용됩니다. ES5 자바스크립트에서 Class는 어떻게 동작할까요?

  • 프로토타입 기반 객체지향 언어는 사실 클래스가 필요 없는 객체 지향 프로그래밍 언어이다. 그렇기에 ES6가 나오기 전인 ES5에선 클래스를 사용하지 않고 기존 생성자함수를 사용하여 추상화를 진행했다.
  • 생성자 함수란 객체 인스턴스를 생성할 수 있는 함수로 전역 코드 단에 있고 함수의 프로토타입을 가지고 있는 함수만이 객체 인스턴스를 생성할 수 있다. 즉 생성자함수는 함수.프로토타입이란 숨은 객체를 가지고 있는데 이 객체가 없는 함수는 생성자 함수가 될 수 없다. (나는 화살표 함수가 생성자 함수가 될 수 없는 것으로 알고 있다.)
    생성자 함수는 일반 함수와 기술적으로 차이가 없는데, 두가지 관례로 구분 짓는다고 한다.
    - 함수 이름의 첫글자는 대문자로 시작한다(파스칼케이스)
    - 실행시 반드시 new 연산자를 붙인다.
  • 클래스는 안에 프로퍼티와 메서드를 가진다. 생성자 함수로 객체 인스턴스를 생성할 경우 생성자함수의 프로토타입을 이용해서 메서드를 생성한다.
    - 메서드 생성 방법 : 생성자함수.prototype.메서드이름 = function (...){....}
  • 또한 클래스는 인스턴스에선 사용하지 않고 오직 클래스만 사용하는 정적 메서드를 가지고 있는데, 생성자 함수에서 프로토타입을 사용하지 않고 함수에 직접 메서드를 넣는다. 
    - 클래스에서 정적 메서드 생성 방법 : static 키워드 사용
    - 생성자 함수에서 정적 메서드 생성 방법 : 생성자함수이름.메서드이름 = function (){}

 

 

Q2. Class는 var 변수처럼 호이스팅이 일어날까요?

  • 클래스 또한 함수로 평가되기에 클래스 선언문으로 정의하였다면 함수 선언문과 같이 소스코드 평가 과정, 즉 런타임 실행되기 전에 먼저 평가되어 함수 객체를 생성하고 그 시점에서 프로토타입도 같이 생성된다. 앞서 말한 생성자 함수는 단독으로 존재할 수 없고 프로토타입과 같이 존재하는 것처럼 객체만을 생성하기 위해 태어난 클래스 또한 단독으로 존재할 수 없고 프로토타입과 같이 존재한다.
  • 클래스 선언문 또한 호이스팅이 발생하지만 let, const와 같다. TDZ가 존재하기에 호이스팅이 발생하지 않는 것처럼 동작한다.

 

 

Q3. 현재 백엔드에서 가장 일반적으로 사용되는 테스팅 기법은 어떤게 있으며, 가장 효과적인 테스팅 방법은 무엇인가요?

  • TDD와 단위테스트 : Test Driven Development로 소프트웨어를 개발하는 방법 중 하나이다. 코드 개발과 별개로 테스트 코드를 먼저 작성하여 코드 개발 과정에서 오류가 발생했을 경우 기능별로 원인이 무엇인지 판단할 수 있다.
    그렇기에 기능 별로 테스트를 하는 단위테스트를 통해 테스트코드를 작성한다.
  • 통합 테스트 : 단위테스트로 기능별로 테스트를 했다면 통합테스트는 기능들이 가지고 있는 유기적인 관계를 테스트 한다. 기능 각자에서 문제가 아닌 모듈 간의 상호작용이 정상적으로 작동되는가를 판단한다.
  • 인수 테스트 : 이미 배치된 시스템을 대상으로 사용자의 관점에서 테스트하는 것.  

 

 

 

Q4. 각 객체 간 의존성/결합도가 높을수록 예상치 못한 문제(Side effect)가 발생할 가능성이 높아집니다. 이를 해결할 수 있는 Decoupling이라는 개념이 존재하는데 Decoupling을 위한 디자인 패턴은 어떤게 존재할까요?

 

웹 개발자가 알아야 할 7가지 디자인 패턴

* 이 글은 7 JavaScript Design Patterns Every developer should Know를 번역하였습니다. 7 JavaScript Design Patterns Every Developer Should Know What if you can structure your source code like a beau..

sangcho.tistory.com

 

Home

yceffort

yceffort.kr

 

 

 

Q5. 마이크로 서비스 아키텍쳐에서 서비스를 나눌 때 보통 각 서비스의 경계를 도메인으로 나눕니다. 도메인이란 뭘까요?

  • 마이크로 서비스 아키텍쳐란? 
    - 대규모 서비스를 작은 자율 서비스로 나눠 독립적이고 제한된 단일 비즈니스 기능으로 구현한 것.
    - 작고, 독립적이면서 느슨하게 결합되어 있게 구성하고 소규모 개발팀이 하나의 마이크로 서비스를 유지 관리할 수 있다.
    - 또한 작고 독립적이라 각자의 마이크로 서비스를 독립적으로 배포할 수 있는 장점을 가지고 있다. 각자 다른 언어로 마이크로 서비스를 개발할 수도 있기 때문에 자율성이 보장되나 다양한 언어와 프레임워크로 인해 전체적인 유지 관리가 어려워질 수 있다.
  • 마이크로 서비스 아키텍쳐의 도메인이란?
    - 각자 맡은 업무라 생각하면 된다. 각 마이크로 서비스가 담당하는 기능들이 도메인이고 이 기능들을 기준으로 작게 나눈 것이 마이크로 서비스이다.
    - 마이크로 서비스의 가장 큰 해결 과제 중 하나는 개별 서비스의 경계를 잘 정의하는 것이다.
    그렇기에 비즈니스 도메인을 모델링하고 도메인 모델을 만들어 기술 한계나 선택에 의해 설계가 끌려가는 상황을 방지할 수 있다.

댓글