아키텍처(Architecture)

seongmin·2022년 10월 12일
0

Spring

목록 보기
8/38
post-thumbnail

시스템 아키텍처

시스템 아키텍처는 하드웨어와 소프트웨어를 모두 포함하는 어떤 시스템의 전체적인 구성을 큰그림으로 표현한 것이다.

시스템 아키텍처를 통해 기본적으로 해당 시스템이 어떤 하드웨어로 구성되고, 어떤 소프트웨어를 사용하는지를 대략적으로 알 수 있다.

또한 해당 시스템 구성 요소들 간의 상호작용이 어떻게 이루어지는지 등 시스템이 정상적으로 동작하기 위한 동작 원리 등이 시스템 아키텍처 안에 표현이 되면 이해 당사자들이 해당 아키텍처를 이해하는데 도움이 된다.

소프트웨어 아키텍처 / 애플리케이션 아키텍처

소프트웨어는 하드웨어를 제외한 컴퓨터내의 모든 프로그램을 포괄하는 의미를 가지고 있으며 이러한 소프트웨어의 구성을 큰 그림으로 표현한 것이 소프트웨어 아키텍처이다.

소프트웨어 아키텍처 사례의 대표적인 것이 바로 Java 플랫폼 아키텍처 이다.


그런데 우리가 주목해야 할 부분은 웹 상에서 동작하는 웹 애플리케이션을 위한 아키텍처다.

애플리케이션은 소프트웨어 종류의 하나로써 좁게는 데스크탑이나 스마트폰에서 사용하는 응용 프로그램을 말하며, 넓게는 클라이언트의 요청을 처리하는 서버 애플리케이션을 의미한다.


계층형 아키텍처(N-티어)

  • API 계층(API Layer)

API 계층은 클라이언트의 요청을 받아들이는 계층이다. 일반적으로 표현 계층(Presentation Layer) 라고도 불리지만 REST API를 제공하는 애플리케이션의 경우 API 계층이라고 표현한다.

애플리케이션이 REST API 요청을 처리하는 애플리케이션이 라면 API 계층이라는 표현이 더 적절하다.

  • 서비스 계층(Service Layer)

서비스 계층은 API 계층에서 전달 받은 요청을 업무 도메인의 요구 사항에 맞게 비즈니스적으로 처리하는 계층이다.

애플리케이션의 핵심 로직은 서비스 계층에 포함되어 있다고 해도 과언이 아닐만큼 애플리케이션에 있어 핵심이 되는 계층이다.

도메인(Domain) :

애플리케이션 개발에서 흔하게 사용하는 도메인이란 용어는 주로 비즈니스적인 어떤 업무 영역과 관련이 있다.

예를 들어, 여러분들이 새로운 배달 주문 앱을 만들어야 한다면 고객과 음식점, 배달원, 그리고 카드사 또는 은행 등 배달 주문 앱을 구현하기 위해 필요한 업무들을 자세히 알면 알수록 퀄리티가 높은 애플리케이션을 만들 가능성이 높다.

즉, 고객이 음식을 주문하는 과정, 주문받은 음식을 처리하는 과정, 조리된 음식을 배달하는 과정 등의 도메인 지식(Domain Knowledge)들을 서비스 계층에서 비즈니스 로직으로 구현 해야하는 것이다.

  • 데이터 액세스 계층(Data Access Layer)

데이터 액세스 계층은 비즈니스 계층에서 처리된 데이터를 데이터베이스 등의 데이터 저장소에 저장하기 위한 계층이다.

정리

  • 아키텍처(Architecture)는 건축 분야에서 유래된 용어로써 요구 사항을 만족하는 건축물을 짓는데 있어 청사진 같은 역할을 한다.

  • 소프트웨어의 구성을 큰 그림으로 표현한 것이 소프트웨어 아키텍처이다.
    애플리케이션은 소프트웨어 종류의 하나로서 좁게는 데스크탑이나 스마트폰에서 사용하는 응용 프로그램을 말하며, 넓게는 클라이언트의 요청을 처리하는 서버 애플리케이션을 의미한다.

  • 우리가 중점적으로 알아야 할 아키텍처는 웹 상에서 동작하는 웹 애플리케이션을 위한 아키텍처이다.

  • 애플리케이션의 아키텍처 중에서 우리가 중점적으로 알아야 할 아키텍처는 계층형 애플리케이션 아키텍처이다.
    REST API 기반 웹 애플리케이션의 계층은 크게 API 계층(API Layer), 비즈니스 계층(Business Layer), 데이터 액세스 계층(Data Access Layer)으로 구분된다.

  • API 계층은 클라이언트의 요청을 받아들이는 계층이다.
    비즈니스 계층은 API 계층에서 전달 받은 요청을 업무 도메인의 요구 사항에 맞게 비즈니스적으로 처리하는 계층이다.

  • 데이터 액세스 계층은 비즈니스 계층에서 처리된 데이터를 데이터베이스 등의 데이터 저장소에 저장하기 위한 계층이다.

모듈

Spring Framework에서 지원하는 모듈들을 아키텍처로 표현한 그림이다.

모듈(Module)이란?

Java에서는 일반적으로, 지원되는 여러가지 기능들을 목적에 맞게 그룹화 하여 묶어 놓은 것을 모듈이라고 한다.

이러한 모듈들은 Java의 패키지 단위로 묶여 있으며, 이 패키지 안에는 관련 기능을 제공하기 위한 클래스들이 포함되어 있다.

일반적으로 모듈은 재사용 가능하도록 라이브러리 형태로 제공되는 경우가 많다.


0개의 댓글