본문 바로가기

Spring

[Spring] Framework란?


Framework란?


Frame은 '틀'이라는 의미를, work는 '일하다'라는 의미를 가지고 있습니다.

이를 합쳐 '틀로 일하다'라는 뜻으로 제공받은 일정한 요소와 틀, 규약을 가지고 무엇인가를 만드는 것을 우리는 '프레임워크'라 부릅니다.

즉, 소프트웨어에서의 프레임워크는 "프로그램을 개발하기 위해 사용되는 틀을 제공하는 프로그램"이라 할 수 있습니다.

 

프레임워크의 장단점


프레임워크의 장점

  1. 효율적으로 코드를 작성할 수 있습니다.
    • 개발하고자 하는 애플리케이션을 처음부터 개발하는 것이 아닌, 여러 기능들을 라이브러리 형태로 제공함으로써 개발자가 애플리케이션의 핵심 로직을 개발하는 것에 집중할 수 있도록 해줍니다.
  2. 유지 보수가 쉽습니다.
    • 프레임워크의 규약에 맞게 코드를 작성하기 때문에, 유지보수가 필요한 경우 더 빠르고 쉽게 문제점을 파악해 수정할 수 있습니다. 

프레임워크의 단점

  1. 학습시간이 필요합니다.
    • 프레임워크의 사용법을 익혀야 하기 때문에 학습할 시간이 필요합니다.
    • Spring의 경우 Java언어에 대한 이해도 필요하지만 추가로 Spring이라는 프레임워크에 대한 학습이 필요합니다.
  2. 자유롭고 유연한 개발이 어렵습니다.
    • 이미 만들어진 애플리케이션에서 프레임워크를 변경하거나, 유연한 개발을 위해 프레임워크를 사용하지 않게 변경할 경우 많은 시간과 노력이 필요합니다. 

 

프레임워크와 라이브러리의 차이


프레임워크와 라이브러리의 차이는 제어 흐름에 대한 주도성이 누구에게/어디에 있는가에 있습니다.

즉, 애플리케이션의 Flow(흐름)를 누가 쥐고 있느냐에 달려 있습니다.

프레임워크는 전체적인 흐름을 스스로가 쥐고 있으며, 사용자는 그 안에서 필요한 코드를 짜 넣으며 반면에 라이브러리는 사용자가 전체적인 흐름을 만들며 라이브러리를 가져다 쓰는 것이라고 할 수 있습니다.

 

다시 말해, 라이브러리는 라이브러리를 가져다가 사용하고 호출하는 측에 전적으로 주도성을 가지고 있으며, 프레임워크는 그 틀 안에 이미 제어 흐름에 대한 주도성을 가지고 있습니다.

 

자세히 설명한다면, 라이브러리를 사용하는 애플리케이션 코드는 애플리케이션의 흐름을 직접 제어합니다.

단지 동작하는 중에 필요한 기능이 있을 때 능동적으로 라이브러리를 사용할 뿐입니다.

 

반면, 프레임워크는 거꾸로 애플리케이션 코드가 프래임워크에 사용되는 것입니다.

보통 프레임워크 위에 개발한 클래스를 등록해 두고, 프레임워크가 흐름을 주도하는 중에 개발자가 만든 애플리케이션 코드를 사용하도록 만드는 방식입니다.

 

프레임워크에 분명한 제어의 역전 개념이 적용되어 있어야 합니다.

애플리케이션 코드는 프레임워크가 짜놓은 틀에서 수동적으로 동작해야 합니다.

 

제어의 역전


제어의 역전이란 어떠한 일을 하도록 만들어진 프레임워크에 제어의 권한을 넘김으로써 애플리케이션 코드가 신경 써야 할 것을 줄이는 전략입니다.

라이브러리는 프로그래머가 작성하는 애플리케이션 코드가 라이브러리의 메서드를 호출해서 사용하지만,

프레임워크에서 규정하는 특성은 프레임워크의 메서드가 사용자의 코드를 호출합니다.

 


Reference


https://webclub.tistory.com/458

 

'Spring' 카테고리의 다른 글

[Spring] Spring 환경 구성  (0) 2023.03.31
[Spring] Spring Framework란?(4)  (0) 2023.03.30
[Spring] Spring Framework란?(3)  (0) 2023.03.29
[Spring] Spring Framework란?(2)  (0) 2023.03.29
[Spring] Spring Framework란?(1)  (0) 2023.03.28