본문 바로가기

IT Note/IT Basics

[IT샐러드] 장고(Django)?스프링(Spring)? '프레임워크'가 뭔가요?

오랜만에 돌아온 ☆비전공자★의 희망, IT 샐러드(IT Sellerz)입니다!

요즘 새해목표의 일환으로, 지인의 도움을 받아 앱 개발을 시작하였습니다. 백엔드부터 프론트엔드까지, 모든 과정을 서툴지만 직접 한번 만들어보면 제가 파는 API라는 제품도 제대로 이해할 수 있을 것 같았어요.

대망의 앱 개발 프로젝트, 그 첫 Kick-off에서 개발자 지인은 제게 물었습니다. 

"백엔드랑 프론트엔드는 뭐로 짜고 싶으세요?"

"... 뭐가 있죠??" 당황하는 저의 질문에, 지인은 대표적인 '프레임워크'를 소개해주었습니다.

"파이썬이 편하시면 장고로 서버 짜시고, 경험있으시니까 프론트는 리액트 네이티브로 짜세요!"

어렴풋이 '저걸로 짜면 편하구나'는 알겠지만, 정확히 저게 다 무엇인지.. 확실하게 정리해보고 싶어서 다시 스터디에 들어갔습니다. 공부해보니, 제가 몇 번 들었던 '장고', '스프링', '리액트 네이티브' 등등이 모두 '프레임워크'임을 알게 되었죠.

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


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)


여기까지, 프레임워크의 주요 개념에 대해 알아보았습니다. 역시 직접 개발을 하려다 보니 알아야할 것들이 산더미네요. 중간중간 어려운 점들을 잘 정리해놓았다가, 블로그로 함께 공유할 수 있도록 할게요.

개발에 입문한 당신을 응원하며 글을 마칩니다!

반응형