[CS] 라이브러리와 프레임워크의 차이점

박준규·2021년 12월 20일
0

CS

목록 보기
4/4

라이브러리는 무엇일까? 그리고 프레임워크는 무엇일까? 사실 차이점이라고 이야기는 했지만, 서로의 정의가 무엇인지 안다면, 이야기하기 어렵지 않다. 필자의 경험에서 비롯된 LibraryFramework는 다음과 같다.

📦 라이브러리

필자는 라이브러리를 박스로 생각한다.

박스에 있는 도구를 가져가서 사용하는 것

정말 간단하게 생각하면 그렇다. 필자가 라이브러리를 처음으로 만진 것은 대학교 3학년 2학기 "계량경제학"이라는 경제학 과목을 들었을 때다. 당시에 R이라는 통계 분석 tool을 다루고 있었기에, 이때 라이브러리를 사용했다. 그리고 여러 모형과 검증 분석을 위한 라이브러리를 사용했다. 최대가능도, 적률추정 등 각각의 추정을 위한 라이브러리를 사용했던 기억이 있다. 라이브러리를 import해서(R에서는 library() 또는 require()을 사용하면 된다.) 필요한 기능을 수행하는 함수를 사용할 수 있도록 BOX와 같은 느낌을 줬던 것이 바로 library이다. 여기서 중요한 것은 내가 필요한 기능을 이미 누군가 만들어서 모듈화 시킨 것이다. 물론 이 말은 라이브러리에만 국한된 것은 아니다.

라이브러리를 통해 우리가 할 수 있는 것은 정말 라이브러리 안에 담겨있는 기능 뿐이다. 순열, 조합을 만들고 싶다거나, 어려운 함수를 구현했다거나 그런 기능을 담아 놓고 해당 기능만을 사용하게 해놓은 것이 바로 library이다.

🏢 프레임워크

필자는 프레임워크를 건물로 생각한다.

사용자가 필요에 따라 마련된 틀로 건물을 짓는 것

올해 3월, Django를 만진 것이 Framework를 처음으로 만났을 때 이다. 그때는 디자인 패턴을 MTV로 배웠다. 그리고 Django는 이미 만들어진 툴 위에 사용자가 얹고 싶은 기능을 추가하면서 새로운 웹 서비스를 만들 수 있었다.

즉 건물을 짓는데, 필요한 도구들은 이미 개발되어 있으니, 내가 원하는대로 무엇인가를 추가로 붙일 수 있다. 그렇게 건물은 완성된다. 물론 건물을 짓기 위해 필요한 모든 자재가 제공되지 않을 수 있기 때문에, 상황에 따라 필요한 자재는 install해야 한다.

🤔 그래서 라이브러리 프레임워크의 차이점이 뭐야?

간단하게 말해서 라이브러리는 박스안에 기능을 수행할 수 있는 망치, 톱, 못 등이 들어아 있는 것이고 프레임워크는 건물 짓을 때 필요한 철근, 시멘트, 합판 등을 의미한다.

보다 더 정확한 것은 지금까지 필자가 프레임워크와 라이브러리를 이야기했을 때, 들었던 느낌일 것이다. 이를 뜻하는 단어가 바로 제어의 역전이다. 이는 프레임워크가 갖고 있는 가장 큰 특징이며, 특정 일을 하게 만들어진 프레임워크의 제어의 권한을 넘겨서 개발자가 오로지 코드에만 집중할 수 있도록 한 것이다. 하지만 라이브러리는 이러한 제어의 역전이 존재하지 않는다.

둘 중 무엇이 좋다 안좋다고 이야기하는 것은 별로 영양가 있는 것은 아니라고 생각한다. 무엇보다 제일 중요한 것은 필요에 따라 적절한 tool을 이용하여 library이면? 각 기능을 숙지하고 framework이면? 해당 프레임워크의 규칙과 제어를 잘 통제하면 되겠다.

profile
'개발'은 '예술'이고 '서비스'는 '작품'이다

0개의 댓글