[기초] 프레임워크와 라이브러리

서지민·2024년 3월 23일

기초 정리

목록 보기
1/6
post-thumbnail

프레임워크(FrameWork)

프레임워크란?

프레임워크의 사전적인 의미를 찾다 보면 공통적으로 나오는 말이 있다.

  • 소프트웨어 개발을 위한 구조적인 틀을 제공하는 도구나 환경

프레임워크라는 명칭만 보아도 Frame(틀) + Work(일)의 합성어임을 볼 수 있는데, 한 마디로 일하는데 기본적인 틀을 제공해준다는 것이다.
정말 간단하게 정리하면 '개발을 도와주는 도구'라고 볼 수 있다.

왜 사용할까?

프레임워크가 개발하는데 도움을 준다는데 어떤 도움을 주는것일까?

  1. 중복
  • 개발하다보면 중복되는 작업들이 정말 많다.
    그리고 개발자들은 효율을 정말 중요시한다.
  • 프레임워크를 사용하면 재사용성이 매우 올라가기에 효율적인 개발이 가능해지며, 그에 따라 시간 역시 많이 절약할 수 있다.
  1. 유지보수
  • 프레임워크를 많이 사용하지 않던 시절 개발자들은 각자 자신의 스타일대로 프로그램을 개발했었다고 한다.
  • 그러다보니 다른사람이 만든 프로그램을 넘겨받아 유지보수해야 하게되면 정말 시간이 오래걸리고 힘들다고 한다.
  • 그러나 프레임워크를 사용한다면 동일한 프레임워크를 사용한 프로그램의 경우 세세한 코드 스타일은 다를지라도 기본적인 틀이 같기에 유지보수면에서 유리하다고 볼 수 있다.

그렇다면 장점만 있을까?

물론 장점만 있다면 좋겠지만, 단점도 존재한다.

  1. 학습시간
  • 해당 프레임워크에서 사용되는 언어를 안다고 해당 프레임워크를 능숙하게 사용할 수 있는 것은 아니다
  • 새로운 프레임워크를 배우고 익히는 데 시간이 걸리며, 초기에는 개발자들이 이를 이해하고 적용하는 데 어려움을 겪을 수 있다.
  1. 제한된 유연성
  • 틀이 정해져있다는 의미는 결국 그 틀에 갇힌 상태가 된다는 것
  • 프레임워크는 특정한 디자인 패턴이나 아키텍처에 따라 개발되기 때문에 개발자들이 일부 기능을 변경하거나 수정하는 데 제한이 있을 수 있다

그 외의도 몇몇 세세한 단점들이 존재한다.

대표적인 프레임워크들

  • BE
    • JAVA - Spring(스프링)
    • Python - Django(장고)
    • Ruby - Ruby on Rails
  • FE
    • Angular
    • Vue

라이브러리(Library)

라이브러리란?

라이브러리는 Library(도서관)의 의미대로 보자면, 도서관에서 필요한 책을 뽑아 볼 수 있듯, 프로그래밍할 때 필요한 기능들을 빼와서 사용할 수 있도록 만들어져있는 코드와 리소스의 모음이다.

일반적으로 함수, 클래스, 모듈, 템플릿 등의 형태로 제공되며, 개발자가 프로그램을 더 빠르고 효율적으로 개발할 수 있도록 도와준다.
(설명만 보면 프레임워크와 큰 차이는 없어보인다)

프레임워크 vs 라이브러리

프레임워크와 라이브러리의 가장 큰 차이는 "제어 흐름"의 권한이 어디에 있는가이다.

제어의 역전(Inversion of Control)이라는 개념이 있는데,
프레임워크는 해당 개념을 따르고 있어 프로그램의 제어 흐름이 프레임워크에 의해 결정되며,
라이브러리는 해당 개념을 따르지 않아 프로그램을 작성할 때 개발자가 코드를 작성하고 실행 흐름을 제어한다.

한마디로 프레임워크와 라이브러리 둘 다 개발자의 개발을 도와주는 것들이나, 프레임워크는 제어권을 직접 가져와 적극적으로 개발에 도움을 주는 것이고, 라이브러리는 개발자가 필요할때 기능을 제공해주는 좀 더 수동적인 도움을 제공한다.

profile
효율 이전에 노력의 축적이 필요하다

0개의 댓글