[Section2] Spring Framework 2

2023. 5. 31. 14:49

🧑🏻‍💻 TIL(Today I Learned)


✔️ Spring Framework 모듈 구성, Spring Boot

 

💡 아키텍처(Architecture)

➡️ 컴퓨터 시스템에서의 아키텍처는 어떠한 시스템을 구축하는 데 있어 해당 시스템의 비즈니스적 요구 사항을 만족하는 전체 시스템 구조를 정의하는 것 

➡️ 이해 당사자들이 전체 시스템 구조를 이해하는데 무리가 없도록 일반적으로 이미지나 도형 등 많이 사용함

➡️ 너무 복잡하면 안 됨, 최대한 심플함을 유지하기 위해 노력해야 함

 

🔎 시스템 아키텍처

➡️ 하드웨어와 소프트웨어를 모두 포함하는 어떤 시스템의 전체적인 구성을 큰 그림으로 표현한 것 

➡️ 기본적으로 해당 시스템이 어던 하드웨오로 구성되고 어떤 소프트웨어를 사용하는지를 대략적으로 알 수 있음 

 

🔎 소프트웨어 아키텍처

Java SE 아키텍처(https://docs.oracle.com/javase/1.5.0/docs/index.html)

➡️ 소프트웨어는 하드웨어를 제외한 컴퓨터 내의 모든 프로그램을 포괄하는 의미이며 이러한 소프트웨어의 구성을 큰 그림으로 표현한 것

➡️ 위 아키텍처를 통해서 Java가 어떤 기술을 지원하고 Java를 통해서 어떤 기능들을 사용할 수 있는지 등을 그림으로 볼 수 있음

 

🔎 애플리케이션 아키텍처

애플리케이션?
: 소프트웨어 종류의 하나, 좁게는 테스크톱이나 스마트폰에서 사용하는 응용 프로그램을 의미하고 넓게는 클라이언트의 요청을 처리하는 서버 애플리케이션 의미함

➡️ 다양한 유형 중 웹 애플리케이션과 관련된 계층형 아키텍처(N-티어)를 알아보자

 

➡️ REST API 기반 웹 애플리케이션의 계층은 크게 세 가지로 구분됨

  • API 계층(API Layer)
    • 클라이언트의 요청을 받아들이는 계층
  • 서비스 계층(Service Layer)
    • API 계층에서 전달받은 요청을 업무 도메인의 요구 사항에 맞게 비즈니스적으로 처리하는 계층 
    • 애플리케이션에 있어 핵심이 되는 계층
도메인(Domain)이란?
: 애플리케이션 개발에서 흔하게 사용하는 도메인은 주로 비즈니스적인 어떤 업무 영역과 관련 있음 
만약 내가 배달 주문 앱을 만든다고 했을 때 고객과 음식점, 배달원, 카드사 등 앱을 구현하기 위해 필요한 업무들을 자세히 알면 알수록 퀄리티가 높은 애플리케이션을 만들 가능성이 높음 
➡️ 즉 고객이 음식을 주문하는 과정, 주문받은 음식을 처리하는 과정, 조리된 음식을 배달하는 과정 등의 도메인 지식(Domain Knowledge)들을 서비스 계층에서 비즈니스 로직으로 구현해야하는 것 
  • 데이터 액세스 계층(Data Access Layer)
    • 비즈니스 계층에서 처리된 데이터를 데이터베이스 등의 데이터 저장소에 저장하기 위한 계층

 

💡 Spring Framework 모듈(Module) 구성

Spring Framework 모듈 아키텍처

(https://docs.spring.io/spring-framework/docs/5.0.0.M5/spring-framework-reference/html/overview.html)

 

2. Introduction to the Spring Framework

The Spring Framework is a Java platform that provides comprehensive infrastructure support for developing Java applications. Spring handles the infrastructure so you can focus on your application. Spring enables you to build applications from "plain old Ja

docs.spring.io

모듈(Module)이란?
: Java에서 일반적으로 지원되는 여러 가지 기능들을 목적에 맞게 그룹화하여 묶어 놓은 것 
Java의 패키지 단위로 묶여 있으며 이 패키지 안에는 관련 기능을 제공하기 위한 클래스들이 포함되어 있음
일반적으로 모듈은 재사용 가능하도록 라이브러리 형태로 제공되는 경우가 많음 

➡️ Spring Framework의 모듈 아키텍처를 통해 Spring이 어떤 기능을 지원하는지 알 수 있음 

 

>> 자세한 내용은 여기

 

 

💡 Spring Boot 란?

➡️ 엔터프라이즈 애플리케이션을 개발하기 위한 핵심 기능을 제공하는 Spring Project 중 하나

➡️ Spring의 복잡함으로 인해 생기는 문제점을 해결하기 위해 생겨난 Spring Project 중 하나

 

🔎 사용해야 하는 이유? 

  • XML 기반의 복잡한 설계 방식 지양
  • 의존 라이브러리의 자동 관리
    : Spring Boot의 starter 모듈 구성 기능을 통해 의존 라이브러리를 수동으로 설정해야 하는 불편함 사라짐
  • 애플리케이션 설정의 자동 구성
    : Spring Boot의 starter 모듈을 통해 설치되는 의존 라이브러리를 기반으로 애플리케이션의 설정을 자동으로 구성
    : 활성화하기 위해서는 애너테이션을 코드에 추가하면 됨
  • 프로덕션급 애플리케이션의 손쉬운 빌드
    : [bootjar] 명령을 통해서 jar 파일 생성하여 즉시 시작 가능한 애플리케이션 실행 파일로 사용
  • 내장된 WAS를 통한 손쉬운 배포
    : Spring Boot는 Apache Tomcat이라는 WAS를 내장하고 있기 때문에 별도의 WAS 구축 필요 없음 
    java -jar <jar 파일명>.jar’ 명령어 통해 애플리케이션 손쉽게 실행 가능
WAS(Web Application Server)란?
: 웹 애플리케이션과 서버 환경을 만들어 동작시키는 기능을 제공하는 프레임워크
: 인터넷 상에서 HTTP 통해 사용자 컴퓨터나 장치에 애플리케이션을 수행해 주는 미들웨어
: DB조회나 로직 처리를 요구하는 동적 컨텐츠를 제공하기 위해 만들어진 Application Server
➡️ Java 기반의 웹 애플리케이션을 배포하는 일반적인 방식은 개발자가 구현한 애플리케이션 코드를 WAR(Web application aRchive) 파일 형태로 빌드한 후에 WAS(서블릿 컨테이너)라는 서버에 배포해서 해당 애플리케이션을 실행할 수 있음 

➡️ 종류 : Apache Tomcat, ZEUS, IBM WebSphere 등 

내일부터는 본격적인 실습 시작! 한 번 더 내용들을 읽어보자!

BELATED ARTICLES

more