2 분 소요

‘프레임워크’

: 밑바닥에서부터 코드를 일일히 작성 안해도 이미 개발된 코드의 큰 단위들을 받아 대규모의 프로젝트를 효율적으로 개발가능


SW Framework : SW 개발을 효율적으로 하기위한 반제품

-> 특정 분야(웹 개발, 앱개발, 임베디드 개발) 의 SW 개발에 필요한 공통기능 제공

-> 개발자는 Framework 위에 필요한 기능을 추가해 전체 어플리케이션 완성


Web Framework : Web 개발을 위한 반제품

=> Web 어플리케이션에 필요한 공통기능 제공

(Web 어플리케이션에 필요한 공통기능 : 보안, HTTP 요청처리, DB 연동 등의 기능을 미리 만들어 제공)

=> 사용자는 이 Framework 위에 서비스에 필요한 비즈니스 로직만 구현해서 올리면


Library vs Framework

공) 재사용 가능한 미리 구현된 코드(모듈) 제공 / 특정 목적을 위해 구현된 코드를 사용함으로써 효율적인 개발 가능

차) ‘SW 제어의 흐름을 누가 결정하는가 ‘

  • Library : 제어권 사용자 코드에 있음 -> 내 코드 가 프로그램 흐름이고 그 위에서 라이브러리 함수호출

  • Framework : 제어권 Framework에 있음

-> Framework을 실행하면 그 실행부터 종료까지 그 흐름이 해당 Framework에서 정해준대로 결정됨

-> 우리가 그 위에 적절한 메서드를 추가하여 우리 코드가 약속된 시기, 순서에 호출되서 실행되게 되는거임 (그래서 우리 코드가 언제 사용되는지 확인 어려운 경우 많음 대뜸 우리 코드 위해 controller 붙이면 controller가 호출되는 순서에 우리 코드가 호출되는거임 <-> 우리가 컨트롤러가 호출되는 순서나 흐름을 짜지 않았잖아?)

ㄴ 처음 Framework를 학습할 땐 전체그림이 그려지지 않음 : 설정 한줄 , 메소드 하나 추가했을뿐인데 어떻게 이렇게 동작하지? 이 메서드를 언제 왜호출해주는가 ?


Framework 공부법

  1. Framework가 제공하는 계약(약속) 하나씩 이해

    당신이 특정 위치에 특정 방식으로 코드 추가하면 그 코드는 이런 의미고 나는 이렇게 동작합니다!

  2. Framework의 내부동작 매커니즘 이해
스프링 프레임워크 장/단점

나한테 맞는 프레임워크를 선택해서 습득하는 건 오래걸림, 그렇다면 그 선택이 스프링인데의 장점?

<-> 하나의 프레임워크만 제대로 해도 된다

  1. 방대한 프로젝트 : 22개의 카테고리의 수백개의 프로젝트 보유

-> 대규모 웹 개발/ 운영을 위한 거의 모든 기술을 제공

  1. 끊임없는 개선

    최근 sw시스템은 점점 거대 + 복잡

    -> 더 나은 sw 시스템을 위한 다양한 기술과 아키텍쳐 대두 ex) 마이크로서비스 아키텍처, NoSQL, 클라우드 컴퓨팅 및 컨테이너

    ㄴ 이런 기술들에 대응해 빠르게 새로운 프로젝트 출시 ex) Spring Cloud, Spring Native

  • 단점
  1. 높은 러닝커브 (배우기 힘들고 어려움)

  2. 복잡한 설정

    “Spring framework은 xml 지옥이다”

    ㄴ 간단한 웹 애플리케이션 개발 위해서도 상당한 수준의 설정이 필요

    <-> Spring Framework은 무겁다, 대기업에서 쓸만한 기술이다

    BUT! Spring Boot가 출시되며 단번에 문제 해결 : 자동화 된 설정(xml 대신) , 간편화 된 의존성 관리 등 (‘모던화된 프레임워크’)

  3. Bean, DI, AOP, 객체지향 설계, 디자인 패턴 등 다양한 개념이해 필요

​ ㄴ Spring Framework은 엔터 프라이즈급 대규모 서비스 개발을 위한 목적으로 개발됨

​ –> 이 큰 서비스를 유연한 확정성을 위해 다양한 기술이 내포될수 밖에


스프링 부트란?

‘easy’ ‘just run’

Spring framework을 기반으로! 이 Spring Framework를 보다 손쉽게 활용할 수 있게 지원하는 기술,즉 프로젝트

ㄴ 설정, 의존성 관리, 애플리케이션 모니터링, 서버의 실행 등을 가볍고 빠르게 수행 가능

  • 설정 간편화를 위한 Auto Configuration
  • 의존성 관리를 위한 Starter Project
  • 배포 프로세스 간소화를 위한 Embedded WAS
  • 애플리케이션의 모니터링을 위한 Actuator


스프링부트는 스프링을 사용하는 방법에 대한 ‘강한 의견’이 반영된 프레임

=> 잘 활용하려면 이 강하게 반영되어있는 스프링 사용방법(동작 방식)을 정확히 이해해야함

화면 캡처 2024-03-20 180327

댓글남기기