Framework/Spring (Java)

우리는 왜 프레임워크를 사용하는가? - Framework & Library

joyCHAE 2021. 3. 25. 01:28

 

 

"우리는 왜 자바 스프링을 사용하는가?" 라는 질문에 대답하기에 앞서 선행되어야 할 대답이 있다. 그것은 바로 "우리는 왜 프레임워크를 사용하는가?"라는 질문에 대한 대답이다. 결국, 스프링도 자바라는 언어를 활용해 만들어진 프레임워크이기 때문이다.

 

우선, 우리가 프레임워크를 왜 사용하는 지 대답하기에 앞서 Framework와 Library 각각을 알아보고, 이 둘의 차이까지 한번 알아보겠다.

 

 

Framework

프레임워크는 뼈대나 기반 구조를 뜻하고, 제어의 역전 개념이 적용된 대표적 기술이다.

 

소프트웨어에서의 프레임워크는 '소프트웨어의 특정 문제를 해결하기 위해서 상호 협력하는 클래스와 인터페이스의 집합'이라 할 수 있다. 완성된 어플리케이션은 아니기에 프로그래머가 완성시키는 작업을 해야 한다.

 

객체 지향 개발을 하게 되면서 통합성, 일관성의 부족이 발생되는 문제를 해결할 방법 중 하나라고 할 수 있다.

 

프레임워크의 종류에는 Spring(Java), Django(Python), Flask(Python), Ruby on rails(Ruby), .NET Framwork, Node.js(Express.js) 등이 있다.

 

 

 

 

Library

단순 활용가능한 도구들의 집합이다.

개발자가 만든 클래스에서 호출하여 사용, 클래스의 나열로 필요한 클래스를 불러서 사용하는 방식을 취한다.

 

 

 

 

Framework와 라이브러리의 차이

 

" 제어 흐름에 대한 주도성이 누구에게/어디에 있는가에 있다."

 

프레임워크는 전체적인 흐름을 스스로가 쥐고 있으며 사용자는 그 안에서 필요한 코드를 짜 넣는다. 반면 라이브러리는 사용자가 전체적인 흐름을 만들며 라이브러리를 가져다 쓴다. 다시 말해, 라이브러리는 라이브러리를 가져다가 사용하고 호출하는 측에 주도성이 있다. 반면, 프레임워크는 틀 안에 이미 제어 흐름에 대한 주도성이 내재되어 있다.

 

따라서 개발과정에서는 동작하는 중에 필요한 기능이 있을 때 능동적으로 라이브러리를 가져다 쓴다. 반면 프레임워크는 프레임워크 위에 개발한 클래스를 등록하고 프레임워크가 흐름을 주도하는 중에 개발자가 만든 애플리케이션코드를 사용하는 식이다.

 

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

 

제어의 역전이란, 제어의 권한이 프레임워크에게 넘어가는 형태이다.

따라서 프레임워크는 특정 디자인 패턴이나, 전처리 후처리에 필요한 동작과 기능들을 수행하기 위해서 프레임 워크가 실행되다가 중간 중간에 특정 비지니스나 특정 구현 단에서만 사용자의 코드를 lookup하여 사용하는 형태이다.

 

라이브러리는 톱, 망치, 삽같은 연장입니다. 사람이 들고 썰고, 바꿔들고 내려치고, 다시 바꿔들고 땅을 파는 겁니다.

프레임워크는 차, 비행기, 배같은 탈 것입니다. 사람이 타서 엔진 켜고, 기어 넣고, 핸들 돌리고, 운전하거나, 조종하거나 해야합니다.

도구를 쓸 때, 급하면 썰어야 할 곳에 망치를 쳐도 됩니다. 땅 파야할 때 톱으로 땅을 긁어내도 됩니다. 사람은 도구를 선택하는 입장이기 때문에, 어떤 도구를 사용하든 원하는 것을 만들어낼 수 만 있으면 됩니다.

반면에, 탈것은 정해진 곳으로만 다녀야 합니다. 차를 타고 하늘을 날거나, 배를 타고 땅으로 갈 수는 없습니다. 하지만, 그 목적에 맞게 만들어져 있기 때문에, 톱이나 망치를 들고 먼저 탈것을 만들어야 할 필요가 없습니다. 그저 정해진 규칙에 맞춰서 엔진, 기어, 핸들만 잘 돌리면 되는 것입니다.

 

라이브러리와 달리 프레임워크는 이미 프로그래밍할 규칙이 정해져 있다. 예를 들어, 어떤 함수를 추가적으로 작성해야 하고, 소스 파일을 어느 위치에 넣어야 하며, DB와 연동하기 위해 무엇을 써넣어야 하는지 정해져 있다. 즉, 프레임워크가 미리 코드로 구조를 구성해두고 개발자가 해당 구조에 코드를 짜 맞추는 방식이다. 덕분에 사람은 극히 일부분만 조정함으로써 목적을 달성할 수 있다. 또한 회사입장에서는 프레임워크를 사용하여 일정한 품질을 보장할 수 있다.

 

프레임워크가 담당하는 부분이 내가 달성하고자 하는 목적에 부합하지 않는다면 프레임워크를 잘못 고른 것이다. 이럴 때에는 다른 프레임워크나 라이브러리 단계에서 변경해서 다른 프레임워크로 만들어야 한다.

 

마지막으로 프레임워크의 장점! 남들이 만들어놓은 프레임워크는 쓰는 사람이 많은 만큼 수정이나 업데이트도 빠르다. 또한, 처음부터 모든 것을 만드는 것보다 훨씬 비용이 적게 들어간다. 내일 당장 지방에서 서울로 출근해야 하는데 혼자서 차를 만들어 타고 가야 한다는 생각을 버려라.

 

 

 

마치며,

 

자, 이제 우리가 왜 프레임 워크를 쓰는가에 대해서 알아보았다. 결국, 효율성 때문이다. 당연하게도 처음부터 혼자 다 만드는 것보단 남이 만들어놓은 것을 사용할 수 있다면 사용하는게 훨씬 빠르고 성능도 좋기 때문이다. 추가로, 회사 입장에서는 품질에 개인이 미치는 영향을 최소화하여 일정한 품질을 보장할 수 있다.

 

 

 

 

참고자료 및 출처목록

프레임워크와 라이브러리의 차이: https://webclub.tistory.com/458