Simple 3-Tier Architecture Project Step 1 (3tier 구조 및 Cloud 환경)

     

    3Tier란?

    3tier란 뭘까? 왜 3Tier가 어떤 면에서 이득이기에 3Tier 구성을 하는가?

    다음 사진을 보면 기본적인 3Tier의 구조이다.

     

     

    1. Presentation Tier (표현 계층)

    웹 페이지에서 들어가면 가장 먼저 보이는 정적 계층이다. 정말 단순히 사용자와 상호작용 하기 위해서 존재하는
    UI 등을 말한다. 보통 흔히 웹 코딩 공부를 할 때 사용하는 HTML, CSS, JavaScript 등이 이곳에서 사용된다.
    즉, 쉽게말해 사용자가 웹 어플리케이션을 원활하게 사용할 수 있도록 User에게 보여주는 계층이다.

    한마디로 HTML, CSS, JavaScript로 구현된 웹 페이지, 모바일 애플리케이션의 화면 이 Presentation Tier인 것이다.

     

    2. Logic Tier (논리 계층)

    어플리케이션의 핵심 기능과 처리를 담당하는 동적 계층이다.
    주로 데이터의 처리, 계산, 비즈니스 규칙 적용 등을 담당하게 된다. 예를 들어보자, 계산기 웹 어플리케이션을 만들었다고
    가정하였을 때, + - 같은 계산부호, 123456 의 숫자 같은 것을 사용자에게 보여주는 것은 Presentation 이 담당하고,
    12+13 같은 수식을 입력받고 실질적으로 계산하여 반환하는 것은 Logic Tier가 담당하게 되는 것이다.
    계산 이외에도, Database와 상호작용하여 Create(데이터입력), Read(데이터 읽기), Update(데이터 수정), Delete(삭제)
    흔히 CRUD 라고 불리는 로직도 처리할 수 있다.

    Logic Tier 의 예시로는 Java, C#, Python 등으로 작성된 서버 애플리케이션, API 등을 예로 들 수 있겠다.

     

    3. Data Tier (데이터 계층)

    말 그대로 데이터가 저장되는 계층이다. 데이터 베이스 자체라고 봐도 무방하다
    간단하게 게시판 페이지를 예로 들어 보자, 
    1. 먼저 유저는 게시판에 사이트에 접속해 UI화면을 볼 수 있을 것이다. (Presentation)
    2. 게시물 생성 버튼을 누르고 내용을 입력한 후, [저장] 버튼을 누르면 Database와 연결된 Logic Tier가 처리한다.
    (Logic Tier)
    3. 실질적으로 Database에 해당 내용이 저장된다.(Data Tier)

    즉, 데이터가 저장되는 저장소인 것이다. 예로는 MySQL, PostgreSQL, MongoDB, S3 등......이 있다.
    어떤 DB를 사용하는가에 대해서는 사용할 자료형의 특성에 따라 결정하면 된다.
    ex) SQL DB가 필요하다 -> MySQL
          NO SQL DB가 필요하다 -> MongoDB
         객체 기반 스토리지가 필요하다 -> S3

     


     

    그렇다면, 3-Tier의 장점은?

     

     

    • 모듈화: 사진처럼 각 계층이 독립적으로 분리되어 있기 때문에 특정 계층의 변경이 다른 계층에 미치는 영향을 최소화할 수 있다.
    • 유지보수성: 코드의 유지보수가 용이해지고, 특정 계층만 수정하거나 확장할 수 있다.
    • 확장성: 시스템의 특정 계층만 별도로 확장할 수 있어, 데이터베이스 서버를 별도로 확장하거나 Logic Tier를 추가하는 식으로 성능을 향상시킬 수 있다.
    • 재사용성: 비즈니스 로직 계층은 여러 종류의 클라이언트(웹, 모바일 등)에서 재사용할 수 있다.

     

    예시 상황1)

    상황:
    온라인 쇼핑몰 웹사이트에서 새로운 사용자 인터페이스(UI) 디자인이 적용하려고한다.
    디자이너와 개발자 팀은 웹 페이지의 레이아웃과 스타일을 변경해야 한다.

    예시:
    새로운 UI 디자인을 적용하기 위해 프레젠테이션 계층(웹 프론트엔드)의 HTML, CSS, JavaScript 코드만 수정한다.
    비즈니스 로직 계층(주문 처리 로직)과 데이터 계층(데이터베이스의 제품 정보)은 전혀 변경할 필요가 없었기 때문에,
    디자인 변경이 빠르게 완료되었고, 다른 기능에 대한 리스크가 전혀 없다.

    예시 상황2)

    상황:
    고객이 주문 후 취소 요청을 했을 때, 특정 조건에서 취소가 제대로 처리되지 않는 버그가 발생하였다.
    이 문제를 해결하려고 한다.

    예시:
    개발팀은 버그가 비즈니스 로직 계층의 특정 모듈에 있다는 것을 파악하여, 이 계층에서 주문 취소 로직만 수정한 후 테스트를 거쳐 배포했다. 데이터베이스나 사용자 인터페이스에는 변경이 필요하지 않았기 때문에 다른 기능에 영향을 미치지 않고 신속하게 버그를 수정할 수 있다.

    예시 상황3)

    상황:
    할인 프로모션 기간 동안 웹사이트 방문자가 급증하여 서버에 부하가 발생했다.
    이로 인해 웹 페이지 로딩 속도가 느려지고, 데이터베이스 조회 시간이 길어졌다.

    예시:
    클라우드 인프라를 활용하여 Presentation TierLogic Tier의 인스턴스를 추가했다.
    또한, Data Tier에서 데이터베이스 읽기 부하를 줄이기 위해 읽기 전용 복제본을 추가 배포했습니다. 이로 인해 사용자 경험이 개선되었고, 서버 부하를 효율적으로 처리할 수 있었다.

     

    이처럼, 여러 상황에서 유지보수, 버전업데이트, 성능 최적화 등 여러모로 이점이 있다.

     

     

     

     


     

     

    클라우드에서의 3Tier?

     

    흔히 말하는 클라우드의 장점 

    • 확장성
    • 가용성
    • 비용 효율성

    등과 3tier 의 장점이 맞물려 더욱 높은 시너지를 내게 된다.

     

    예시)

    3Tier와 클라우드의 특성 이 합쳐지면 아키텍쳐의 전체적인 안정성이 더욱 증폭된다.

    확장성
    사용자가 급격히 증가할 때 프레젠테이션 계층(웹 서버)의 인스턴스를 자동으로 추가하거나,
    데이터베이스 계층의 성능을 필요에 따라 자동 확장할 수 있다.

    가용성 
    클라우드는 다중 지역(Region)과 가용 영역(Availability Zone)을 지원하여 시스템의 각 계층을
    여러 위치에 복제할 수 있다. 이로 인해, 시스템의 가용성을 높일 수 있다.

    비용 효율성
    클라우드에서는 사용한 만큼만 비용을 지불하는 종량제 모델이기 때문에, 
    각 계층의 리소스를 필요에 따라 유동적으로 할당하고 해제할 수 있어, 불필요한 리소스 낭비를 줄일 수 있다.

     

     


     

     

    이와 같은 이유들로 클라우드 환경에서 3Tier아키텍쳐를 구현하면 얻을 수 있는 여러 장점들이 있다.
    이제 3Tier 와 Cloud의 장점에 대해 알았으니, 다음과 같은 과정을 거쳐서 구현을 해보자

    1. 로컬에서 간단한 어플리케이션 개발
    2. Local VM 환경에서 3Tier 테스트
    3. Cloud 환경으로 마이그레이션

     

     

    'Project' 카테고리의 다른 글

    Simple 3-Tier Architecture Project Step 2 (구현)  (0) 2024.09.04

    댓글