3Tier Architecture

tacoyaggi ㅣ 2024. 2. 12. 14:21

소개

3계층 레이어드 아키텍처는 소프트웨어 시스템이나 어플리케이션을 구성하는 방법 중 하나임.

3가지 계층을 사용하여 시스템을 구성하므로 각 계층이 서로 독립적이며 서로 영향을 주지 않고 변경 가능함.

이는 곧 유지보수 및 확장성을 향상시키는데 도움을 줌. 

 

 

구조

Presentation Tier

사용자와 상호작용하며 데이터를 화면에 표시하는 부분임

주로 사용자 인터페이스와 관련이 있음.

웹 어플리케이션의 경우 HTML/CSS, JavaScript 등을 사용하여 사용자에게 정보를 표시하고 입력을 받음.

 

Application Tier

실제 비즈니스 로직, 데이터 처리 및 계산을 담당하는 계층.

이 레이어는 사용자의 요청값을 처리하고 데이터를 조작하여 필요한 계산을 수행함.

비즈니스 계층은 데이터의 유효성 검사, 로그인, 사용자 인증 등과 같은 기능을 처리함.

 

Data Tier

데이터베이스나 파일 시스템과 같은 데이터 저장 및 관리 소스를 담당하는 계층.

이 계층은 어플리케이션에서 사용되는 데이터를 영구적으로 저장하고 관리함. 

간단하게 ORM이 발생하는 단계라고 생각하면 됨.

 

 

 

예제

MVC 형태로 구현해 보았고, 뷰 부분임.

Presentation Tier 에 속함.

<h1>Presentation Tier</h1>

<form asp-action="Add" asp-controller="Index">
    <input id="No" name="No" type="text" />
    <input id="Name" name="Name" type="text" />
    <button type="submit"></button>
</form>

 

다음은 컨트롤러 부분이고 역시 Presentation Tier 속함.  

뷰, 컨트롤러가 Presentation  계층을 의미함.

        [HttpPost]
        public IActionResult Add(Taco taco)
        {
            _taco.Add(taco);
            return RedirectToAction("Index");
        }

 

모델은 Application Tier에 속함. 

namespace MVC.Models
{
    public class Taco
    {
        public int No { get; set; }
        public string Nmae { get; set; }
    }
}

 

실제 비즈니스 로직임.

Applicatoin Tier에 속함.

주로 Service 라는 네이밍 룰을 사용함.

using MVC.Interface;
using MVC.Models;

namespace MVC.Service
{
    public class TacoService : ITaco
    {
        public string GetName(string name)
        {
            return name;
        }

        public string Add(Taco taco)
        {
            return taco.No + taco.Nmae;
        }
    }
}

 

DB 데이터를 가져오거나 수정하는 Repository 단계임.

Data Tier 속함.

using MVC.Interface;

namespace MVC.Repository
{
    public class TacoRepository : IRepository
    {
        public void Add()
        {

        }
    }
}

 

 

결론

말 그대로 3단계로 프로세스 로직이 나눠져 있고 Presentation 단계에서는 HTML/CSS 등 뷰 와 관련된 로직을 수행함.

Application 단계에서는 비즈니스 서비스 로직을 담당함. 

Data 단계에서는 DB와 연관된 프로세스를 담당함. 

'SW 구조 > 아키텍처' 카테고리의 다른 글

헥사고날(Hexagonal)  (0) 2023.11.23