❑ Architecture (아키텍처)
➤ 아키텍처란?
▶️ Architecture?
아키텍처는 건축 분야에서 유래된 용어로 건축물을 짓는데 있어 청사진 같은 역할을 한다.
쉽게 생각하면 건축의 조감도이다.
컴퓨터 시스템에서도 시스템을 만들기 전에 이해 당사자들이 모여서 시스템의 구조를 알기 쉬운 도형이나 이미지로 만들어놓는다.
➤ 컴퓨터 시스템에서 아키텍처 유형
▶️ 시스템 아키텍처
하드웨어 + 소프트웨어를 모두 포함하는 시스템의 전체적인 구성을 큰그림으로 표현한 것
시스템의 구성 및 동작원리를 나타낸다.
시스템의 구성요소에 대해 설계 및 구현을 지원하는 수준으로 자세히 기술
구성 요소 및 시스템 외부 환경과의 관계 묘사
요구 사양과 시스템의 전체 수명 주기를 고려
시스템의 전체적인 최적화가 목표
참고 사이트
https://www.edrawsoft.com/kr/program-review/architecture-drawing-program.html
▶️ 소프트웨어 아키텍처
하드웨어를 제외한 컴퓨터 내의 모든 프로그램을 포괄하는 소프트웨어의 구성을 큰 그림으로 표현한 것
소프트웨어 아키텍처의 예시
Java 플랫폼 아키텍처
▶️ 애플리케이션 아키텍처
애플리케이션은 소프트웨어의 종류 중 하나이다.
데스크탑이나 스마트폰에서 사용하는 응용 프로그램이다.
넓게는 클라이언트의 요청을 처리하는 서버 애플리케이션을 의미한다.
애플리케이션 아키텍처 중에 앞으로 자주 볼 웹 애플리케이션 아키텍처인 계층형 아키텍처(N-Tier) 정도는 기억해두자.
API 계층(API Layer)
클라이언트의 요청을 받아들이고 응답하는 계층
일반적으로 표현 계층(Presentation Layer)라고 불림
REST API를 제공하는 애플리케이션의 경우엔 API 계층이라고 표현한다.
서비스 계층(Service Layer)
API 계층에서 전달받은 요청을 업무 도메인의 요구 사항에 맞게 처리하는 계층
Domain(Business) 계층이라고도 불림
서비스의 핵심 로직이 포함되어 있음
API 계층에서 전달받은 데이터의 유효성(Validation) 검사
어떤 Data Access를 선택할지 결정
※ 도메인(Domain)이란?
애플리케이션 개발에서의 도메인은 비즈니스적인 어떤 업무 영역과 관련이 있다.
예를 들어 배달 주문 앱을 만들어야 할때 고객과, 음식점, 배달원, 카드사 또는 은행 등 배달 주문 앱을 구현하기 위해 필요한 업무들을 자세히 알아야 높은 퀄리티의 애플리케이션을 만들 수 있다.
도메인 지식(Domain Knowledge) 들을 서비스 계층에서 비즈니스 로직으로 구현해야 한다.
예시) 고객이 주문을 하는 과정, 주문 받은 음식을 음식점에 전달하는 과정, 배달 기사를 매칭하는 과정 등
데이터 액세스 계층(Data Access Layer)
서비스 계층에서 처리된 데이터를 데이터베이스같은 데이터 저장소에 저장하기 위한 계층
➤ 아키텍처로 보는 Spring Framework 모듈(Module) 구성
아래는 스프링에서 제공하는 기능들을 나타낸 그림이다.
Spring Framework에서는 약 20개의 모듈을 통해 다양한 기능을 제공
▶️ 모듈(Module) 이란?
Java에서 일반적으로 지원되는 여러가지 기능들을 목적에 맞게 그룹화하여 묶어 놓은 것
모듈은 Java의 패키지 단위로 묶여 있고, 이 패키지 안에는 관련 기능을 제공하기 위한 클래스들이 포함되어 있다.
일반적인 모듈은 재사용이 가능하도록 라이브러리 형태로 제공되는 경우가 많다.
❑ Spring Boot 란?
➤ Spring Boot 란 무엇일까?
Spring Framework는 enterprise 애플리케이션을 개발하기 위한 핵심 기능을 제공하는 Spring Project중 하나이다.
Spring의 복잡한 설정을 해결하기 위해 나온 것이 Spring Boot이다.
➤ Spring Boot를 사용해야하는 이유?
1. XML 기반의 복잡한 설계 방식 지양
2. 의존 라이브러리의 자동 관리
3. 애플리케이션 설정의 자동 구성
4. 프로덕션급 애플리케이션의 손쉬운 빌드
5. 내장된 WAS를 통한 손쉬운 배포
지금은 아직 의미가 와닿게 이해되진 않지만 Spring을 계속 공부하다보면 언젠가 의미를 깨닫는 날이 오겠지..?
※ 심화학습
아파치 톰캣(Apache Tomcat) 이외에 Spring Boot에서 사용할 수 있는 서블릿 컨테이너(WAS)에는 어떤 것들이 있을까?
▶️ Tomcat
자바에서 가장 널리 사용되는 WAS
Spring Boot에서 기본 내장된 WAS
▶️ Jetty (추억의 제티 음료가 생각난다..)
경량 WAS이다.
적은 메모리를 사용하고 속도도 빠르지만
그만큼 대규모 트래픽엔 취약하다.
▶️ Undertow
유연한 고성능 웹서버
대규모 트래픽으로부터 톰캣보다 안정적
▶️ Netty (얘는 뭘까 Jetty 친구인가..?)
읽어주셔서 감사합니다 🤗
스프링 어려운데.. 동기분들 모두 힘내세요..!
오개념에 대한 지적은 언제나 환영입니다~
'TIL(Today I Learned)' 카테고리의 다른 글
6/18 (토) Spring Framework - DI(Dependency Injection) 2️⃣ 빈 스코프(Bean Scope) (0) | 2022.06.19 |
---|---|
6/17 (금) Spring Framework - DI(Dependency Injection) 1️⃣ Spring Container와 Bean (0) | 2022.06.18 |
6/15 (수) Spring Framework의 특징 2️⃣ (0) | 2022.06.15 |
6/14 (화) Spring Framework의 특징1️⃣ (0) | 2022.06.15 |
6/14 (화) Spring Framework 기본 (0) | 2022.06.14 |