Framework 란?
일단 프레임워크에 대해서 글을 쓰기전에 프레임워크가 무엇인지부터 알아야 하지 않을까 생각했다
만약 우리가 웹 사이트나 웹 애플리케이션을 만들려고 한다
하지만 맨땅에 집 짓는 것처럼 아무런 도구 없이 모든 것을 코드로 작성하기는 비효율적이고 어려운 일이다
웹 프레임워크는 바로 이러한 웹 개발의 뼈대를 미리 만들어 놓은 도구 모음이다
개발자는 이 뼈대 위에서 만들고 싶은 기능에만 집중하면 되므로 개발 속도가 빨라지고 유지보수가 쉬워진다
또, 정해진 규칙과 구조를 제공하기에 여러 개발자가 함께 일하는 협업에서도 도움을 준다
이러한 프레임워크들 중에 백엔드에 관심이 있는 나는 Spring, Node.js, Django에 대해서 알아보려고 한다
Spring
사용 언어: Java
스프링은 자바라는 객체 지향 프로그래밍 언어를 사용한다
운영체제에 독립적으로 실행될 수 있다는 큰 장점을 가지고 있다
안정성이 높고, 대규모 시스템을 구축하는데 적합해 전통적으로 기업용 애플리케이션 개발에 많이 사용된다
등장 배경 및 역사, 장점
2000년대 초반, 자바 기반의 기업용 애플리케이션 개발은 EJB라는 기술을 주로 사용했었다
하지만 EJB는 너무 무겁고 복잡해 개발 생산성이 많이 떨어진다는 문제가 있었다
이제 로드 존슨이 2003년 “객체 지향 애플리케이션을 위한 경량 컨테이너”을 제시하며 스프링을 내놓았다
EJB의 복잡성을 해결하고 개발자가 비지니스 로직에만 집중할 수 있도록 돕는 것이 핵심 목표였다
스프링은 데이터 처리, 보안, 클라우드 등 개발에 필요한 거의 모든 기능을 포함한 거대 생태계를 갖추고 있다
오랜 역사만큼 검증된 안정성은 금융권이나 대기업에서 선호하는 경우가 많다
DI와 IoC를 개발자가 하는 것이 아니라 프레임워크가 대신 객체를 관리하고 필요한 곳에 주입해준다
또 초기 스프링의 복잡한 설정을 간소화 시킨 Spring boot까지 등장해 쉽고 빠르게 개발할 수 있게 되었다
간단한 프로그래밍 예제
/hello 라는 URL로 접속했을 때, “Hello,World!”를 출력하는 예제이다
// HelloWorldController.java
package com.example.helloWorld;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
ㄴpublic class HelloWorldController {
@GetMapping("/hello")
public String sayHello() {
return "Hello, World!";
}
}
위 코드처럼 몇 줄의 코드와 애노테이션(@)으로 웹 서버 기능을 구현할 수 있다
해당 웹서버 프레임워크를 사용하는 웹사이트
아까 설명했던 장점인 오랜 역사로 다져진 거대 생태계와 안정성이 중요한 요소로 작용된 것을 볼 수 있다
주로 대기업이나 금융권 같이 안정성이 우선되는 기업들에서 사용한다
국내에서는 네이버, 쿠팡, 배달의민족, 카카오 등이 있고 해외에서는 Ticketmaster, Trivago, Intuit 등이 있다
Node.js & Express.js
사용언어: JavaScript
자바스크립트는 원래 웹 브라우저에서 동적인 효과를 주기 위해 탄생한 언어이다
하지만 Node.js의 등장으로 브라우저를 넘어 서버 개발까지 가능한 유일한 언어가 되었다
그래서 프론트엔트와 백엔드 개발을 같은 언어로 사용할 수 있는 것이 큰 매력이다
풀 스택으로 개발도 가능하기에 활용성이 좋은 언어라고 생각한다
등장 배경, 역사, 장점
2009년, 라이언 달은 기존의 웹 서버들이 한 번에 하나의 요청을 처리하고
다음 요청을 기다리는 블로킹 방식의 비효율성에 주목했다
그는 자바스크립트의 '이벤트 기반, 논블로킹 I/O' 모델을 서버에 적용해
동시에 수많은 연결을 효율적으로 처리할 수 있는 Node.js라는 런타임 환경을 만들었다
그리고 Express.js라는 가볍고 유연한 웹 프레임워크를 함께 사용하여 서버를 구축한다
비효율성을 없애기 위해 만든 만큼 요청을 처리하는 동안 기다리지 않고 바로 다음 요청을 받는다
이는 채팅, 스트리밍 등 입출력이 잦은 서비스에서 매우 높은 성능을 발휘한다
그리고 구글이 만든 자바스크립트 엔진 위에서 동작해 실행 속도가 매우 빠르다
또 NPM(node package manager)라는 세계에서 가장 큰 소프트웨어 라이브러리가 있어 생산성이 높다
간단한 프로그래밍 예제
server.js를 간단하게 만들어 웹 서버를 구현해봤다
const express = require('express');
const app = express();
const port = 3000;
app.get('/', (req, res) => {
res.send('Hello, World!');
});
app.listen(port, () => {
console.log(`서버가 http://localhost:${port} 에서 실행 중입니다.`);
});
해당 웹서버 프레임워크를 사용하는 웹사이트
node.js는 요청을 처리하는 동안 기다리지 않고 다음 요청을 받는다는 장점이 있어
주로 실시간 데이터 처리가 중요한 마이크로서비스에서 활용을 많이 한다
주로 해외에서 많이 사용하는 것 같다
Netflix, LinkedIn, Uber, PayPal, Trello 등이 사용하고 있다고 한다
Django
사용언어: Python
파이썬은 문법이 간결하고 사람이 읽기 쉬워 생산성이 매우 높은 언어이다
최근 데이터 과학 및 인공지능 분야에서 폭발적인 인기를 얻으며 웹 개발에서도 그 영향력을 넓히고 있다
배우기 쉽고 다양한 분야에 활용될 수 있어 초보자에게도 인기가 많은 언어이다
등장 배경, 역사, 장점
2003 미국 캔자스주의 로렌스에 위치한 Lawrence Journal-World라는 신문사의 웹개발 팀에서 만들어졌다
이 팀은 뉴스 사이트를 빠르게 개발하고 유지보수할 목표 및 필요가 있었고
기존 도구로는 한계가 있었기 때문에 자체 프레임워크를 만들게 되었다
2005년에 프레임워크를 오픈소스로 공개하면서 Django라는 이름으로 사용하게 되었다
장고는 웹 개발에 필요한 거의 모든 기능을 기본적으로 내장하고 있어 라이브러리 찾을 필요가 없다
빠른 개발이 목표였던 만큼 이미 만들어진 강력한 기능들을 활용해 매우 빠른 속도로 결과물을 만들 수 있다
또 SQL 인젝션, 사이트 간 스크립팅 등 일반적인 웹 공격에 대한 보안 기능이 내장되어 있어 보안도 강력하다
간단한 프로그래밍 예제
장고는 URL 요청을 받아 처리하는 뷰 함수를 정의하는 방식으로 동작하게 된다
from django.http import HttpResponse
def hello_world(request):
return HttpResponse("Hello, World!")
from django.urls import path
from myapp.views import hello_world
urlpatterns = [
path('hello/', hello_world),
]
해당 웹서버 프레임워크를 사용하는 웹사이트
등장 배경의 이유도 그렇고, 장점을 기반으로 하면 일단 빠르다는 것이 최고 장점인 것 같다
그래서 다양한 라이브러리로 손쉽고 빠르게 만들기 원하는 스타트업이 많다고 보면된다
현재는 Instagram, Spotify, Pinterest, NASA, Disqus 등에서 사용중이다
향후 전망
세 프레임워크를 보면 각각 뚜렷한 장점들을 가지고 있다
Spring은 안정성과 신뢰성이 최우선인 곳 에서는 앞으로도 변함없이 주력 프레임워크로 사용될 것이다
Django은 빠른 개발 속도가 필요한 스타트업이나 중소규모 프로젝트에서 강세를 보일 것이다
Node.js는 실시간 통신이 중요하고, 가볍고 빠른 서버가 필요한 환경에서 가장 많이 채택될 것이다
그래도 어느 프레임워크가 많이 사용될 지 생각해보면, 나는 node.js의 손을 들어주고 싶다
이유는 성능이 빠르기 때문만이 아니라, 현대 웹 서비스의 패러다임 변화와 가장 잘 맞아떨어진다고 생각한다
거대하고 무거운 서비스 대신에 작고 독립적인 기능들로 MVP를 먼저 생산해내는 방향으로 전환되고 있고
또, 프론트엔드와 백엔드 언어가 다른 옛날과 달리, 풀스택 개발이 가능해지면서 생산성이 더 극대화되었다
결론적으로 안정성의 시대는 스프링이, 생산성의 시대는 장고가 이끌었다면
민첩성과 실시간 상호작용이 핵심이 될 미래의 웹 시대는 Node.js가 주도할 가능성이 매우 높다고 생각한다.
일단 뭐든지 해보는게 좋다고 생각한다
프레임워크를 고민하는 시간에 한 줄이라고 코딩 해보고 이해한다면
어떤 프레임워크던지 잘 하게 될 것이라고 생각한다
파이팅!!
'IT 지식' 카테고리의 다른 글
나는 불확실한 항해를 12년간 이어갈 수 있을까? (2) | 2025.04.30 |
---|---|
Agile 기반으로 소프트웨어 개발하기 (1) | 2025.03.26 |