마이크로서비스 아키텍처(MSA,Microservice Architecture)
마이크로서비스 아키텍처(Microservices Architecture)는 소프트웨어 시스템을 여러 작은 독립적인 서비스로 나누고, 각 서비스를 독립적으로 배포하고 운영하는 소프트웨어 설계입니다.
이 아키텍처 스타일은 대규모 애플리케이션을 더 작고 관리 가능한 단위로 분해함으로써, 개발, 배포, 확장, 유지보수 등의 측면에서 더 높은 유연성과 확장성을 제공합니다.
서비스 기능별로 구분해서 독립적인 애플리케이션을 개발하면 각 서비스 간 통신을 해야하는 경우가 발생합니다. 한 서버가 다른 서버에 통신을 요청하는 것을 서버간 통신이라고 합니다. 서버와 클라이언트의 구조가 되며 대표 적인 통신방식이 HTTP/HTTPS입니다.
스프링 부트 동작 방식
스프링 부트에서 spring-boot-starter-web모듈을 사용시 톰켓을 사용하는 스프링 MVC 구조를 기반으로 동작합니다.
레이어드 아키텍처
"레이어드 아키텍처"는 소프트웨어 디자인에서 사용되는 개념 중 하나입니다.
이는 소프트웨어 컴포넌트를 유사 관심사 기준으로 여러 계층으로 나누어 각 계층이 특정 역할을 수행하도록 하는 아키텍처 스타일을 의미합니다.
각 계층은 서로 독립적으로 작동하며, 상위 계층은 하위 계층의 기능에 의존합니다.
이러한 아키텍처는 소프트웨어 시스템을 모듈화하고 유지보수, 확장, 테스트를 쉽게 만듭니다.
일반적으로 레이어드 아키텍처는 다음과 같은 주요 계층으로 구성됩니다:
프레젠테이션 레이어 (Presentation Layer)
사용자와 상호작용하는 부분으로, 주로 UI (User Interface)를 담당합니다.
애플리케이션의 최상단 계층으로 클라이언트의 요청을 해석하고 응답합니다.
요청을 위임하고 결과를 응답하는 역할만 수행합니다.
비즈니스 레이어 (Business Layer)
비즈니스 로직이 구현되는 부분입니다.
업무 규칙, 데이터 처리, 계산 등의 핵심 비즈니스 로직이 여기에 위치합니다.
프레젠테이션 레이어와 데이터 액세스 레이어 간의 중간 역할을 합니다.
데이터 액세스 레이어 (Data Access Layer)
데이터베이스와의 상호작용 및 데이터 저장소에 대한 접근을 다룹니다.
데이터베이스 쿼리, 저장 프로시저 호출 등이 여기에 속합니다.
레이어드 아키텍처의 이점은 각 계층이 독립적으로 변경 가능하다는 것입니다. 예를 들어, UI를 변경하려면 프레젠테이션 레이어만 수정하면 되며, 비즈니스 로직이나 데이터 액세스와는 독립적입니다. 이는 유지보수와 확장성을 향상시키며, 시스템의 일부를 쉽게 교체할 수 있도록 합니다.
레이어드 아키텍처의 단점 중 하나는 계층 간의 통신 비용이 발생할 수 있다는 것입니다. 또한, 과도한 계층화는 복잡성을 증가시킬 수 있습니다. 이러한 단점을 고려하여 프로젝트의 특정 요구사항에 맞게 적절한 아키텍처를 선택하는 것이 중요합니다.
스프링의 레이어드 아키텍처
spring-boot-starter-web을 사용하면 MVC구조를 띠게되며 일반적으론 다음과 같은 레이어드 아키텍처를 이룹니다.
MVC 구분
- 프레젠테이션 계층 - View, Controller
- 비즈니스와 데이터 접근 계층 - Model
- 비즈니스 계층에 서비스를 배치해서 엔티티와 같은 도메인 객체의 비즈니스 로직을 조합
- 데이터 접근 계층에는 DAO를 배치해 도메인을 관리
'spring > spring' 카테고리의 다른 글
[스프링 부트 핵심 가이드] HTTP 요청 메서드 받기 (0) | 2024.02.01 |
---|---|
[스프링 부트 핵심 가이드] pom.xml (0) | 2024.02.01 |
[Spring] @Transactional (0) | 2024.02.01 |
[Spring] 프로젝트 구조 알아보기 (0) | 2024.01.30 |
[스프링 부트 핵심 가이드] 스프링 (0) | 2024.01.24 |