본문 바로가기
개발자 전향 프로젝트

프레임워크와 라이브러리의 차이가 뭔가요? [ 면접 질문 ]

by 샘오리 2022. 10. 29.
728x90
반응형

보통  A 와  B 의 차이가 뭔지 묻게 되면 이 둘이 굉장히 다른 것이라는 착각을 할 수 있는데

애초에 프레임워크와 라이브러리는 상당히 유사합니다.

그래서인지 사람들이 쉽사리 그 차이점을 말하기가 어려운 것이죠.

 

오늘은 이 둘의 공통점은 무엇이고 차이점은 무엇인지 알아보겠습니다.

 

먼저 이 둘의 공통점은?

 

지구 어딘가 이타적이고 뛰어난 개발자들이 특정 목적을 위해

어렵게 구현해낸 로직을 어떠한 이유에서인지 배포한 것입니다.

 

이를 통해 전세계의 사람들이 스스로 로직을 짜지 않고

올려져있는 로직을 쉽게 받아서 사용할 수 있게 됐습니다.

 

예를 들어 요리를 못하는 자취생이

누군가 만들어놓은 밀키트를 통해 집에서 쉽게 손이 많이 가는 요리를

간편하게 해먹을 수 있는 것과 비슷합니다.

 

바로 이것이 프레임워크이와 라이브러리이자 이 둘의 공통점입니다.

이 둘을 사용함으로써 코드가 재활용 되고 생산성이 높아지게 되는 것이죠.

 

그렇다면 차이는 무엇일까요?

Inversion of Control

제어의 역전, 유명한 말입니다. 

프레임워크와 라이브러리의 가장 두드러진 차이점은 바로 이 제어의 역전입니다.

누가 제어를 하느냐? 가 중점이 되는 것이죠.

 

프레임워크는 제어가 사용자에게 없습니다.

 

만약 어떤 특정 로직을 개발한 개발자들이 그 로직에 맞는 골격과 규칙을 만들어놔서

그 골격 안에서 규칙대로만 행동해야 원하는 결과를 낼 수 있다고 했을 때, 

사용자는 코드의 제어를 한다고 할 수 없죠. 제어는 코드 뭉치에 있게 되는 것입니다.

 

이렇게 정해진 골격안에서 정해진 규칙대로만 행동해야 해서

제어가 사용자에게 없고 그래서 자유도가 떨어지지만

결과는 확실히 보장된 것이 프레임워크입니다.

 

비유를 하자면 레고 에펠탑같은 것입니다.

 

라이브러리는 그 반대입니다.

 

라이브러리를 사용하게 된다면 제어는 사용자에게 있습니다.

프레임워크와는 다르게 어떤 골격자체가 없어서 사용자가 원할 때 가져와서 입맛에 맞게 쓸 수 있습니다.

굳이 모든 것을 받아오지 않아도 사용이 가능하기 때문에 사용자가 원하는 것만 쏙 빼올 수 있는 것이죠.

커스터마이징이 가능하고 자유도가 높은 것이 특징입니다. 그렇기에 결과는 보장되지 않는것이죠.

 

비유를 하자면 내 마음대로 고르는 마라탕 재료 같은 것입니다.

 

프레임워크와 라이브러리가 명확하게 나눠지기 보다는 그 둘의 특징을 둘다 가지고 있는 것들이 많습니다.

그래서 이 둘을 다른것으로 치부한다기 보다는 굳이 비교하자면 위와 같은 차이점이 있다

라고 알아가시면 좋을 것 같습니다.

728x90
반응형