🐯
경민민 IT 핸드북
  • Orientation
    • 전달사항
    • 복습방법
    • 수료한 선배의 한마디
    • 간단 자기소개
    • 스터디
  • 백엔드
    • Java
      • 1장 프로그래밍 기초
      • 2장 자바 메모리구조
        • 1. Stack
        • 2. Heap
      • 6장 객체
      • 8장 상속
      • 9장 다형성
      • 10장 추상클래스와 인터페이스
      • 13장 Generic
      • 14장 Thread
      • 15장 Network
      • 16장 Lamda
        • 1. 내부 클래스 (Inner Class)
          • DTO , VO, Builder Pattern
        • 2. 람다 표현식 (Lambda Expression)
        • 3. 스트림 API (Stream API)
          • Optional
      • 17장 Enum
  • 프론트
    • Node.js
    • Java Script
      • ES6+
        • Node.js로 자바스크립트 실행
        • let , const , var
        • Destructuring문법
          • Rest(...) 문법
        • Arrow Function
        • 모듈
        • ETC
    • Type Script
      • 개요
      • TS설치 및 환경설정
      • 타입스크립트 기본
        • 기본 자료형들과 타입추론
        • Object, Array , Tuple
        • Any, Unknown, Union Type
        • Function Type
          • Type Assertion && Narrowing
          • Never type
        • Type Aliases와 Interface
        • 리터럴 타입
        • 함수 추가 문법
        • Class문법
        • 객체 타입 추가 문법
        • 실습문제 1차
        • 실습문제 2차
        • 실습문제 3차
    • React
      • 개요
      • SPA 와 MPA
        • SEO(작성예정)
      • 리액트 프로젝트 생성(18.3.1.ver)
        • HTML + react 샘플
        • CRA 와 Vite 비교
      • 리액트 개념들
        • Component
          • 클래스 컴포넌트(작성예정)
          • 함수형 컴포넌트(작성예정)
        • JSX
        • React Virtual Dom
          • Reconciliation
        • hook
          • useState
        • 리액트 데이터 전달
          • FLUX
      • 백엔드 서버 연동
        • 비동기요청
        • 웹소켓
        • Promise(작성예정)
      • 실습문제 1
      • 실습문제 2
      • 실습문제3
      • 실습문제4
  • 프레임워크
    • Spring
      • Spring 개발환경 구축
        • 프로젝트 환경설정
        • 프로젝트 생성
          • MVC Project 생성이슈
        • Maven 설정
        • web.xml 설정
        • Spring Bean Configuration.xml 설정
      • Spring Legacy Project
        • Spring 요청 및 응답 흐름
        • Spring 주요 Annotation
          • 의존성 주입방식의 차이점
          • @ModelAttribute와 유효성검사
          • 비동기처리
          • 스프링 예외처리
        • Logging
        • Pagination
        • Spring File 업로드 및 다운로드
        • Spring WebSocket
        • Spring AOP
      • Spring 라이브러리들(작성예정)
        • Lombok
        • Maven
        • MyBatis
      • Spring 구성 모듈(작성예정)
      • 스프링 과제
    • Spring Boot
      • Spring Boot 개발환경 구축
      • 스프링 부트 프로젝트 생성방법들
        • 프로젝트에서 사용하는 의존성들
      • 스프링 프로젝트 구조
        • SpringBootApplication
      • application.properties
      • Cross Origin
        • CORS
      • WebSocket
        • Stomp(작성중)
      • 로그인(작성중)
      • Spring Security(작성중)
      • 실습문제 Select
      • 실습문제 Update
      • 실습문제 Delete
  • 형상관리(Git)
    • GitHub설정
    • SourceTree를 활용한 깃허브 연동
      • 소스트리 설치
      • Clone
      • Branch
        • Branch Protection rules
          • Branch Protection Rules 상세규칙
        • Rebase 와 Squash (작성예정)
      • Team Project 설정
        • 팀장 프로젝트 셋팅
          • Collaborator
          • .gitignore 설정
        • 팀원 프로젝트 셋팅
        • 공통 프로젝트 진행
  • 프로젝트
    • 진행순서
      • 요구사항 분석 단계
        • 유용한 사이트
      • 프로그램 설계 단계
        • 유용한 사이트
      • 프로그램 구현단계
        • SourceTree를 활용한 Team Project설정
      • 테스트 단계
  • 배포
    • AWS-EC2 배포 연습
    • DevOps
      • IT시스템의 변화와 DevOps
      • DevOps 라이프사이클
    • 젠킨스
      • 도커
        • 도커 설치 방법
        • 도커 기본 명령어들
      • 젠킨스 설치
      • 젠킨스 프로젝트 생성
      • 젠킨스 소스코드 통합 - Github
      • 젠킨스 빌드 설정 - Maven
      • 배포 서버 구축하기
      • 파이프라인 구축
      • AWS 서버 생성
        • AWS 인스턴스 생성
        • AWS - Zenkins 연동
        • AWS - 배포서버 연동
        • AWS - Jenkins CI/CD파이프라인 구축
  • 유용한 사이트 모음
  • SQL
    • SQLD
      • 데이터 모델링의 이해 - 스키마
      • 데이터 모델링의 이해 - ERD
      • 데이터 모델링의 이해 - 정규화
      • 데이터 모델링의 이해 - NULL
      • SQL 기본 및 활용 - WINDOW FUNCTION
    • Oracle
      • 1장 개요
      • 2장 SQL
  • LLM 서비스
    • 1장 LLM에 대한 이해
    • 2장 프롬프트 엔지니어링
      • 프롬프트와 프롬프트 엔지니어링
      • GPT PlayGround
      • 프롬프트 작문 유형
      • 기본 프롬프트 엔지니어링 태크닉
      • 고급 프롬프트 엔지니어링 태크닉
        • ReAct Prompting
        • Active-Prompt
        • Reflexion
        • Graph Prompt
      • OpenAI API설정
      • OpenAI를 활용한 프롬프트 엔지니어링 실습
        • 실습 프롬프트
    • 3장 Lang Chain 프레임워크
      • LangSmith 프레임워크
        • LangSmith를 활용한 LangChain 모니터링 설정
      • LangChain 실습 1 - Prompt
        • 실습 코드
      • LangChain 실습 2 - LLM 캐시와 메모리
    • 4장 RAG
      • Document Loader - 문서 로더
      • Text Splitter - 텍스트 분할
      • Embedding - 임베딩
      • Vector Store - 벡터 저장소
      • Retriever - 검색기
      • ReRanker - 재평가자
      • RAG
Powered by GitBook
On this page
  • Intro - Spring Framework의 단점
  • Spring Boot
  • Spring Boot의 단점
  • 결론
  1. 프레임워크

Spring Boot

스프링부트에 대해 알아볼 페이지

Previous스프링 과제NextSpring Boot 개발환경 구축

Last updated 9 months ago

Intro - Spring Framework의 단점

여러분 혹시 Spring Framework 처음 수업을 들었을 때 기분이 어떠셨나요.

스프링 프레임워크를 구동하기 위한 설정정보를 직접 수정하고, 서버를 직접 설치하고, 필요한 의존성들을 추가했던 그런 작업들을 할때요. 굉장히 복잡하고 할게 많다라는 생각이 드시지 않았나요?

내가 원하는 프로젝트를 하나 만들기 위해 건드려야하는 설정정보들이 워낙 많고 복잡하다보니 Spring에서부터 많은 학생분들이 진입장벽을 느끼고 포기하고는 하죠.

Spring 프레임워크는 유연한 설계로 높은 확장성을 가졌지만, 어플리케이션을 구성하는데 필요한 설정정보나, 의존성들에 대한 지식이 없다면 프로젝트 진행이 불가능할 정도로 힘이 듭니다.

설정에 필요한 다양한 의존성을 직접 추가해줘야 하거든요. 개발에 필요한 설정이나 의존성정보는 메뉴얼을 통해 확인이 가능하긴 하지만 Spring을 활용한 어플리케이션 개발을 위해 Spring Framework 자체에 대해 공부해야할 내용이 너무나 많아지는 단점이 있습니다.

Spring Boot

Spring Boot는 이러한 기존 Spring Framework의 복잡성을 간소화하여 개발자가 쉽고 빠르게 개발 및 배포를 가능하도록 만든 Spring Framework 기반의 프레임워크입니다.

Spring Boot에서는 하나의 어노테이션으로 수많은 설정을 자동으로 적용시키거나, 개발을 위해 필요한 의존성들을 모두 하나의 의존성에 모아두거나, 내장서버를 제공하여 개발자가 직접 서버를 추가할일이 없게 만들고 , 애플리케이션을 관리하는 xml파일들을 properties 및 yml파일로 간단하게 관리할 수 있도록 만들었습니다.

즉 개발자가 프레임워크에 대한 설정에 너무 많은 시간을 쏟을 필요 없이 개발에만 집중할수록 개발편의성을 크게 증가시킨 Spring Framework의 확장판입니다.

Spring Boot는 이렇게 Spring 기반으로 만들어 졌기 때문에 동일한 Spring에서 배운 @Controller, @Service등 동일한 어노테이션을 사용하고 있습니다. 그 밖에 설정에 필요한 추가적인 어노테이션만 배우면 되므로 Spring개발에 익숙하다면 큰 무리 없이 Spring boot를 사용할 수 있을 겁니다. 아마도요.

Spring Boot의 단점

스프링부트도 사실 단점이란게 존재합니다. 스프링부트가 기존 Spring에 비해 많은 장점을 가지고 있는건 사실이지만 단점도 존재하며, Spring이 스프링부트에 비해 우월한점도 분명 존재합니다.

단점은 뭐가 있을까요?

사실 위에 설명드린 스프링부트의 특징들이 장점이자 곧 단점입니다. 우선 하나의 어노테이션으로 기본설정이 자동으로 적용된다고 했는데, 다양한 어노테이션을 통해 자동설정을 과도하게 사용하면 성능상의 이슈나 예상치 못한 동작으로 개발에 어려움이 발생할 수 있습니다. 또한 웹 개발에 필요한 의존성을 모두 하나의 의존성에 모아두었는데 이 안에는 어플리케이션 개발에 불필요한 의존성이 존재할 수 도 있습니다. 그밖에도 기본설정으로 인한 설정 커스터마이징이 힘들다거나, 기능과부하에 의한 과도한 리소스 사용 등 여러 단점이 존재합니다.

결론

이러한 단점을 해결하기 위해서는 사실 개발자가 직접 최적화된 설정을 수행해야합니다. 즉 최적화된 Spring 어플리케이션을 만들려면 Spring Framework로, 빠르게 프로덕션 레벨의 어플리케이션을 제작하려면 Spring Boot를 이용하시면 되겠습니다. 아래 학습을 위한 스프링부트 메뉴얼 사이트를 첨부합니다.

END

Spring Framework Documentation :: Spring Framework
spring framework 메뉴얼
Logo
Spring Boot
Logo
Spring boot
spring 진짜 쉬워요
출처 :
https://devrant.com/rants/1867059/spring-vs-spring-boot