본문 바로가기

TIL

2022.11.22 객체지향 3-Tier Architecture

업캐스팅, 다운캐스팅

업캐스팅

(parent) Child c;

다운캐스팅 절차

  • (Child) Parent p;
  • Parent p = new Child();
  • (Child) p;

ex) 참가자 ⇒ 회원참가자, 비회원참가자

  • Participant
    • MemberParticipant
      • B (메서드)
    • NonMemberParticipant
      • A (메서드)
  • Participant p가 참가자인지 회원참가자인지 비회원참가자인지
    • 비회원참가자의 A라는 기능을 쓰고싶어
      • (NonMemberParticipant) p.A();

 

3-Tier Architeture

Presentation Tier

일반 사용자가 애플리케이션과 상호작용하는 애플리케이션의 사용자 인터페이스 및 통신 계층

주요 목적은 정보를 표시하고 사용자로부터 정보를 수집하는 것

예를 들어 웹 브라우저, 데스크탑 애플리케이션 또는 그래픽 사용자 인터페이스(GUI)에서 실행될 수 있습니다.

  • UI(User-Interface)
    • 위키 정의
      • 사람(사용자)과 컴퓨터시스템 사이의 의사소통 매개를 의미한다. 이 의사소통은 해당 기기에 대해 효율적인 작동과 사용자의 제어를 보장하는 것을 목표로 한다. 주변의 터치스크린, 마우스 등은 UI를 물리적으로 볼 수 있는 좋은 예시이다.
    • 일반적인 웹 또는 앱 서비스
      • 브라우저
        • Chrome, Safari, Firefox, Explorer, Whale, Edge
        • 안드로이드 앱
        • IOS 앱

 

Application Tier

논리 계층 또는 중간 계층이라고도 하는 애플리케이션 계층은 애플리케이션의 핵심

프레젠테이션 계층에서 수집된 정보는 특정 비즈니스 규칙 집합인 비즈니스 로직을 사용하여 데이터 계층의 다른 정보와 비교하여 처리됩니다. 애플리케이션 계층은 데이터 계층의 데이터를 추가, 삭제 또는 수정할 수도 있습니다.

애플리케이션 계층은 일반적으로 Python, Java, Perl, PHP 또는 Ruby를 사용하여 개발되며 API 호출을 사용하여 데이터 계층과 통신합니다.

 

Data Tier

데이터베이스 계층, 데이터 액세스 계층 또는 백엔드라고도 하는 데이터 계층은 애플리케이션에서 처리하는 정보가 저장되고 관리되는 곳

 PostgreSQL , MySQL, MariaDB, Oracle, DB2, Informix 또는 Microsoft SQL Server 와 같은 관계형 데이터베이스 관리 시스템 이거나 Cassandra, CouchDB 또는 MongoDB 와 같은 NoSQL 데이터베이스 서버일 수 있음

 

 

JAVA로 서비스를 만든다면?

  • Layered-Architecture → Clean Architecture(Hexagonal Architecture)
  • 카페 시스템 중에서 메뉴 목록을 저장하고, 보여주는 부분을 생각해보자.
  • Presentation Tier(UI)
    • 브라우저
      • 메뉴 목록 조회 요청을 한다.
        • 주문 가능한 메뉴 목록이 노출 된다.
      • 메뉴를 저장한다.
    • 자바 콘솔
      • 메뉴 목록 조회 요청을 입력 받는다.
        • 주문 가능한 메뉴 목록이 노출 된다.
      • 메뉴를 저장한다.
  • Application Tier
    • Spring
      • 메뉴 목록 조회
        • Data Tier에 저장 되어 있는 메뉴 목록을 조회 한다.
        • 조회 한 메뉴 목록을 네트워크를 통하여, Presentation Tier로 전달한다.
          • Network
    • 자바
      • 메뉴 목록 조회
        • Data Tier에 저장 되어 있는 메뉴 목록을 조회 한다.
        • 조회 한 메뉴를 Presentation Tier로 전달한다.
          • 그냥 값 전달
  • Data Tier
    • Spring
      • DB에 저장 되어 있는 메뉴 목록을 Query를 통하여 조회 한다.
        • RepositoryInterface → SpringMysqlDB
      • 조회 한 정보들을 Application Tier로 전달한다.
    • 자바
      • 메모리에 저장(Java의 기능.. List, HashMap) 되어 있는 메뉴 목록을 조회 한다.
        • RepositoryInterface
          • DefaultMemoryDB → 배열에서 값을 꺼내와
      • 조회 한 정보들을 Application Tier로 전달한다.

'TIL' 카테고리의 다른 글

2022.11.28 프로젝트 발표 준비  (0) 2022.11.28
[WIL] 2022.11.21 ~ 11.25 미니 프로젝트 주간  (0) 2022.11.27
2022.11.21 JAVA 스트림  (0) 2022.11.21
[WIL] 2022.11.14~11.18  (1) 2022.11.20
2022.11.18 제네릭스, 람다  (0) 2022.11.20