이롭게 현명하게

[IT 노트] 라이브러리와 프레임워크 본문

IT 노트

[IT 노트] 라이브러리와 프레임워크

dev_y.h 2023. 12. 8. 18:32
728x90
반응형


 

목차

 

라이브러리란

프레임워크란

차이점

장단점

 


 

[요약]

프레임 워크는 어떠한 것을 만들기 위해 주어진 환경이고 라이브러리는 어떤것을 만들기 위해서 주어진 도구이다.

프레임 워크는 양식, 라이브러리는 도구세트라고 생각하면 이해가 쉽다.

 


라이브러리, 프레임워크는 둘 다 다른 누군가가 작성한 코드이다.

프로젝트를 위해서 개발자들은 이것들을 가져다 사용한다.

라이브러리와 프레임워크는 모두 개발을 쉽게 할 수 있도록 도와준다.

이것들을 사용하지 않고 개발하기는 무척 어렵다.

 

라이브러리와 프레임워크는 사용하기가 쉽고 좋은 것만은 아니지만 최근 개발하는 것들은 모두 사용하고 있기 때문이다.

개발자의 인건비, 개발 일정 등을 고려한다면 처음부터 모든 것을 만드는 것은 비효율적인 것이 대부분이기 때문이다.

고급 개발자들이 충분히 주어져 있고 충분한 시간이 있다면 사용하지 않아도 되지만 그런 경우는 드물다.

중요하게 생각해야 할 것은 만들려는 소프트웨어와 적합한 라이브러리, 프레임워크를 잘 선택하는 것이 중요하다.

 

<이를 위해 고려해야 할 것>

  1. 만들려는 소프트웨어의 특성
  2. 각각의 라이브러리와 프레임워크 장단점
  3. 학습 시간
  4. 자유롭게 다룰 수 있는 개발자의 능력

 


[라이브러리란]

라이브러리란 정보의 저장소라고도 한다.

<라이브러리의 역할>

  • 부품이 되는 소프트웨어의 집합
  • 작은 기능들을 함수 단위로 만들어 제공

 

도구 상자가 라이브러리라면 망치, 톱, 줄자는 도구 상자가 제공해 주는 함수를 말한다.

망치는 강한 힘으로 무언가를 두드리는 힘을 제공한다. 즉, 기능을 제공한다.

못을 박을 수 있고 벽을 부술 수 있다. 망치를 두드리는 기능만을 제공한다.

어떻게 사용할지는 개발자가 결정한다.

 


[프레임워크]

프레임워크란 뼈대, 틀이라고도 한다.

<프레임워크의 역할>

  • 소프트웨어의 형식을 제공
  • 사용 규칙이 정해져 있다.

 

프레임워크는 이미 지어진 건물이다.

일정한 규칙에 따라 집을 채워나가야 한다.

정해진 숫자 이상의 주차 공간 확보, 소방법에 따른 비상구 확보 및 소화기 배치 등 집을 짓는 것에 비하면 매우 쉬운 일이다.

 

 

이미 완성된 집을 뜯어고치기는 상당히 어렵다.

이미 지어진 공간을 만든다거나 화장실을 옮기는 것은 상당히 큰 작업이다.

때에 따라 법에 어긋날 수 있다.

새로운 집을 찾아보는 것이 오히려 쉽다.

라이브러리는 가져다 사용하는 개념이라면 프레임워크는 제공된 틀 안으로 들어가 주어진 규칙을 지켜가며 사용하는 것이다.

 


[차이점]

라이브러리, 프레임워크를 구분하는 방법은 아주 간단한 개념이다.

'누가 누구를 제어하는가'가 핵심이다.

개발자가 코드를 제어하고 결정을 내리는 것인지 아니면 누군가 정해준 규칙,양식을 따라 하는 것인지가 다르다.

라이브러리의 예시로는 JQuery다. JQuery는 웹사이트에 상호작용하는 요소를 넣을 수 있다.

개발자가 웹 개발 중 JQuery가 필요할 때 사용한다. 코딩하다가 필요하면 JQuery를 부른다.

즉, "내가" 코딩한다. 이것이 라이브러리이다.

개발자가 필요할 때 라이브러리를 쓴다.

라이브러리는 쉽게 대체될 수 있다. 

개발자가 원하면 JQuery를 다른 것으로 대체할 수 잇으며, 프로젝트에 큰 영향이 생기지 않는다.

라이브러리는 시간을 절약하려고 사용하는 것이다.

하지만 프레임워크는 다르다.

"프레임워크"가 나를 부른다.

이것이 가장 명확한 라이브러리와 프레임워크의 차이점이다.

 

프레임워크로 개발한다면 프레임워크의 규칙을 따라야 한다.

프레임워크의 양식이 있다.

개발자가 코드의 규칙을 결정하는 것이 아니다.

프레임워크어떻게 사용해야 할 지 알려준다.

즉, 나에게 어떻게 사용하면 되는지 양식과 같은 규칙을 알려준다.

어디에 템플릿을 넣고 컨트롤러를 넣는지, 뷰를 넣고 규칙에 따라서 한다면 모든건 정상 작동한다.

개발자가 제어하는 것은 없다. 규칙을 따라갈 뿐이다.

프레임워크의 예시로 Django, Spring이 있다.

Django 웹 프레임워크는 규칙이 정말 많다. 잘 작동하려면 모든 규칙을 준수해야 한다.

예를 들면 Django에서 admin 패널을 만들고 싶다면 무조건 코드를 admin.py에 써야 한다.

만약 URL을 바꾸고 싶다면 반드시 파일명 url.py에 가야 한다.

Django는 시작할 때 url.py , admin.py를 읽기 때문이다.

개발자가 이것을 바꿀 수는 없다.

이것은 Django가 가지고 있는 규칙이기 때문이다.

이것을 잘 준수해야 admin 패널, url이 잘 작동한다.

Django 문서를 보면서 Django 규칙에 따라 코드들을 잘 넣어두면 Django가 그것을 실행시킨다.

프레임워크는 내가 반드시 따라야 하는 규칙이다.

라이브러리는 내가 필요할 때 사용한다.

  • 라이브러리 : "내가" 라이브러리를 부른다. Ex) A를 빌드하기 위한 A 라이브러리 -> 필요할 때마다 부를 수 있다.
  • 프레임워크 : "프레임워크"가 나를 부른다. Ex)A를 빌드하기 위한 프레임워크 -> 규칙과 문서가 따라온다. 내가 규칙을 따라야 한다.

 

프레임워크가 낚시터라면 라이브러리는 낚싯대이다.

애플리케이션의 UI를 빌드할 때 리액트를 부른다.

즉, "내가: 리액트를 부른다. 리액트는 라이브러리이다.

리액트는 폴더구조, 컴포넌트 명을 지켜야 하는 규칙이 없다.

하지만 "리액트"가 우리의 컴포넌트를 부른다.

그래서 이 경우에는 리액트를 프레임워크로 부를 수 있다.

리액트라 컴포넌트를 부르는 거니까 규칙을 알려주고 어떤 것이 잘못되었는지, 맞는지를 알려준다.

컴포넌트를 쓰면 리액트가 그것을 불러와서 화면에 보여준다.

어떤 사람들은 "내가" 필요할 때 부르니 이건 라이브러리이다.

또 어떤 사람들은 "리액트"가 컴포넌트를 불러오니 프레임워크라고 하는 사람이 있다.

하지만 리액트는 낚시터로도 사용할수 있고 낚싯대로도 사용할 수 있다.

리액트는 프레임워크라고도 할 수 있고 라이브러리라고도 할 수 있다.

 

하지만 Vue.js는 프레임워크로 '무조건 이렇게 개발해야 한다!" 라는 규칙이 있다.

 


[장단점]

<장점>

이미 만들어져 있는 것을 가져다 쓰기 때문에 개발이 편하고 개발 일정이 획기적으로 줄어든다.

검증된 라이브러리와 프레임워크를 사용하기 때문에 의도하지 못한 오류를 줄일 수 있다.

<단점>

사용법을 익혀야 할 시간이 필요하다.

집 구조를 바꾸기 어려운것 처럼 통제가 어렵다.

만들려는 소프트웨어의 성격이 맞지 않는 프레임워크를 사용해 개발을 진행하다 늦게 발견한다면 처음부터 다시 시작해야 할 수 있다. 그러므로 선택이 매우 중요하다.

프레임워크는 모든 경우를 고려해 만들어야 하므로 개발자가 구현하려는 기능과는 상관없는 프로세스들이 포함되어 있어 컴퓨팅 자원들이 필요 이상으로 소모될 수 있다.

 

 


잘못된 정보는 댓글에 남겨주시면 감사하겠습니다!😊

댓글과 좋아요는 큰 힘이 됩니다!

 

더보기

[ 참고자료 ]

 

https://www.youtube.com/watch?v=t9ccIykXTCM

https://www.youtube.com/watch?v=2Ja7wYIZEtI

 

<a href="https://www.flaticon.com/kr/free-icons/" title="타자 아이콘">타자 아이콘  제작자: Payungkead - Flaticon</a>

<a href="https://www.flaticon.com/kr/free-icons/-" title="공구 상자 아이콘">공구 상자 아이콘  제작자: pongsakornRed - Flaticon</a>

<a href="https://www.flaticon.com/kr/free-icons/" title="망치 아이콘">망치 아이콘  제작자: Freepik - Flaticon</a>

<a href="https://www.flaticon.com/kr/free-icons/" title="함수 아이콘">함수 아이콘  제작자: dDara - Flaticon</a>

<a href="https://www.flaticon.com/kr/free-icons/" title="도서 아이콘">도서 아이콘  제작자: surang - Flaticon</a>

<a href="https://www.flaticon.com/kr/free-icons/" title="회사 아이콘">회사 아이콘  제작자: Freepik - Flaticon</a>

<a href="https://www.flaticon.com/kr/free-icons/" title="형태 아이콘">형태 아이콘  제작자: Smashicons - Flaticon</a>

 

 

 

 

 

 

728x90
반응형
Comments