💜 Key Point

객체지향, 계층형 아키텍처 패턴

💜 Today I Learned

[노드 심화]

  • 객체 지향 프로그래밍의 핵심 원칙
    1) 캡슐화
    객체 내부의 세부적인 사항을 감추는 것, 외부로 노출시키지 않도록 만드는 것
    ㅤ
    2) 상속
    상위 클래스의 특징을 하위 클래스에서 물려받아 코드 중복 제거, 코드 재사용 증대
    ㅤ
    3) 추상화
    공통된 부분을 모아 상위 개념으로 새롭게 정의하는 것
    불필요한 세부 사항 생략, 코드를 더욱 간결하고 관리하기 쉽게 만드는 원칙
    ㅤ
    4) 다형성
    역할(인터페이스)과 구현 분리
    오버라이팅을 통해 특정 서비스의 기능을 유연하게 변경, 확장 가능
    ㅤ

  • 객체 지향 설계 5원칙(SOLID)
    1) 단일 책임의 원칙(SRP)
    하나의 객체는 단 하나의 책임을 가져야 한다.
    클래스나 모듈을 변경할 이유가 단 하나 뿐이어야 한다는 원칙
    ㅤ
    2) 개방-폐쇠 원칙(OCP)
    소프트웨어 엔티티 또는 개체는 확장에는 열려 있으나 변경에는 닫혀 있어야 한다.
    기존 코드에 영향을 주지 않고 소프트웨어에 새로운 기능이나 구성 요소를 추가할 수 있어야 함
    ㅤ
    3) 리스코프 치환 원칙(LSP)
    어플리케이션에서 객체는 프로그램의 동작에 영향을 주지 않으면서, 하위 타입의 객체로 바뀔 수 있어야 한다.
    부모 클래스와 자식 클래스를 가지고 있다면 두 가지의 클래스 객체를 서로 바꾸더라도 해당 프로그램에서 잘못된 결과를 도출하야 않아야 하는 원칙
    ㅤ
    4) 인터페이스 분리 원칙(ISP)
    특정 클라이언트를 위한 인터페이스 여러 개가 범용 인터페이스 하나보다 낫다.
    ㅤ
    5) 의존성 역전 원칙(DIP)
    프로그래머는 추상화에 의존해야 하고, 구체화에 의존하면 안된다.

  • 아키텍처 패턴
    소프트웨어의 구조를 구성하기 위한 가장 기본적인 토대 제시
    각각의 시스템들과 역할이 정의되어 있고, 여러 시스템 사이의 관계와 규칙 등이 포함되어 있음
    ㅤ

  • 대표적 아키텍처 패턴

    • MVC 패턴 (Model View Controller Pattern)
      UI가 필요한 어플리케이션에서 많이 사용되는 패턴
      1) Model : 데이터, 비즈니스 로직 담당
      2) View : 사용자 인터페이스 담당
      3) Controller : 클라이언트 요청을 모델과 뷰로 전달해주는 담당
    • 계층형 아키텍처 패턴(Layered Architecture Pattern)
      서로 다른 기능을 여러 계층으로 분할하는 패턴
      컨트롤러, 서비스, 저장소 계층으로 분리됨
      ㅤ
    • 클린 아키텍처 패턴(Clean Architecture)
      소프트웨어를 내부 도메인으로 향하는 의존성을 가지는 여러 게층으로 분리된 패턴
      클라이언트의 요청 처리, 데이터베이스 조작, 외부 시스템과의 통신 -> 외부 계층
      소프트웨어의 유지보수성과 확장성 향상시키는 것이 주요 목표
      ㅤ
    • 마이크로 서비스 아키텍처 패턴(Microsevices Architecture Pattern)
      시스템을 작고, 독리적으로 배포 가능한 서비스 분할 패턴
      하나의 시스템에서 다양한 언어와 프레임워크를 도입할 수 있는 패턴
      서비스 간의 통신은 API, 이벤트 기반 아키텍처를 통해 통신 가능
      ㅤ
  • 계층형 아키텍처 패턴
    여러 계층으로 분리하여 관리하는 아키텍처 패턴
    ㅤ
    각 계층을 명확하게 분리해서 유지, 각 계층이 자신의 바로 아래 계층에만 의존하게 만드는 것이 목표
    ㅤ
    계층화의 핵심 : 각 계층은 높은 응집도, 다른 계층과는 결합도를 최소화
    ㅤ

    • 3계층 아키텍처
      1) 컨트롤러 : 어플리케이션의 가장 바깥 부분, 요청/응답 처리
      2) 서비스 : 중간부분, API의 핵심적인 동작이 많이 일어나는 부분, 비즈니스 로직이 수행되는 부분
      3) 저장소 : 가장 안쪽 부분, 데이터베이스와 맞닿아 있음, 실제 DB 와 통신하는 계층
      ㅤ
    • 컨트롤러
      클라이언트의 요청 -> 처리는 서비스에게 위임 -> 클라이언트에게 응답 반환
      ㅤ
    • 서비스
      사용자의 요구사항을 처리하는 실세
      DB 정보가 필요할 때는 저장소에게 요청
      ㅤ계층형 아키텍처 패턴,
    • 저장소
      DB 관리 역할 담당
      DB CRUD 작업 처리

0개의 댓글