본문 바로가기
Dev/Web History

2002년 스프링의 탄생

by 펭귄안에 온천 2022. 9. 4.
728x90
반응형

 

 

1990년대 후반 Servlet, EJB, JSP, EJB의 탄생

# CGI의 문제점 초기 웹 어플리케이션 구현이는 CGI같은 기술이 사용되었다. 하지만 이런 기술들은 성능,확장성,유지보수, 보안등 여러 면에서 문제점이 있었다. CGI스크립트가 동작하려면 사용자

chung10.tistory.com

# 자바 엔터프라이즈의 역사

1. 정적 웹의 시대 : HTML정적콘텐츠

2. 동적 웹의 시대 : HTML + CGI( 1요청 1프로세스 )

3. 서블릿.JSP의 탄생 : CGI의 문제점을 해결,

4. EJB의 탄생 : 분산 시스템에서 시작하여 웹개발 권장 설계까지

5. 스프링의 탄생 : EJB의 문제점을 개선하기 위해 탄생

 

# 2002년 스프링

=> EJB를 사용하여 개발하는거는 너무 어려웠고 그것을 자바의 겨울에 비유했다.

=> 스프링이 등장함으로써 그 겨울(EJB를 사용하던 시기) 가 끝나고 봄이 찾아오게 될 것이라는 의미로 스프링이라 이름을 지었다.

 

# 스프링 특징

1. DI( Dependency Injection)- 의존성주입, 의존성을 주입하면서 객체 간 결합을 느슨하게 하는것

 

=> 객체들간의 의존성이 심하면 하나의 객체를 수정할때 다른 객체를 수정 해야 할 경우가 발생하기 때문에 유지보수가 어렵다. 그래서 의존성을 해결해야 한다.

=> EJB도 그렇고 스프링도 그렇고 객체들간의 의존성을 해결하는게 목적이다.

=> 그래서 일단 의존성을 제거했다.

=> 근데 의존성을 제거했는데 두 객체간의 연결은 어떻게 할까?

=> 그래서 의존성을 주입해준것

=> 의존성을 제거 했기 떄문에 의존성을 주입했다는 이상한 말 처럼 들리지만

=> 기존의 의존성과 의존성 주입에서의 차이는 주입이다.

=> 그 의존성을 개발자가 직접 연결하는게 아니라 프레임워크가 의존성을 주입해준다

=> 프레임워크가 대신 관리해준다 ( Ioc 까지 연결됨 )

 

2. Ioc ( Invesion of. ontrol )

- 컨트롤의 제어권이 개발자에게 있는 것이 아닌 프레임워크가 대신 해주는것을 말한다.

=> 기존의 의존관계 설정, 객체 생성등 개발자가 해줘야 했던것을 프레임워크가 대신 해준다는 의미

 

3. AOP ( Aspect Oriented Programming)

- 관점 지향 프로그래밍이라고 하며, 어떤 로직을 기준으로 핵심적인 관점, 부가적인 관점으로 나누어 보고 그 관점을 기준으로 각각 모듈화 하겠다 라는 뜻

 

=> 스프링 탄생 초반에는 스프링을 잘 안쓴것 같다.

=> 오히려 2010년대 초까지 비즈니스 로직은 PL/SQL에 작성하고 View는 JSP로 많이 작성했다.

=> 당시에는 PL/SQL, 프로시저만 잘짜면 개발 잘한다는 말도 있을정도로 오라클 프로시저를 많이 사용했다.

=> 아마 오픈소스라서 사람들이 신뢰하지 못해서 그랬나?

=> 그러나 PL/SQL은 데이터베이스에 종속적이라는 단점이 작용했다.

=> 조금씩 스프링에 눈이 돌아가게 됨

=> 스프링도 조금씩 발전하고 있었고

 

 

 

# 2014년 - 스프링 부트의 탄생

=> 스프링은 초기 구성과 설정이 복잡하다.

=> 의존성 관리하기도 힘들다.

=> 스프링부트 탄생

=> 스프링 부트 공식 사이트의 첫번째 문장이다

=> Spring Boot를 사용하면 독립적인, 상용화 수준의 Spring 기반 애플리케이션을 쉽게 만들 수 있습니다.

=> 그냥 간단하다

=> 그리고 스프링부트는 공식적으로 JSP를 사용을 권하지 않는다.

 

 

<?xml version="1.0 encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
                             http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">

    <display-name>Spring Web Application</display-name>
    
    <servlet>
        <servlet-name>dispatcher</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>/WEB-INF/spring/appServlet/servlet-context.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>dispatcher</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>

</web-app>

이렇게 복잡한 스프링의 설정이

 

spring.mvc.view.prefix=/WEB-INF/views/
spring.mvc.view.suffix=.jsp

이렇게 할 수 있음

 

=> 스프링부트는 스프링으로 어플리케이션을 만들 때에 필요한 설정을 간편하게 해준다.

=> 또한 자체적인 웹서버, 내장톰캣을 가지고 있어 빠르고 간편하게 배포할 수도 있다.

 

 

 

# 번외로 스프링이 기반이 된 다른 프레임워크

 

1. 전자정부표준프레임워크

=> 행정안전부 산하 한국정보화진흥원에서 만든 웹 기반 어플리케이션 프레임워크로 공공기관, 공기업의 웹사이트에서 자주 쓰이는 공통 기능들을 Spring을 기반으로 하여 만든 프레임워크

=> 공공기관 프로젝트 개발 과정을 표준화하기 위한 의도로 시작되었다.

=> 뭐 공무원집단, 국기가관 집단이 그렇듯이 최신 기술을 반영하지 못하는 보수적인 기술이라는 문제점이 있다.

=> 근데 생각해보면 공공기관 SI는 새로운 기술과 변화를 추구 하는것이 아니라 프로젝트의 안정성과 유지보수를 추구 하는것이기 때문에 이해가 된다.

=> 아직 옛날버전의 Java를 사용하는 공공기관 SI 프로젝트도 많음

=> 전자정부프레임워크도 버전업을 계속 하고있으며 2022년 현재 백앤드는 스프링부트 , 프론트는 리액트로 컨트리뷰션도 진행중

=> 필자는 컨트리뷰션에 참가해서 감사장도 받음( 오픈소스 참여 ㅎㅎ)

 

2. 삼성의 애니프레임

=> 삼성에서 공개한 오픈소스 기반의 Java 어플리케이션 개발 프레임워크 애니프레임

=> 업계 표준인 스프링, 하이버네이트, 아파치등을 채택

=> View단은 투비소프트의 마이플랫폼을 통해 개발자가 쉽게 화면을 구성할 수 있게 했다.

=> 하지만 지금은 삼성에서 공식지원 안하는걸로 알고있음

=> 애니프레임 사망

 

# 번외 2

1. 여러 PM을 만나다 보면 가끔 DB 프로시저, 뷰등 디비로 비즈니스 로직을 관리하는것을 선호하는 PM들이 있다.

=> 공통적으로 그런 PM들은 가끔 스프링 이전의 시대부터 개발을 시작하신 분들이였다. 혹은 DBA 출신이거나

=> 프로지서로 한번에 관리하는것이 네트워크 비용을 줄일 수 있어서 이해는 할 수있다.

=> 또한 Java를 수정할 경우 컴파일및 배포하는 과정 때문에 시스템 유지보수, 요구사항 반영의 속도를 위해서 바로 수정 가능한 프로시저로 코딩하는것도 이해는 할 수 있다.

=> 그러나 요즘은 CI/CD로 배포 자동화를 할 수 있다.

 

2. 마이플랫폼이 나와서 이야기 하는데

=> 대다수가 IE를 사용하던 시절 화면개발을 쉽게 해주는 마이플랫폼프로젝트가 꽤 있었다.
=> JSP로 구현하려면 시간과 비용이 많이 들어 화면을 쉽게 개발하게 해주는 마이플랫폼은 인기가 많았다

=> 그러나 과도한 액티브 X , 플로그인, 별도 프로그램을 설치하는것 때문에 IE의 인기는 점점 시들시들

=> 액티브X설치 해야하는 마이플랫폼도 인기가 시들시들 (2022년 9월 판매 종료)

=> 그래서 한동안 마이플랫폼 프로젝트를 웹기반으로 다시 구축하는 프로젝트가 꽤 많았다.

=> 그리고 투비소프트는 HTML5기반의 넥사크로플랫폼을 출시

=> 그러나 투비소프트 러시아에서 바이오관련 약 팔고 있다고 하던데...IT에 집중 안하는듯

 

 

 

반응형