5. Spring(스프링)

종류 프레임워크
개발 VMware(기업)
주요 개발 언어 Java, Kotlin
발표일 2003년 6월

 

Spring(스프링) (위키백과, 홈페이지) 은 Java(자바) 플랫폼 기반의 애플리케이션 프레임워크이다. 개발 당시 기존의 Java EE(Java Enterprise Edition, 현재 Jakarta EE) 플랫폼 계열의 프레임워크들이 기술 복잡도 상승으로 인해 성능 문제가 발생하자, 이러한 문제를 해결한 새로운 프레임워크가 요구되었고, 이러한 문제 상황을 '겨울'과 같은 시기로 비유해 이후의 '봄'의 시기를 의미하는 Spring으로 명칭하여 개발되었다.

 

견고한 웹 서비스를 위한 프레임워크

스프링에는 개발을 위한 다양한 디자인 패턴(Design Pattern), 아키텍쳐프로그래밍 패러다임이 적용되어 개발시에 발생하는 다양한 구조적, 유지보수적 문제 상황을 해결해주며 확장성이 높다. 그중 일부는 아래와 같다.

  1. 제어 반전(IoC, Inversion of Control): 프로그램의 흐름 제어가 개발자가 아닌 반대로 프레임워크에
    의해 결정되도록 하는 디자인 패턴이다. 개발자는 프레임워크의 규격의 맞는 코드를 작성하기만 하고,
    프레임워크는 개발자 대신 규칙대로 작성한 코드를 호출하며 전체 흐름을 제어한다.
  2. 의존성 주입(DI, Dependency Injection): 객체의 의존 관계가 외부의 주입을 통해 간접적으로 이뤄
    지도록 하는 디자인 패턴이다.
  3. POJO(Plain Old Java Object) 방식: POJO는 프레임워크의 기능을 사용하는 경우에 프레임워크
    에서 객체를 상속 받을 필요 없도록 하여 가벼운 자바 객체이다.

성능 + 유연성 + 안전함

'한국정보화진흥원'에서는 스프링 프레임워크와 여러 라이브러리를 조합해 만든 공통컴포넌트, 그리고 이에 대한 통합 환경을 제공하는 '전자정부표준프레임워크'를 개발했다. 덕분에 한국 웹 개발 SI 시장에서는 거의 표준으로 사용된다.
그러나 SI 시장에 대해서 "이러한 현상으로 인해 시장의 기술 발전이 심각하게 저해되고 고착화되었다"는 의견또한 존재한다. 한국이 '자바 공화국'이라는 등의 언급처럼 한국에서 전자정부 프레임워크의 독점 때문에 한국 소프트웨어 시장에서의 기술 수요가 이를 이용하기 위한 언어인 Java에 대해서만 압도적이라는 것이고, 그 밖의 프로그래밍 언어 및 이를 기반한 기술에 대해서는 등한시되어 폐쇄적이라는 의미이다.
그러나 "이러한 문제의 본질은 본래의 국내 SI 업계의 고착화에 있다"는 의견도 있다. 전자정부 프레임워크 자체는 최신 웹 기술을 지속적으로 반영하며 발전하는 모습을 보이지만, 정작 이를 이용하는 SI 업계는 적절한 품질을 달성한 제품을 개발하거나 최신 기술을 학습하기 위해 노력하지 않는다는 것이다.

(나무위키 의견, 잡코리아 의견, OKKY 의견, 향로님 의견)