1-2 SpringBoot 및 서버 이해
소프트웨어 디자인 패턴 이란? )
소프트웨어 디자인에서 특정 문맥에서 공통적으로 발생하는 문제에 대해 재사용 가능한 해결책이다.
다른 상황에 맞게 사용될 수 있는 문제들을 해결하는 데에 쓰이는 서술이나 템플릿이며 프로그래머가 어플리케이션이나 시스템을 디자인할 때 공통된 문제들을 해결하는데 쓰이는 형식화 된 좋은 관행이다.
Software Architecture Patterns
Chapter 1. Layered Architecture The most common architecture pattern is the layered architecture pattern, otherwise known as the n-tier architecture pattern. This pattern is the de facto standard for most … - Selection from Software Architecture Pattern
www.oreilly.com
레이어드 아키텍처 패턴 )
서버를 총 세가지 부분으로 나누는 패턴으로 Presentation 계층, Domain (Business or Service) 계층, Data Access (Persistence) 계층으로 나눈다.
- Presentation 계층 : 사용자와 상호 작용 처리 계층
CLI ( Command-Line Interface / 명령 줄 인터페이스 ) , HTTP요청 및 HTML 렌더링에 대해 알고 있는 웹계층으로 MVC (Model / View / Controller) 도 이 계층에 속함.
스프링에서는 @Controller 어노테이션을 사용해서 표현
+ Annotation 용도 : 컴파일러에게 문법 에러 체크하도록 정보 제공, 개발툴이 빌드나 배치시 코드를 자동으로 생성할 수 있도록 정보제공, 런타임시 특정 기능을 실행하도록 정보를 제공하는 기능을 하며 자바에서는 @ (at sign)을 앞에 붙여서 사용
- Domain (Business or Service) 계층 : 서비스/시스템의 핵심로직으로 유효성 검사, 계산을 포함하는 Business 논리계층
애플리케이션이 수행해야하는 도메인과 관련된 작업을 담당. 입력/저장된 데이터를 기반으로 계산, Presentation 계층이 받은 데이터 유효성 검사, 어떤 Data Access를 선택할 지 결정
스프링에서는 @Service 어노테이션을 사용해서 표현
- Data Access (Persistence) 계층 : DAO 계층
Database / Message Queue / 외부 API와의 통신 등 처리
데이터베이스 또는 원격 서비스에서 영구 데이터를 관리하는 방법을 분류하는 데이터 접근 계층이다.
스프링에서는 @Repository 어노테이션을 사용해서 표현
+ DAO (Data Access Object) 는 데이터 계층에서 데이터베이스로 접근하는 로직을 담당한다
아주 쉽게 비유해주신 그림
공부하다 보면 기본 자바와 스프링에서 문법이 다른부분이 있을것이다
이부분에 대해 메모하고 의아해 하는 습관을 가지면 IOC/DI 등 설계 철학 등을 배우는 데 큰 도움이 된다.
+ IOC / DI :스프링의 핵심 프로그래밍 모델로, 오브젝트의 생명주기와 의존 관계에 대한 프로그래밍 모델이다. 유연하고 확장성이 뛰어난 코드를 만들 수 있게 도와주는 객체지향 설계 원칙과 디자인 패턴의 핵심 원리를 담고 있다.
스프링이 제공하는 모든 기술과 API, 컨테이너 모두 IoC/DI 방식으로 작성되어 있다.
스프링 / 스프링부트 를 사용하는 이유 )
단순 반복작업 부분이 많았던 Controller와 Repository쪽을 개발 관점에서 쉽고 편하게 처리해줘 가장 중요한 비즈니스 로직인 Service 레이어에 집중 할 수 있도록 해줬기 때문에 스프링을 사용한다.
'Experience > 항해99' 카테고리의 다른 글
021 - 본수업 15일차 / 스프링 입문 주차 : 개인 과제 질문편 (2) | 2022.11.30 |
---|---|
018 - 본수업 12일차 / Spring JPA (Java Persistence API) (1) | 2022.11.26 |
017 - 본수업 11일차 / Spring 1-1 웹 동작 방식 이해하기 (1) | 2022.11.25 |
017 - 본수업 11일차 / 주특기 시작 S.A. (0) | 2022.11.25 |
016 - 항해 알고리즘 본 테스트 (0) | 2022.11.24 |