본문 바로가기

서버개발스터디/0주차 (Spring\Docker\Kubernetes)

#02 Spring framework 장단점과 간단정리

오늘 주제는 Spring Framework 의 특징과 탄생 배경을 간단하게 정리한다.

 

1. CGI - Servlet - JSP

2. Java EE

3. EJB

4. framework 란?

5. Spring framework 의 탄생배경

6. Spring framework 간단히 알아보기

 

1. CGI - Servlet - JSP

CGI (Common Gateway Interface) : 1990년 초창기 정적인 웹 에서 동적인 페이지를 만들기 위해 외부 프로그램과의 통신규약이다. (당연하지만 언어 종속적 이지 않다. )

   

Servlet (Server + Applet) : 은 Java 진영에서 나왔으며 applet의 사전적 의미는 "다른 프로그램 내에서 실행되는 프로그램" 이므로 Servlet은 Server 안에서 실행되는 applet이다.  이런 의미로 지어진 이유는 CGI는 서버에서 웹페이지를 만들 때 어떤 프로그램이든 상관없이 다른 어떤 프로그램을 통해서 동적인 페이지를 만들었는데 시간이 지나면서 동적인

웹 페이지의 수요가 늘어나고 동적인 웹페이지를 Server안에다가 프로그램을 넣어버렸다는 의미가 아닐까? 어쨋든 CGI의 단점인 Process 실행 (부하가 큼)  을 Servlet 은 스레드 단위로 동작 하도록 변경 하면서 서버 부하를 줄여 줄 수 있었다.

 

JSP (Java Server Page) : Servlet으로 HTML 을 출력하기 위해서는 아래와 같이 작성을 해야만 했다. 

   

Jsp 없이 Servlet 으로 동적인 웹 페이지 구현

한땀한땀 "" 안에다가 HTML 코드를 넣어줘야만 했기 때문에 개발 생산성이 좋지 않았다. 그래서 저 부분을 자동으로 할 수 있도록 만든것이 JSP 라고 생각하면 된다. 우리가 HTML 태그를 그대로 사용해서 만들어 놓으면 JVM이 읽어서 Java Servlet으로 변환하고 실행 하므로 우리는 더이상 "" 의 지옥에서 벗어 날 수 있는 것이다. 

 

    

2. Java EE (J2EE)

  • Java를 이용해 서버측 개발을 하기위한 플랫폼이다. 
  • 5.0버전 이전에는 J2EE라고 불렸으며 
  • 5.0 이후로는 Java EE로 개칭되었고 이 스팩에 따라서 제품을 구현한 것을
  • WAS (Web Application Server) 라고 부른다.
  • 아래 그림은 Java EE의 스팩이다 

 

Java EE ( J2EE )

위 그림에서 Java EE 스팩을 살펴보면 1.2부터 Servelt / JSP / EJB 가 보인다. 여기에서 EJB를 눈여겨 보면 좋을 것 같다  그 이유는 EJB의 복잡함과 단점 때문에 사람들은 POJO를 외쳤고 특정 클래스를 상속하거나 인터페이스를 구현하지 않는 평범한 자바 클래스를 이용해 EJB의 기능을 유지하면서 복잡성을 제거해서 응집도와 확정성은 높고 결합도는 낮출 수 있다고 이야기 하였고 2004년 3월 최초의 스프링 프레임워크가 등장하게 된다. 

 

3. EJB

분산 애플리케이션을 지원하는 컴포넌트 기반의 객체다. Servlet이 TOMCAT 같은 Servlet Container에 올려서 서비스 되는 것과 같이 EJB는 JBoss와 같은 EJB Container에 올려서 서비스된다.

 

장점 

  • 정형화된 비지니스 계층제공
  • 선언적인 트랜잭션 관리 제공 
  • 분산기능 제공

      

단점

  • 실행속도가 느리다.
  • 단위 테스트가 어렵다 

      (EJB 컨테이너가 종속적이기 때문에 개발 후 EJB

      컨테이너에 배포후 테스트 진행.)

  • EJB 컨테이너에 종속적이기 때문에 이식성이 떨어진다.

 

4. framework 란?

frame                   work

(틀, 규칙 or 법칙)        (일, 소프트웨어의 목적)

어떤 규칙 안에서 목적에 따라 효율적으로 구조를 짜놓는 개발 방식

 

 

5. Spring framework 탄생배경

위에서 설명한 J2EE의 EJB가 지닌 단점들을 비판하며 스프링프레임 워크가 탄생하고 인기가 많아져서 지금 까지도 많은 곳에서 사랑받고 있다. 그렇다면 EJB의 어떤 점들을 비판하면서 자신의 장점을 부각 시켰을까?

 

단순화된 단위 테스팅

의존성 주입으로 단위 테스트를 단순화 시켰기 때문에 결함을 일찍 발견 가능하고 생산성의 향상과 빌드에서 자동화된 단위테스트 도 가능해졌다.

 

아키텍처의 유연성

  • 스프링 프레임워크는 모듈식으로 독립적인 구성을 가지고 있다.
  • Spring Beans로 비지니스 로직을 위한 결량 구현체를 제공한다.    
  • AOP활용으로 Logging, Transaction, Security 등을 구현할 수 있다.
  • JDBC 모듈을 이용하여 JPA, Hibernate등과 연결이 가능하다.

 

 

6. Spring framework 와 모듈 알아보기

 

    

Spring Framework 모듈

Core Container

모든 스프링의 모듈은 Core Container 기반으로 구축된다. 스프링 프레임워크의 핵심은 빈의 생명주기와 설정 그리고 처리 방법을 관리하는 스프링 컨테이너 이다.

 

AOP

spring-AOP, spring-aspects, spring-instrumentAOP를 통해서 관점지향 프로그래밍을 풍부하게 지원하기 때문에 객체간의 결합도를 낮출 수 있도록 도와준다.

 

Messaging

spring-messaging 은 스프링 프레임워크 4는 메시지 기반 어플리케이션을 작성할 수 있는 Message, MessageChannel, MessageHandler 등을 제공한다. 그리고 해당 모듈에는 메소드에 메시지를 맵핑하기 위한 어노테이션도 포함되어 있으며 Spring MVC 어노테이션과 유사하다

 

Data Access / Integration

spring-jdbc, spring-tx, spring-orm, spring-jms, 트랜잭션 등 서비스 추상화를 통해 쉽게 데이터에 접근하는 방법을 제공합니다.



 

Web

spring-web, spring-webmvc, spring-websocket, spring-webmvc-portlet 모듈로 구성되고 스프링 웹 기술의 공통적인 기능을 정의한 해서 웹 및 포틀릿 애플리케이션 개발을 간소화하는 모듈을 포함.

        

 

Test

스프링은 테스트의 중요성을 인식하여 테스트에 전념할 수 있게 도움을 주는 모듈을 제공하고 테스트 컨텍스트 프레임워크나 목(mock) 오브젝트 등을 이용해 테스트를 할 때 사용한다.




 

       

'서버개발스터디 > 0주차 (Spring\Docker\Kubernetes)' 카테고리의 다른 글

#03 Kubernetes 란?  (0) 2021.05.09
#01 Docker 개념 정리  (0) 2021.05.05