본문 바로가기
Own thoughts/IT 교양상식

[IT교양] '프레임워크', 쉽게 이해하기

by 랴망 2020. 1. 13.

오늘은 개발에 관심있는 비전공자/문과생이 쉽게 이해할 수 있는 수준에서, '프레임워크' 에 대해 설명해보려고 합니다. 저처럼 앱/웹 개발에 입문하시는 모든 분들이, 용어의 홍수 속에서 기본적인 개념을 잡는 데 도움이 되었으면 좋겠습니다.


1. '프레임워크'가 뭔가요?

"소프트웨어의 구체적인 부분에 해당하는 설계와 구현을 재사용이 가능하게끔 일련의 협업화된 형태로 클래스들을 제공하는 것" - Ralph Johnson -

<<위의 어려운 언어를 쉽게 해석해보겠습니다!>>

프레임워크(Framework)는 말그대로 '뼈대', '골격'입니다. 옆 사진의 공사 현장처럼, 전체적인 구조와 골격이 잡히고 나야, 건축도 훨씬 수월해지는 것처럼 어플리케이션 개발 역시 전 과정을 아우르는 골격이 필요합니다.

당신은 App 개발자일수도, Web 개발자일수도, SW 개발자일수도 있습니다. 각 어플리케이션 개발에는 분명히 공통적인/중복되는 작업이 있을테고, 이러한 로직들을 정의하고 미리 코드를 짜 놓은 다음, 누구나 쉽게 갖다 쓸 수 있도록 (구현할 수 있도록) 꾸려놓은 것이 바로 '프레임워크'입니다. 각 프레임워크는 특정한 개발언어로 다룰 수 있습니다.

 

이렇게 미리 짜여진 이 '프레임워크'를 하나의 '시작점'이자, '개발방식'으로 개발자들은 쉽고 빠르게 개발을 할 수 있게 되죠.

'프레임워크'는 '라이브러리'라는 것도 포함하고 있는데요. 둘은 종종 비교가 되기에 알아두면 좋습니다. '라이브러리'는 하나의 '프레임워크' 내에서 활용 가능한 여러 주요 기능을 가져다 쓰기 쉽게 꾸려놓은 것이라고 보시면 됩니다. '앱 개발'을 위한 '프레임워크'를 선정했다면, '앱의 주요 기능'들을 구현하기 위해, 남이 미리 짜 놓은 다양한 '라이브러리' 코드들을 활용하여 더욱 쉽게 개발할 수 있게 되죠.

 

2. '프레임워크'가 왜 필요한가요?

Photo by Shahadat Rahman on Unsplash

  • 생산성 향상: 시간이 절약됩니다. DB 연동, 유저 인증, 화면 구현 등의 개발에 공통적으로 필요한 필수 기능등을 제공해주기 때문에, 이 모든 것들을 zero base에서 하나하나 짜는 것 보다 훨씬 더 빠르게 개발할 수 있게 됩니다.
  • 개발 일관성 향상: 대규모 프로젝트를 공동 수행하는 수많은 개발자들이 각기 다른 언어와 코딩기법으로 개발을 한다면 관리가 너무 어렵겠죠? '프레임워크'는 개발에 필요한 각 과정들의 기본 '규격'이 되어주기 때문에, 여러 개발자들이 일관된 틀과 규칙(언어, 주요 코드를 짜는 방식 등등..) 아래 개발할 수 있게 됩니다. 덕분에 유지보수 역시 쉬워지죠.
  • 퀄리티 향상: 이미 다수의 개발자가 검증한 코드이기에, 버그 발생 확률이 적습니다. 덕분에 개발자들은 오류를 수정하는 데 시간을 뺏기지 않으면서도, 양질의 개발을 수행할 수 있게 됩니다.

 

3. '프레임워크'는 어떤 게 있나요?

출처: Django web framework 페이스북 계정

1) 어떠한 어플리케이션을 개발하느냐 (모바일/웹/SW 등), 2) 프론트엔드(UI)냐 백엔드(서버)냐, 3) 어떤 프로그래밍 언어를 사용하느냐 - 에 따라 주로 활용되는 프레임워크가 다릅니다.

한 예로, '웹프레임워크'를 기준으로 프론트엔드와 백엔드의 주요 프레임워크를 정리해보겠습니다. 아, 그리고 대부분의 프레임워크들은 누구나 무료로 사용가능한 '오픈소스'입니다.

<백엔드>

프레임워크 개발언어 특징
Spring Java 전자정부 프레임워크의 기반으로, 국내에서는 가장 활용도가 높음
Django Python 웹(GUI)에서 조작 가능한 관리자 페이지를 기본적으로 제공하여 편리함
Express Js Javs Script Node.js 런타임에서 작동하는 빠르고 간편한 웹 프레임워크. 프론트엔드와 같은 언어를 쓰기에, 프론트까지도 비교적 쉽게 개발 가능

 

<프론트엔드>

프레임워크 개발언어 특징
Angular JavsScript Google이 개발
React
* 엄밀히 말하면, React는 '라이브러리'에 속합니다!
JavaScript 가장 많이 활용 됨 (Facebook, Instagram 등)
Vue.js JavaScript 최근 Hot한 수퍼루키

> 각 웹 프론트엔드 프레임워크에 대해 더 알아보시려면 다음을 참고하세요. (Link)

> 웹은 OK! 더 많은 '앱'개발 프레임워크가 궁금하다면 참고하세요. (Link)