안녕하세요😎 백엔드 개발자 제임스입니다 :)
오늘부터 자바 기반의 프레임워크인 스프링에 관련한 내용들을 정리하려고 합니다. 스프링은 현재 다방면으로 활용되고 있는 기술입니다. 저 또한 이전에 스프링을 활용하여, 웹 서버를 개발한 경험이 있는데요. 아직 지식이 부족함에도 불구하고, [JPA, Servlet, JDBC]를 사용할 때보다 더 많은 편리함을 느꼈습니다. 과장해서 신세계를 경험했다고 해도 과언이 아닙니다.
위 같은 경험을 바탕으로 스프링의 필요성을 느꼈는데요. 그래서 이제는 이론적인 부분을 정확하게 습득하고, 기록하려고 합니다.
1. Framework는 무엇일까?
스프링에 대해서 정리하는데, 갑자기 프레임워크에 대해서 물어보는 이유는 무엇일까요?
그 이유는 스프링은 스프링 프레임워크(Spring framework)를 줄여서 부르는 말이기 때문입니다. 그렇다면 프레임워크는 무엇일까요?
먼저 Frame의 사전적 의미는 '뼈대', '틀', '구조' 입니다. 가령 그림이나 사진 등의 액자를 프레임이라 부르며, 자동차의 뼈대를 자동차 프레임이라고 합니다. 즉, Framework는 프로그래밍을 하기 위한 어떠한 틀이나 구조를 말합니다.
그래서 스프링 프레임워크는 웹 또는 어떠한 개발을 위한 프로그래밍 구조를 제공하는 것이죠. 조금 추상적일 수도 있습니다. 스프링의 자세한 내용은 다음에 더 알아보도록 하겠습니다.
* Java 에서 사용되는 Framework 개념
- Collections Framework : 자주 사용하는 자료구조를 바탕으로 비슷한 유형의 데이터들을 가공 및 처리하기 쉽도록 표준화된 방법을 제공하는 클래스의 집합
- 주로 추상 메서드만 정의된 인터페이스(Interface) 형태
왜 Framework 를 만드는가?
' 배보다 배꼽이 크면 안 된다!'
반복적이고, 부수적인 부분에서 시간을 투자하는 것을 방지하기 위함.
위 같은 기능들을 Framework가 라이브러리 형태로 제공함으로써, 핵심 비즈니스 로직을 개발하는데 집중시킴.
2. 프레임워크(Framework)와 라이브러리(Library)의 차이
프레임워크와 라이브러리의 차이는 무엇일까요? : 프레임워크를 학습하면, 가장 많이 듣게 되는 질문입니다.
라이브러리 : 비휘발성 자원의 모임, 도서관, 다시 사용할 수 있는 부품(도구)
이 둘의 차이를 쉽게 이해하기 위해, 라이브러리를 도서관이라고 생각하겠습니다. 우리는 어떠한 지식이 필요하다면, 도서관에서 책을 찾아 읽습니다. 또는 해당 지식을 습득하고, 사용하죠. 소프트웨어의 라이브러리도 유사합니다. 조금 다르다면, 현실의 도서관은 온갖 종류의 책들이 모여있는 반면, 소프트웨어의 라이브러리는 특정 주제의 책들이 모여있는 느낌입니다.
가령 개발을 진행하면서 PDF 파일을 읽고 변환하는 기술을 사용하고 싶을 때, PDF를 읽는 특정한 라이브러리를 활용할 것입니다.
이제 프레임워크와 라이브러리를 비교하면서 알아볼까요?
프레임워크는 위에서 말했듯이 뼈대(틀, 구조)입니다. 반면 라이브러리는 도구의 모음입니다. 아래에서 자동차를 빗대어 보도록 하겠습니다.
위에서 보다시피 프레임워크는 자동차의 틀이 주어지는 것입니다. 여기에는 규칙(틀)에 맞게만 조립한다면, 어떠한 것을 붙여도 결국 자동차의 형태, 기능을 유지합니다. 반면 라이브러리는 자동차의 부품들인 것을 알 수 있는데요. 여기서는 어떠한 부품을 사용해도 무관하지만, 자동차의 형태가 나올 것이라고 장담할 수 없습니다. 필요한 부품을 가져다가 사용하는 느낌이죠.
#요약
- 프레임워크(Framework) : 특정 프로그램을 개발하기 위한 여러 요소들과 메뉴얼인 틀, 룰을 제공
- 라이브러리(Library) : 프로그램을 개발하기 위해 사용하는 도구, 부품
- 차이점 :
- 프레임워크는 정해진 규칙, 룰, 방향성이 있음. 반면, 라이브러리는 필요에 맞게 사용(자유)
- 프레임워크는 결국 정해진 형태와 기능이 있음.
'개발 > Spring&JPA' 카테고리의 다른 글
[JPA] Spring Data JPA의 DB 초기화 (2) | 2022.10.02 |
---|---|
[스프링] 백엔드 개발자의 필수 과제, '순환 참조(Circular Reference)' 문제 해결 (4) | 2022.09.18 |
[JPA] JPA에서 Spring Data의 Audit 기능 적용하기 (2) | 2022.09.07 |
[보안/인증] CSRF 로 인해서, 403에러가 발생했을 때 (6) | 2022.08.20 |
[스프링] 스프링 프레임워크란, 기본 개념 정리 (4) | 2021.11.13 |