라이브러리와 프레임워크, 알면서도 모르겠는 그 단어

Suxxzzy.log·2022년 2월 25일
0

라이브러리와 프레임워크

섹션 2를 수강하면서, 라이브러리와 프레임워크라는 말을 간간히 접했던 기억이 난다.
그런데 아 그냥 그런가 보다 하고 넘어가고 당장 신택스를 공부하는데만 급급하다는 핑계로 이 용어들의 뜻이 뭔지 제대로 알지도 않고 넘어갔었는데, 이번에 제대로 정리를 하려고 한다.

블로그 포스팅들을 여럿 검색해 보면서 알게 된 라이브러리와 프레임워크는 다음과 같이 정리를 할 수 있다.

라이브러리란 무엇일까?

결론부터 이야기하면 프로그래밍 중 자주 사용하는 기능들을 함수로 만들어서 도서관처럼 모아둔 것이라고 한다.
도서관에 비유하자면 자주 쓰는 기능들을 책으로 만들어서 필요할 때마다 개발자가 꺼내쓰는 것이라고 한다.
그냥 용어의 정의만 보고 있자니 잘 와닿지 않는 것 같아서 예시에 어떤 것들이 있는지 찾아보니, 리액트가 라이브러리 중 하나라고 한다.
공식 홈페이지에서는 JS 라이브러리라고 소개를 하고 있었는데, 필요할 때마다 개발자가 useState, useRef 같은 Hook 들을 사용해서 원하는 컴포넌트를 만들어나가니까 라이브러리라는 이름이 붙은 것이 아닌가.. 하는 생각이 들었다.

그렇다면 프레임워크는 뭔데?

프레임워크도 먼저 단어의 뜻부터 설명하자면, 개발자가 넣고자 하는 기능을 이미 정해진 틀에 맞추어서 넣어 완전한 하나의 프로그램을 만들도록 하는 일종의 틀이라고 한다. 따라서 라이브러리와는 달리 원할 때 필요한 기능만 가지고 만들 수 없다. 왜냐하면 프레임워크는 프레임워크에 설계된 틀에 맞춰야만 프로그램이 작동하도록 되어 있기 때문이다. 설령 개발자가 프레임워크에서 필요한 기능만 뽑아서 사용을 한다 할지라도, 프레임워크가 의도하는 개발의 틀에서 어긋난다면 프로그램이 구동하지 못할 수도 있다.

그러면 프레임워크에는 어떤 예시들이 있을까??
찾아보니 앵귤러가 프레임워크에 해당한다고 한다. 왜 프레임워크라고 불리는지 보았더니 , 라우팅이나 코딩 스타일, UI 컴포넌트 만드는 법에 대한 모든 것들을 다 갖추어서 그에 맞게 코딩을 하라고 안내가 되어 있다고 한다.

그러면 이 둘은 어떤 차이점이 있을까?

라이브러리와 프레임워크를 구분하는 가장 큰 기준은, 코드 흐름의 제어권을 누가 가지고 있는가? 이다.
프레임워크의 경우 코드를 작성하는 방식, 내부에 이미 구현된 함수를 사용하는 방법에 맞추어서 개발을 해야 하기 때문에, 프레임워크 자체가 코드 흐름의 제어권을 가지고 있다고 볼 수 있다.
반면 라이브러리의 경우, 실제 도서관에서 사람들이 필요한 책만 찾아 보는 것처럼, 코드 흐름의 제어권이 개발자에게 있다.
이 둘의 특징을 잘 생각한다면, 현업에서는 어떤 경우 어떤 것을 사용해야 할까?
만약에 이미 만들어진 틀을 이용하여 편하게 원하는 프로그램들을 만들고자 한다면, 프레임워크를 사용하는 것이 적절할 것이다. 라이브러리를 이용해서도 프레임워크를 만들 수도 있지만, 그렇게 하기에는 시간 소요도 많이 될 뿐더러 에러를 다루기도 어렵다. 이때는 차라리 이미 남들이 만들어놓고 검증된 것을 사용하는 것이 낫다.
하지만, 그런 프레임워클르 써야 하는 상황인데, 특정 기능만 내가 원하는 방향대로 바꿔서 사용을 하고 싶다면, 그때는 프레임워크의 일부만 라이브러리를 통해서 바꿔주는 과정도 고려를 해 볼 수 있을 것이다.
또는 아얘 다른 프레임워크들을 찾아보고 쓰는 것도 방법이 될 수 있을 것이다.

reference.

https://webclub.tistory.com/458
https://blog.gaerae.com/2016/11/what-is-library-and-framework-and-architecture-and-platform.html

profile
몫을 다하는 사람

0개의 댓글

관련 채용 정보