Library & Frame Work

Library와 Frame Work의 차이

라이브러리, 프레임 워크.. 참 많이, 자주 쓰는말이다.
하지만 스스로에게 두개의 차이를 설명해보라고 하니까, 명확히 설명하지 못하고 있는 나 자신을 발견했다.

이를 반성하며 공부했던 내용을 정리해보려고 한다.


라이브러리에서 가져다 쓴다.

Library (도서관)

C++의 STL, Python의 Pandas ETC….

  • 우리는 정보를 필요로 할때, 도서관에서 책을 가져다 읽는것을 상상해볼 수 있다.
  • 이것을 무언가를 만들때, 창고 (라이브러리) 에서 도구를 빼는것으로 확장 시켜 생각 해볼 수 있다.

왜 탄생했을까?

  • 반복되어 사용되는 도구
  • 매번 도구를 새로 만들어서 사용할 필요없이, 이미 만들어진 도구를 사용하면 된다.

개발을 용이하게 이미 만들어진 기능을 제공하는 도구 라고 생각하면 된다.


프레임 워크에 들어가서 작업한다.

Frame Work (Frame + Work)

Spring , Diango, React ETC….

  • 이해하기 쉽게 단어의 뜻부터 생각해보자
  • Frame (틀) + Work (일하다)
  • 에 맞춰서 일을 한다 고 생각하면 이해하기가 용이해진다.
  • 무언가를 만들때 어떤 규약, 제약 에 맞춰서 만드는 약속 이라고 생각하자.

왜 탄생했을까?

다양한 개발자들이 등장하기 시작했다.

  • 이는 전체 시스템의 통합, 일관성의 부족을 불러오기 시작했다.
  • 소프트웨어의 생산성, 안정성이 하락하기 시작했다.
  • 이를 해결하기 위해서 개발자들이 약속하고, 지켜야할 가이드 라인의 필요성이 대두대기 시작했다.
  • 거대하고, 복잡한 프로젝트를 가이드라인 (틀)에 맞춰서 작업한다.
    • 중복되고, 뒷단의 작업은 프레임워크에서 작업하게 한다.

장점

  • 개발시간이 단축된다.
  • 코드의 중복성이 떨어진다.
  • 유지보수가 용이해진다.

단점

  • 너무 프레임워크에만 의존하면, 개발자 스스로의 역량이 저하될 수 있다.

프레임 워크 vs 라이브러리

라이브러리에서 가져다 쓴다.
프레임 워크에 들어가서 작업한다.

이 두가지를 보면 차이를 알 수 있다. 개발 흐름의 주체가 무엇인지를 알아보면된다.

  • 라이브러리개발자가 필요로 할때 사용한다.
  • 프레임워크프레임워크에 맞춰 개발자가 코드를 작성한다.

자동차를 만든다고 생각해보자

  • 프레임워크 자동차의 철제 프레임 (틀)
  • 라이브러리 자동차의 기능들 (헤드라이트, 엔진, 바퀴 등등등)

프레임워크 없이 자동차를 만들수 있다.

  • 그냥 헤드라이트, 엔진, 바퀴를 이곳저곳 자유롭게 가져다 붙이면 된다.
  • 어떻게 잘 가져다 붙이면, 굴러가는 자동차는 만들어낼 순 있을것이다.
  • 하지만, 엔진이 상단에 있다던가? 헤드라이트가, 차 밑에 달려있다던가?
    • 상당히 비효율적인 구조를 가진 자동차가 제작될 가능성이 높다.
    • 굴러가는 기능을 수행 시킬때까지, 상당한 시간과 자원을 소모해야 할것이다.
    • 물론 고장났을때 수리하기도 힘들것이다.

결론

둘다 개발을 용이하게 하기 위해서 만들어졌다는 공통의 목적을 가지고 있다.

  • 프레임 워크자유도를 제한하는, 가이드 라인 (Frame) 을 만들고
    • 가이드 라인 안에서 작업하는것이다.
  • 라이브러리는 필요할때 가져다 쓰는 도구 인것이다.
    • 개발자가 원할때 가져다가 쓸 수 있다.

Reference

위키피디아
https://galid1.tistory.com/191
https://private.tistory.com/8