일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- IntelliJ
- 구름LEVEL
- 코딩테스트
- dfs
- 스프링
- HTTP
- bfs
- 문자열
- Linux
- 개발자
- 해시맵
- 배열
- 도커
- 백엔드
- 주니어
- 프로그래머스
- 스프링부트
- 구현
- 해결
- 스프링 부트
- HashMap
- Java
- 이직
- 인텔리제이
- spring boot
- 자료구조
- 스타트업
- spring
- 명령어
- docker
- Today
- Total
마이의 개발 블로그
[Spring] 왜 스프링 프레임워크(Spring Framework)를 사용할까? 본문
프레임워크가 왜 필요할까?
프레임워크가 없다면 개발자가 일일이 작성해야 했을 반복적인 작업을 줄여주기 때문입니다. 프레임워크는 어플리케이션(소프트웨어)을 개발하기 위해 필요한 구조와 규칙을 제공하는 도구나 라이브러리의 집합으로, 개발 프로세스를 간소화하여 효율성을 증진시킵니다. 개발자는 프레임워크를 사용하여 핵심 로직에 집중하고, 공통적인 작업이나 기능을 재사용할 수 있습니다. 또한, 코드의 일관성을 유지하고 유지보수가 용이해진다는 장점을 얻을 수 있습니다.
프레임워크와 라이브러리는 어떻게 다른가?
프레임워크와 라이브러리 둘 다 코드의 집합이지만 이름을 통해 그 용도를 구분할 수 있습니다. 프레임워크(framework)는 프로그램의 뼈대를 구성하며, 라이브러리(library)는 도서관의 책처럼 용도에 따라 취사선택하여 사용될 수 있습니다. 보통 프레임워크 안에 프레임워크의 기능을 지원하거나 확장하는 라이브러리들이 내장되어있고, 개발 도중 필요에 따라 프레임워크에서 외부 라이브러리를 가져와 사용하기도 합니다.
프레임워크는 프로그램의 제어 흐름 주도권을 갖습니다. 즉, 프레임워크에서는 미리 정의된 규칙(순서)에 따라 프로그램을 실행하다가 필요한 순간에만 개발자가 작성한 코드를 가져와 사용합니다. 이를 제어의 역전(Inversion of Control, IoC)이라고 합니다. 반면, 라이브러리는 개발자의 행동을 제약하지 않습니다. 라이브러리의 사용법은 제각각이지만 개발자가 직접 판단해서 필요한만큼만 선택적으로 사용하면 됩니다.
스프링 프레임워크(Spring Framework)란?
자바 기반의 오픈 소스 애플리케이션 프레임워크로, 기업급 애플리케이션 개발을 위한 다양한 기능과 라이브러리를 제공합니다. 스프링의 주요 특징을 간략하게 작성해보면 아래와 같습니다.
- 경량 컨테이너(IoC 컨테이너)를 통해 객체의 라이프사이클을 관리
- 의존성 주입(dependency injection)을 통해 유지보수와 테스트를 용이하게 함
- 관점 지향 프로그래밍(aspect orient programming, AOP)을 지원하여 공통 관심 사항(로깅, 트랜잭션, 보안 등)의 코드 중복을 방지(모듈화)할 수 있음
- POJO(plain old java object) 방식 사용으로 제약조건 없이 모든 자바 객체를 사용할 수 있음
- 기타: 웹 개발 지원, 보안 기능 제공, ORM 지원 등
한국에서 유독 스프링 프레임워크가 많이 사용되는 이유
전자정부 프레임워크(eGovFrame)가 주요 원인으로 지목되곤 합니다. 정부 주도로 만들어진 이 프레임워크는 공공부문 소프트웨어 개발에 필요한 표준 프레임워크로, 스프링을 기반으로 만들어졌습니다. 열악했던 과거의 국내 소프트웨어 개발 시장에서는 돈이 될만한 프로젝트들은 몇몇 대기업을 제외하고는 공공부문에 있었기에 대부분의 SI업체들은 전자정부 프레임워크를 사용할 수밖에 없었습니다. 자연스럽게 국비학원의 커리큘럼도 이에 맞추어 설계되었고 수많은 인력들이 스프링을 장착한 채로 쏟아져나오게 됩니다.
스프링 진영에 인력이 많으니 상대적으로 양질의 자료를 구하기도 쉽고, 커뮤니티도 활발하게 운영됩니다. 또한 규모가 큰 서비스들을 운영해본 경험이 있는 사람들도 많아지게 되었습니다. IT업계가 활성화되며 빅테크들이 많이 생겨났지만 결국에는 빅테크의 서비스를 고급인력들이 안정적으로 뒷받침해주어야 하니 그들이 풍부한 경험을 가지고 있는 스프링을 자연스럽게 선택하게 됩니다. 서비스의 규모가 커지며 노드 진영에서 스프링으로 마이그레이션하는 경우는 종종 볼 수 있으나, 그 반대는 찾기가 어려운 것 같습니다.
'개발지식 > Spring' 카테고리의 다른 글
[Spring] 스프링 MVC(Spring MVC) (0) | 2023.09.15 |
---|---|
[Spring] 스프링 프레임워크(Spring Framework)와 스프링 부트(Spring Boot) (0) | 2023.09.14 |
[Spring] Spring Security의 securityFilterChain 구성 시 antMatchers() -> requestMatchers()로 변경하는 과정에서 발생했던 문제 해결 과정 (2) | 2023.08.21 |
[Spring] CORS 에러 해결 시 WebMvcConfigurer 방식이 동작하지 않는다면 (0) | 2023.08.16 |
[Spring] IntelliJ에서 Maven clean install 수행하는 방법 (0) | 2023.07.05 |