회원가입을 하면 원하는 문장을
저장할 수 있어요!
다음
AWS 이용 중이라면 최대 700만 원 지원받으세요
본문은 요즘IT와 번역가 Mr.P가 함께 만든 해외 번역 콘텐츠입니다. 이 글을 작성한 The Educative Team은 직접 하면서 배우는 개발자 학습 플랫폼 Grokking의 콘텐츠 발행팀입니다. 이번 글은 웹 개발을 위한 여러 인기 기술 스택을 살펴보고, 어떤 장단점이 있는지 분석하는 내용입니다.
회원가입을 하면 원하는 문장을
저장할 수 있어요!
다음
회원가입을 하면
성장에 도움이 되는 콘텐츠를
스크랩할 수 있어요!
확인
본문은 요즘IT와 번역가 Mr.P가 함께 만든 해외 번역 콘텐츠입니다. 이 글을 작성한 The Educative Team은 직접 하면서 배우는 개발자 학습 플랫폼 Grokking의 콘텐츠 발행팀입니다. 이번 글은 웹 개발을 위한 여러 인기 기술 스택을 살펴보고, 어떤 장단점이 있는지 분석하는 내용입니다.
세상에는 웹 개발을 하기 위한 많고도 다양한 기술 스택이 존재합니다. 그러나 어떤 스택을 채택해야 하는지, 언제 그것을 사용할 수 있는지를 아는 것은 특히 초보자에게 어려운 일입니다. 이 글을 통해서 우리는 웹 개발을 위한 여러 인기 있는 기술 스택들을 살펴본 뒤 그것들의 장단점을 분석할 것입니다. 그 후에 우리는 일반적인 소프트웨어 개발, 웹 개발, 모바일 웹 앱 개발 등의 목적에 따라서 웹 개발 기술 스택을 고르기 위한 몇 가지 팁을 제공할 것입니다.
이제 시작하겠습니다!
우선, 기술 스택이란 무엇일까요?
기술 스택이란 웹사이트나 웹 앱을 만들기 위한 언어, 데이터베이스, 프레임워크의 집합입니다. 일반적인 웹 개발 스택은 다음을 포함한 프론트엔드, 백엔드 기술이 혼합되어 있습니다.
모든 개발 요구사항을 처리하기 위한 다양한 기술 스택이 존재하며, 프로젝트의 요구에 따라서 그에 맞는 기술 스택이 매번 달라집니다. 예를 들어 만일 여러분이 많은 트래픽과 데이터를 처리해야 하는 고성능의 웹 사이트나 웹 애플리케이션을 생각하고 있다면, 강력한 백엔드 지원을 포함한 기술 스택을 채택해야 합니다.
마찬가지로 만일 여러분이 제한된 기능과 자원 속에서 빠르게 시작하고 실행해야 하는 웹 사이트를 구축하기를 원한다면(간단한 랜딩 페이지같이), 가볍고 세팅이 간단한 기술 스택을 고르는 것이 좋습니다.
웹 개발을 위해 사용할 수 있는 다양한 기술 스택이 존재합니다. 그러나 이 글에서는 다음을 다룰 것입니다:
LAMP는 많은 트래픽을 요구하는 페이스북, 위키피디아, 텀블러에서 사용되는 전통적인 기술 스택입니다.
LAMP는 다음으로 이루어져 있습니다:
리눅스: 리눅스 OS는 LAMP의 기반을 다져줍니다. 이는 무료이며 쉽게 수정할 수 있기 때문에 개발자들에게 인기 있는 오픈소스 플랫폼입니다. 반면에 윈도우는 클로즈드 소스(closed-source)[1] 플랫폼입니다. 따라서 여러분은 작동 방식에 대한 제어 권한이 리눅스와 비교하면 그다지 많지 않습니다. 리눅스는 또한 대규모 개발자 커뮤니티와 많은 양의 문서를 제공합니다.
아파치: 아파치는 많은 양의 트래픽과 데이터를 처리할 수 있는 크로스 플랫폼이자 오픈소스 HTTP 서버입니다. 1996년부터 사용해온 아파치는, 빠르고, 안전하며, 신뢰할 수 있습니다. 아파치는 모듈화 되어 있으며 필요에 따라 성능을 최적화하도록 사용자가 설정할 수 있습니다.
MySQL: MySQL는 관계형 데이터베이스 관리 시스템으로 행과 열로 구성된 표 형식으로 데이터를 저장하고 보여줍니다. MySQL 또한 오픈소스이며, 사용하기 편리합니다. MySQL는 확장성을 지원하며 많은 양의 데이터를 처리할 수 있지만, 너무 거대한 데이터베이스를 처리할 때는 성능과 효율성이 저하될 수 있습니다.
PHP/펄/파이썬: PHP는 LAMP와 함께 사용되는 가장 인기 있는 프로그래밍 언어이며 대부분의 서버와 호환됩니다. 게다가 상대적으로 배우기 쉽고 다양한 라이브러리와 프레임워크를 제공합니다. 펄과 파이썬 또한 PHP를 대신하여 사용되고 있습니다.
장점 | 단점 |
|
|
WAMP와 MAMP는 각각 리눅스를 대신하여 마이크로소프트의 윈도우와 맥 OS(Mac OS)에서 사용할 수 있도록 설계된 LAMP의 변형된 버전입니다.
MEAN은 유튜브(YouTube), 넷플릭스(Netflix), 페이팔(PayPal)과 같은 웹 사이트를 제작하는 데 사용된 자바스크립트(JavaScript) 웹 프레임워크입니다. MEAN은 이미 자바스크립트에 친숙하거나, 개발 진행 속도를 높이려는 사람들에게 훌륭한 기술 스택입니다.
MEAN은 다음으로 이루어져 있습니다:
몽고디비: 몽고디비는 프론트엔드 프레임워크(이 경우 Angular.js)에서 생성된 JSON 문서를 Express.js에서 처리한 후 저장하는 오픈소스 프레임워크입니다. 몽고디비는 많은 양의 데이터를 저장할 수 있고, 클라이언트-서버 간의 빠른 데이터 교환을 가능하게 하며, 클라우드 호환성을 지녔습니다.
Express.js: Express는 Node.js 서버에서 실행되는 가벼운 백엔드 웹 프레임워크입니다. Express.js는 URL 라우팅과 HTTP 요청 처리에 탁월한 성능을 가지고 있습니다. Express.js는 웹 프레임워크로부터 JSON 문서를 받고, 그것을 처리하며 몽고디비에 저장합니다.
Angular.js: Angular.js는 빠르고, 오픈 소스이며, 본격적인 프론트엔드 프레임워크입니다. Angular.js는 강력하게(그러나 너무 엄격하지 않게) MVC(Model-View-Controller) 구조를 따르고 있습니다.
Node.js: Node.js는 비동기 이벤트 기반 자바스크립트 런타임 환경입니다. 비동기 서버로서 Node.js는 메모리에 대해 매우 효율적입니다. 또한 Node.js는 오픈소스이며, 윈도우, 맥, 리눅스 등 어느 환경에서 실행될 수 있는 크로스 플랫폼입니다.
장점 | 단점 |
|
|
MERN과 MEVN은 앞서 다룬 MEAN과 유사하지만, Angular.js를 대신해 각각 리액트와 Vue.js를 사용합니다.
우리는 우선 MERN을 살펴본 후, MEVN과 어떤 차이점이 있는지 알아보겠습니다.
MERN은 MEAN, MEVN과 매우 비슷합니다. 그러나 프론트엔드 프레임워크로 Angular.js나 Vue.js 대신 리액트를 사용한다는 점에서 차이가 있습니다. MERN는 드롭박스(Dropbox), 페이스북(Facebook), 에어비엔비(Airbnb)와 같은 회사에서 사용되고 있습니다. MERN는 MEAN의 많은 이점을 함께 공유하고 있지만, 리액트의 Angular.js에 비해 완곡한 러닝 커브를 그리고 있습니다.
MERN은 다음으로 이루어져 있습니다:
몽고디비: 몽고디비는 프론트엔드 프레임워크(이 경우 리액트)에서 생성된 JSON 문서를 Express.js에서 처리한 후, 저장하는 오픈소스 프레임워크입니다. 몽고디비는 많은 양의 데이터를 저장할 수 있고, 클라이언트-서버 간의 빠른 데이터 교환을 가능하게 하며, 클라우드 호환성을 지녔습니다.
Express.js: Express는 Node.js 서버에서 실행되는 가벼운 백엔드 웹 프레임워크입니다. Express.js는 URL라우팅과 HTTP 요청 처리에 탁월한 성능을 가지고 있습니다. Express.js는 웹 프레임워크로부터 JSON문서를 받고, 그것을 처리하며 몽고디비에 저장합니다.
리액트: 빠르고, 확장이 용이한, 오픈 소스 자바스크립트 라이브러리로 MERN 스택의 프론트엔드 프레임워크로써 사용되었습니다. 리액트는 웹 페이지 조작을 쉽게 만들어주는 가상 DOM을 제공합니다. 그러나 네이티브 DOM을 사용하는 MEAN에 비해 약간 느립니다. 또한 리액트는 컴포넌트 기반의 라이브러리를 사용합니다. 이는 애플리케이션의 다른 파트에서 코드 재사용을 쉽게 해 줍니다. 게다가 여러분이 자바스크립트가 어떻게 작동하는지 알고 계신다면 리액트를 쉽게 배울 수 있습니다.
Node.js: Node.js는 비동기 이벤트 기반 자바스크립트 런타임 환경입니다. 비동기 서버로서, Node.js는 메모리에 대해 매우 효율적입니다. 또한 Node.js는 오픈소스이며, 윈도우, 맥, 리눅스 등 어느 환경에서 실행될 수 있는 크로스 플랫폼입니다.
MEVN은 Angular.js나 리액트 대신에 Vue.js를 웹 프레임워크로 사용합니다. Vue.js 사용자 인터페이스(UI)를 구축하기 위한 가장 인기 있는 자바스크립트 프레임워크 중 하나입니다. MEVN는 알리바바(Alibaba), 비핸스(Behance), 깃 랩(GitLab)과 같은 웹 사이트를 구축하는 데 사용되었습니다. Vue.js는 미티어(Meteor)와 도커(Docker)와도 호환됩니다.
MEVN은 다음으로 이루어져 있습니다:
MongoDB: 몽고디비는 프론트엔드 프레임워크(이 경우 리액트)에서 생성된 JSON 문서를 Express.js에서 처리한 후, 저장하는 오픈소스 프레임워크입니다. 몽고디비는 많은 양의 데이터를 저장할 수 있고, 클라이언트-서버 간의 빠른 데이터 교환을 가능하게 하며, 클라우드 호환성을 지녔습니다.
Express.js: Express는 Node.js 서버에서 실행되는 가벼운 백엔드 웹 프레임워크입니다. Express.js는 URL 라우팅과 HTTP 요청 처리에 탁월한 성능을 가지고 있습니다. Express.js는 웹 프레임워크로부터 JSON문서를 받고, 그것을 처리하며 몽고디비에 저장합니다.
Vue.js: Vue.js는 MVVM[3] 아키텍처를 기반으로 만들어진 점진적인 프레임워크(Progressive Framework)입니다. 새로운 기능이나 함수를 추가하는 것은 간단한 과정이며, (단지 패키지를 추가하면 됩니다) 프로젝트에 점진적으로 통합할 수 있습니다. Vue.js는 직관적이고 읽기 쉬운 문법을 가지고 있어서 오픈소스 커뮤니티의 개발자들에게 인기 있는 언어입니다.
Node.js: Node.js는 비동기 이벤트 기반 자바스크립트 런타임 환경입니다. 비동기 서버로서, Node.js는 메모리에 대해 매우 효율적입니다. 또한 Node.js는 오픈소스이며, 윈도우, 맥, 리눅스 등 어느 환경에서 실행될 수 있는 크로스 플랫폼입니다.
장고는 빠른 개발과 깨끗하고 잘 구성된 코드를 권장하는 고급(High-level) 파이썬 웹 개발 프레임워크입니다. 장고의 유연한 아키텍처와 손쉬운 사용으로 인해 웹 개발자 사이에서 인기 있지만 배우기가 다소 어려울 수 있습니다. 장고 기술 스택은 인스타그램(Instagram)과 핀터레스트(Pinterest) 개발에 사용되었지만 핀터레스트는 이후 Flask로 프레임워크를 변경했습니다.
장고 스택은 언제나 장고와 파이썬을 사용합니다. 그러나 서버와 데이터베이스는 선호에 따라 다르게 선택할 수 있습니다.
장고 기술 스택의 하나의 예시입니다:
장고: 다양하고 즉시 사용할 수 있는 기능을 갖춘 종합적이고 다목적의 웹 프레임워크입니다. 장고는 빠른 개발과 깔끔한 설계를 우선순위로 둡니다. 장고는 다양한 웹 호스팅 제공업체 및 데이터베이스와 호환되며 관리자 패널, ORM[4], 템플릿, 인증(패키지를 통해) 등을 제공합니다.
파이썬: 확장성이 좋으며 여러 방면으로 사용할 수 있는 언어입니다. 가독성이 좋아 개발자들에게 인기 있는 언어이기도 합니다. 또한 파이썬은 머신 러닝과 과학, 수학적 연산에서 널리 사용되는 언어이기도 합니다.
아파치: 아파치는 많은 양의 트래픽과 데이터를 처리할 수 있는 크로스 플랫폼이자 오픈소스 HTTP 서버입니다. 1996년부터 사용해온 아파치는, 빠르고, 안전하며, 신뢰할 수 있습니다. 아파치는 모듈화 되어 있으며 필요에 따라 성능을 최적화하도록 사용자가 설정할 수 있습니다.
MySQL: MySQL는 관계형 데이터베이스 관리 시스템으로, 행과 열로 구성된 표 형식으로 데이터를 저장하고 보여줍니다. MySQL 또한 오픈소스이며, 사용하기 편리합니다. MySQL는 확장성을 지원하며 많은 양의 데이터를 처리할 수 있지만, 너무 거대한 데이터베이스를 처리할 때는 성능과 효율성이 저하될 수 있습니다.
장점 | 단점 |
|
|
지금까지 우리는 여러 인기 있는 개발 스택에 대해 살펴보았습니다. 아마도 여러분은 어떤 기술 스택이 여러분에게 가장 좋은 선택지 일지 궁금해하실 수 있습니다. 정답은 여러분의 프로그래밍 경험과 여러분의 목적에 있습니다.
만약 여러분이 웹 개발이 처음이시라면, MEAN이나 MERN이 좋은 시작점이 될 수 있습니다. 이러한 스택은 상대적으로 배우기 쉽고 하나의 언어(자바스크립트)만을 사용하기에 일을 간편하게 할 수 있습니다.
만약 여러분이 조금 더 개발에 경험이 있거나, 좀 더 유연한 스택을 찾으신다면 LAMP나 MEVN과 같은 스택이 더 나은 선택지가 될 것입니다. 이 기술 스택들은 사용하려는 도구와 기술을 더 자유롭게 선택할 수 있습니다.
만일 자바스크립트를 프론트엔드와 백엔드 둘 다 사용하고 싶으시다면, 자바스크립트 기반 스택들(MEAN, MERN, MEVN)이 좋은 선택입니다. 만약 프론트엔드와 백엔드의 언어를 다르게 사용하고 싶으시다면 LAMP, WAMP, MAMP가 더 낫습니다.
또한 이러한 스택을 엄격히 준수할 필요는 없습니다. 원하는 경우에 다른 기술을 혼용해서 사용할 수 있습니다. 궁극적으로 가장 중요한 것은 목표를 달성하는 데 가장 도움이 되는 도구와 기술을 사용하는 것입니다.
웹 개발이 처음이라면, 다양한 툴과 기술을 배울 때 하나를 깊게 하기보다 다양하게 넓게 배우고 싶다는 유혹에 빠질 수 있습니다. 그러나 일반적으로 하나의 스택에 집중하여 공부하는 것이, 스택에 포함된 구성요소를 마스터하는 데 도움이 될 수 있습니다.
이러한 관점에서 기술 스택을 고르고 통달하는 것에 대한 몇 가지 팁이 있습니다.
여러분이 어떤 스택을 선택하였던, 가장 중요한 것은 끊임없이 학습하고 기술의 폭을 넓혀가는 것임을 잊지 마세요. 그렇게 할 수만 있다면, 머지않아 여러분들은 멋진 웹 애플리케이션을 만들 수 있을 것입니다.
평생의 개발자 커리어 동안 하나의 기술 스택을 고수해야 한다는 생각하는 실수를 저지르지 마세요. 웹 개발의 아름다움은 문제를 해결하기 위한 기술과 방법이 언제나 새롭게 생겨난다는 점에 있습니다. 따라서 마음을 열고, 새로운 스택의 도입을 실험해보세요. 그리고 업계의 발전에 적응하세요.
[1] 사유화되어 소스코드가 외부에 공개되지 않은 프로젝트
[2] 자바스크립트 기반의 모바일 애플리케이션 지원을 위한 프레임워크
[3] Model, View, ViewModel로 이루어진 코드 디자인 패턴.
[4] 객체와 관계형 데이터베이스의 데이터를 자동으로 매핑해주는 것
[5] 코드의 가독성을 높이기 위해 코드를 작성할 때 모두가 지키자고 약속한 일종의 규칙
<원문>
How to choose the right tech stack for web development
위 번역글의 원 저작권은 The Educative Team에게 있으며, 요즘IT는 해당 글로 수익을 창출하지 않습니다.