토비의 스프링 부트 - 스프링 부트 살펴보기

2023. 3. 31. 22:24·공부/Spring
반응형

출처 : 인프런

 

스프링 부트 소개

스프링 부트는 스프링을 기반으로 실무 환경에 사용 가능한 수준의 독립실행형 애플리케이션을 복잡한 고민 없이 빠르게 작성할 수 있게 도와주는 여러가지 도구의 모음이다. 즉, 스프링 부트는 스프링을 기반으로 한 프레임워크이자 라이브러리이다. 

 

프레임 워크

소프트웨어 개발자가 응용 소프트웨어의 표준 구조를 구현하기 위해 사용하는 소프트웨어 프레임워크로 구성된다. 즉, 프로그래밍에서 특정 운영체제를 위한 응용 프로그램 표준 구조를 구현하는 클래스와 라이브러리의 모임이다.

재사용할 수 있는 수많은 코드를 프레임워크로 통합함으로써 개발자가 새로운 애플리케이션을 위한 표준 코드를 다시 작성하지 않아도 된다.

- 출처 : 위키백과

 

라이브러리

주로 소프트웨어를 개발할 때 컴퓨터 프로그램이 사용하는 비휘발성 자원의 모임이다. 여기에는 구성 데이터, 문서, 도움말 자료, 메시지 틀, 미리 작성된 코드, 서브루틴(함수), 클래스, 값, 자료형 사양을 포함할 수 있다.

- 출처 : 위키백과

 

스프링 부트의 핵심 목표

  • 매우 빠르고 광범위한 영역의 스프링 개발 경험 제공
  • 강한 주장을 가지고 즉시 적용 가능한 기술 조합을 제공하면서, 필요에 따라 원하는 방식으로 손쉽게 변형 가능
  • 프로젝트에서 필요로 하는 다양한 비기능적인 기술(내장형 서버, 보안, 메트릭, 상태 체크, 외부 설정 방식 등) 제공
  • 코드 생성이나 XML 설정을 필요로 하지 않음

 

 

 

Containerless

Containerless는 Serverless와 유사한 의미를 가진다. Serverless는 개발자가 서버의 설치 및 관리를 신경쓰지 않고 서버 애플리케이션을 배포 및 운영할 수 있게 만드는 것을 말한다. 그러나 완전히 같은 의미는 아니기 때문에 일단 Container가 무엇인지 알아보자.

 

Container

일반적으로 웹 프로그램을 개발한다는 건 웹 컴포넌트를 만드는 것이다. 웹 컴포넌트는 주로 동적 콘텐츠를 생성하는데 사용된다. 또한 항상 웹 클라이언트를 필요로한다. 즉, 웹 컴포넌트는 웹 클라이언트로부터 요청을 받아 동적 콘텐츠를 생성한다. 그리고 그 요청에 대한 응답을 웹 클라이언트에게 보내준다.

이 웹 컴포넌트는 독립적으로 존재하지 못하고 항상 웹 컨테이너 안에 들어가있어야 한다. 웹 컨테이너는 웹 컴포넌트를 관리하는 역할을 한다. 웹 컴포넌트의 라이프 사이클을 관리한다. 그리고 웹 컨테이너는 단 하나의 웹 컴포넌트를 관리하는 것이 아니라 여러 개의 서비스를 제공하는 웹 컴포넌트들을 관리할 수도 있다. 웹 클라이언트에게서 요청이 오면 어떤 서비스를 제공하는 웹 컴포넌트에게 이 요청을 전달할지를 결정해 알맞은 웹 컴포넌트에게 요청을 전달한다. 이런 기능을 라우터 혹은 매핑 기능이라한다. 이 웹 컴포넌트는 자바 쪽 용어로 설명하면 서블릿이 된다. 웹 컨테이너는 서블릿 컨테이너이다. 이 구성은 90년대 초반 구성이다. 오래된 만큼 불편한 점이 많았던 이 방식은 스프링이 도입되면서 구성이 달라졌다.

스프링도 하나의 컨테이너이다. 서블릿 컨테이너 뒤쪽에 스프링 컨테이너가 붙고, 그 안에 서블릿처럼 특정 기능을 담당하는 Bean이라는 컴포넌트들이 자리잡고 있다. 스프링 컨테이너는 서블릿 컨테이너를 통해 들어온 요청을 전달받아 특정 기능을 하는 Bean에게 전달해 요청을 처리한다. 중요한 점은 아무리 간단한 웹 프로그램이라도 무조건적으로 서블릿 컨테이너도 동작해야한다. 서블릿 컨테이너를 실행하려면 다양한 설정들을 해야하며, 톰캣같이 자주, 많이 사용하는 서블릿 컨테이너 외에  새로 접하는 서블릿 컨테이너 프로그램은 따로 공부까지 해야 사용할 수 있다.

즉, Containerless는 서블릿 컨테이너를 사용하지 않는게 아니라 서블릿 컨테이너를 사용하긴 하지만 개발자들이 서블릿 컨테이너를 사용하기 위한 설치 및 환경 설정, 사용 방법에 대한 공부와 같이 부수적으로 따라오는 수고들을 덜 수 있도록한다는 의미이다.

 

 

 

Opinionated

스프링 프레임워크의 설계 철학

  • 극단적인 유연함 추구
  • 다양한 관점 수용
  • Not opinionated
  • 수많은 선택지 포용

 

스프링 부트의 설계 철학

  • Opionionated - 자기 주장이 강한, 자기 의견을 고집하는, 독선적인
  • 일단 정해주는 대로 빠르게 개발하고 고민은 나중에
  • 스프링을 잘 활용하는 뛰어난 방법 제공

 

사용 기술과 의존 라이브러리 결정

  • 업계에서 검증된 스프링 생태계 프로젝트, 표준 자바 기술, 오픈소스 기술의 종류와 의존관계, 사용 버전 정해줌
  • 각 기술을 스프링에 적용하는 방식(DI 구성)과 디폴트 설정값 제공

 

유연한 확장

  • 스프링 부트에 내장된 디폴트 구성을 커스터마이징 하는 매우 자연스럽고 유연한 방법 제공
  • 스프링 부트가 스프링을 사용하는 방식을 이해한다면 언제라도 스프링 부트를 제거하고 원하는 방식으로 재구성 가능
  • 스프링 부트처럼 기술과 구성을 간편하게 제공하는 나만의 모듈 작성 가능

 

 

 

스프링 부트의 이해

스프링 부트를 이용한 개발의 오해와 한계

  • 애플리케이션 기능 코드만 잘 작성하면 된다
  • 스프링을 몰라도 개발을 잘 할 수 있다
  • 스프링 부트가 직접적으로 보여주지 않는 것은 몰라도 된다
  • 뭔가 기술적인 필요가 생기면 검색을 해서 해결한다

 

스프링 부트를 이해하게 되면

  • 스프링 부트가 스프링의 기술을 어떻게 활용하는지 배우고 응용할 수 있다
  • 스프링 부트가 선택한 기술, 자동으로 만들어주는 구성, 디폴트 설정이 어떤 것인지 확인할 수 있다
  • 필요할 때 부트의 기본 구성을 수정하거나, 확장할 수 있다
  • 나만의 스프링 부트 모듈을 만들어 활용할 수 있다

 

 

 


- 출처 : 인프런 토비의 스프링 부트 - 이해와 원리 강의

반응형
저작자표시 비영리 변경금지 (새창열림)
'공부/Spring' 카테고리의 다른 글
  • 토비의 스프링 부트 - 독립 실행형 서블릿 애플리케이션
  • 토비의 스프링 부트 - 스프링 부트 시작하기
  • Spring Cloud로 개발하는 마이크로서비스 애플리케이션_Catalogs and Orders Microservice_4
  • Spring Cloud로 개발하는 마이크로서비스 애플리케이션_Catalogs and Orders Microservice_3
데부한
데부한
어차피 할 거면 긍정적으로 하고 싶은 개발자
    반응형
  • 데부한
    동동이개발바닥
    데부한
  • 전체
    오늘
    어제
    • 분류 전체보기 (307)
      • 방통대 컴퓨터과학과 (27)
        • 잡담 (9)
        • 3학년1학기 (17)
      • 프로젝트 및 컨퍼런스 회고 (1)
        • 프로젝트 (4)
        • 한이음 프로젝트 (0)
        • 회고 (3)
      • 공부 (165)
        • Spring (37)
        • JPA (71)
        • 인프런 워밍업 클럽_BE (10)
        • Java (6)
        • React.js (27)
        • 넥사크로 (11)
        • 기타 (3)
      • 알고리즘 (85)
        • 알고리즘 유형 (10)
        • 알고리즘 풀이 (57)
        • SQL 풀이 (18)
      • 에러 해결 (13)
      • 잡담 (7)
        • 국비교육 (2)
        • 구매후기 (5)
        • 진짜 잡담 (0)
  • 블로그 메뉴

    • Github
    • Linkedin
    • 홈
    • 방명록
    • 글쓰기
    • 관리
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    자바스크립트
    프론트엔드
    oracle
    에러해결
    넥사크로
    코딩테스트
    egov
    기출문제
    알고리즘
    react
    토비의스프링부트
    Java
    SpringBoot를 이용한 RESTful Web Service 개발
    MSA
    SQL
    인프런
    IT
    springboot
    운영체제
    JPA
    방통대
    전자정부프레임워크
    QueryDSL
    개발자
    스프링부트
    프로그래머스
    Spring
    RESTful
    백준
    토이프로젝트
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
데부한
토비의 스프링 부트 - 스프링 부트 살펴보기
상단으로

티스토리툴바