프레임워크와 라이브러리

강지영·2023년 2월 6일
0

IT지식

목록 보기
7/8

📕 프레임워크

원하는 기능 구현에 집중하여 개발할 수 있도록 일정한 형태와 필요한 기능을 갖추고 있는 골격, 뼈대를 의미

클래스와 라이브러리가 합쳐진 구조

애플리케이션 개발 시 필수적인 코드, 알고리즘, DB 연동과 같은 기능들을 위해 어느 정도 뼈대(구조)를 제공하며 이러한 뼈대 위에서 사용자는 코드를 작성하여 애플리케이션을 개발

앱/서버 등의 구동, 메모리 관리, 이벤트 루프 등의 공통된 부분은 프레임워크가 관리하며, 사용자는 프레임워크가 정해준 방식대로 클래스, 메서드들을 구현

📌 왜 사용할까요?

개인이 라이브러리로 이러한 규칙을 구축하는 데에는 시간과 돈이 필요하므로 이미 구축되어 있는 프레임워크를 사용하여 제작에만 집중하는 것

🔎 예시

Java 서버 개발에 사용되는 Spring

안드로이드 앱 개발에 사용되는 Android

Python 서버 개발에 사용되는 Django, Flask

🧑‍🍳 프레임워크는 밀키트라고 생각하면 된다.
이미 주어진 재료를 가지고 정해진 레시피 대로만 하면 요리의 완성!
요리의 완성도는 어느정도 보장되어 있지만 자유도는 떨어진다.

📚 라이브러리

즉 특정 기능을 모와둔 코드, 함수들의 집합이며 코드 작성 시 활용 가능한 도구들을 의미

필요할 때만 자유롭게 사용할 수 있는 일종의 도구

라이브러리를 사용하더라도 프레임워크가 정한 방식에 따라야 하지만 어떻게 사용할 지는 개발자가 정할 수 있다.

👩‍🌾 라이브러리는 팬트리라고 생각하면 된다.
요리하는 데에 정해진 규칙은 없지만 재료는 준비되어 있다.
팬트리에 있는 식재료와 식기 등을 원하는 대로 가져가 원하는 대로 요리하면 된다.

결론

프레임워크는 개발자에게 어떻게 해야 할 지 친절하게 알려준다.

라이브러리를 사용하면 뭘 할지 개발자가 정해야 함.

라이브러리를 사용하는 애플리케이션 코드는 애플리케이션 흐름을 직접 제어한다.

단지 동작하는 중에 필요한 기능이 있을 때 능동적으로 라이브러리를 사용할 뿐이다.

반면에 프레임워크는 거꾸로 애플리케이션 코드가 프레임워크에 의해 사용된다.

프레임워크에는 분명한 [제어의 역전] 개념이 적용되어 있어야 한다.

애플리케이션 코드는 프레임워크가 짜 놓은 틀에서 수동적으로 동작해야 한다.

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

라이브러리를 사용할 때 사용자는 애플리케이션 코드의 흐름을 직접 제어해야 합니다.개발 시 필요한 기능이 있을 경우 능동적으로 라이브러리를 호출하여 사용하거나 기존에 구성된 함수나 코드를 가져다 써야 합니다.

반면 프레임워크는 애플리케이션의 코드가 프레임워크에 의해 사용됩니다.애플리케이션 코드는 프레임워크가 짜 놓은 틀에서 수동적으로 동작하기 때문에 제어의 흐름은 프레임워크가 가지고 있고 사용자가 그 안에 필요한 코드를 작성하게 됩니다.

여기서 제어의 역전(IoC, Inversion of Control)이란,
어떠한 일을 하도록 만들어진 Framework에 Control 권한을 위임하는 것을 의미하는데, 
간단히 말해 프로그램의 제어 흐름 구조가 뒤바뀐 것을 뜻합니다.

라이브러리의 경우 애플리케이션의 흐름을 사용자가 직접 제어해야 하지만
프레임워크의 경우 코드를 연결할 수 있는 위치를 제공하고 필요에 따라 사용자가 연결한 코드를 호출하는 제어 흐름 권한을 가지고 있습니다.

profile
Hello World!

0개의 댓글