ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • ejb? spring? spring boot까지?
    개발/개발관련 2019. 1. 25. 17:56

    일단 크게 ejb와 spring부터

    ejb는 전회사, spring은 현회사에서 사용하고있어서 차이점이 궁금했다.


    EJB

       - 동시접속자수가 10,000이상 이상인 사이트 구축시 사용하는 콤포넌트 기술 입니다.

       - 동시접속자수가 많은 가운데 안정적인 트랜잭션이 필요한 사이트 구축시 사용합니다. 

       - 접속자수가 많은 공공기관, 기상청, 병무청, 금융, 보험, 포털사이트, 게임사이트, 기업등에서 집중적으로 사용

       - EJB 시스템은 속도는 느리지만 개발시에 개발자에게 많은 자동화된 기능을 제공해 분산 시스템 구축을 쉽게 해준다.

       - EJB는 JSP, Beans를 사용한 시스템보다 속도는 느리지만 안정적인 분산 시스템을 제공한다.

       - 기초기술(JSP, BEANS, RMI, Servlet, Serialization직렬화, Transaction, Connection Pooling)을 알면 EJB는 배우기 쉽고 사용하기 쉽다.

       - EJB 규약을 집중적으로 습득하면 쉽게 EJB 콤포넌트를 개발할 수 있다.


     EJB 개발을 위한 프로그래밍 방법 및 장점

    (EJB 컨테이너(Weblogic)로 부터 아래의 항목을 자동으로 지원 받을 수 있음으로 어플리케이션을 신속히 구축할 수 있다.)


       - 인스턴스 풀링: 객체를 미리 생성하여 메모리에 저장하여 사용준비 상태에 들어가도록 함, 많은 동시접속자에 대한 안정성 지원

       - 트랜잭션 처리: 자동으로 컨테이너가 모든 처리메소드에 대하여 트랜잭션을 처리해줌, 안정적인 데이터 조작

       - 퍼시스턴스 관리: 빈즈의 상태를 메모리에서 사용여부에 따라 자동으로 활성화/비활성화를 실행해 관리해줌

       - FAT Client를 Thin Client로, n-tier 시스템을 구축할 수 있다.

       - Weblogic, Webspere주로 사용, 국산은 제우스 사용

       - EJB 컴포넌트들이 Loading되어 활동하는 서버 쪽 프로그램, 컴포넌트의 생성, 소멸, 라이프 사이클, 보안, Threading 등의 서비스를 제공


    EJB단점

      - 복잡한 프로그래밍 모델

      - 특정 환경에 쉽게 종속적인 코드

      - 필요없이 특정 기술에 종속적인 코드

      - 컨테이너에 안에서만 동작할 수 있는 객체구조

      - 자동화된 테스트가 매우 어렵거나 불가능

      - 객체지향적이지 않음

      - 형편없는 개발생산성

      - 한심한 이동성(portablity)


    EJB컨테이너가 제공하는 것들 

      1. 트랜잭션 관리

      2. 인증과 접근 제어

      3. EJB 인스턴스 풀링

      4. 세션관리

      5. 지속성 메커니즘

      6. 데이터베이스 커넥션 풀링



    SPRING

    특징

       - 크기와 부하의 측면에서 경량

       - 제어 역행(IoC)이라는 기술을 통해 애플리케이션의 느슨한 결합을 도모

       - 관점지향(AOP) 프로그래밍을 위한 풍부한 지원을 함

       - 애플리케이션 객체의 생명 주기와 설정을 포함하고 관리한다는 점에서 일종의 컨테이너(Container)라고 할 수 있음

       - 간단한 컴포넌트로 복잡한 애플리케이션을 구성하고 설정할 수 있음

       - 스프링은 확장성이 높음

       - 스프링은 의존성 주입(DI : Dependency Injection)을 지원

       - 스프링은 POJO(Plain Old Java Object) 방식의 프레임워크


    단점

       - 배워야한다

       - 초기세팅이 힘들다(spring boot 사용하면 어느정도 해결된다라고하던데 안써봄)


    여담

    Spring은 웹을 만드는 도구가 아니라 DI를 이용하여 JAVA 어플리케이션을 만들 수 있는 프레임워크 이다. 여기에서 추가적으로 웹 MVC모듈을 제공하여 웹을 효과적으로 만들수 있도록 도와주는 것 뿐이다.



    EJB에 비해 Spring을 Java 기술 요건으로 요구하는 건수가 훠어어어얼씬 많음(국내기준)


    스프링 프레임워크는 이러한 문제점(EJB 단점 등)을 개선하기 위해 처음 개발되었고, 특히 고가의 풀스택(full stack) 자바EE 서버가 아닌 탐캣(Tomcat)과 같은 일반 서블릿 컨테이너에서도 구동 된다는 것이 큰 강점으로 작용. 서버제품을 바꿀때 포팅 작업 필요X

    탐캣도 성능이 좋아지면서 실무에서 쓰기에 무리가 없어진것도 한몫함


    기능적으로 지금은 스프링을 사용하지 않아도 자바EE 서버에서 개발한다면 의존성 주입이나 스케줄러, 배치 작업, 트랜잭션 자동화, ORM 등 서버 개발에 필요한 거의 모든 기술을 편리하게 사용할 수 있음

    하지만 탐캣 같은 서블릿 컨테이너 기반 개발이 인기를 얻는 통에 풀스택 상용 자바EE 서버 시장의 수요가 줄어들었고, 무엇보다 기술 환경의 변화로 인해 더 이상 자바EE와 같은 거대한 공통 플랫폼 위에 모든 것을 쌓아 올리기 보단 도커(Docker)나 마이크로 서비스 아키텍쳐를 통해 작은 단위 시스템을 느슨하게 연결하는 방식의 개발이 점차 대세가 됨


    스프링 부트(Spring Boot)의 출현으로 이제는 서블릿 컨테이너 조차 서비스에 내장한 형태의 배포 방식이 주목을 받는 것을 보면, 풀스택 자바EE 서버에 대한 수요는 더욱 축소될 것으로 예상됨

    (자세한 내용은 참고 URL에서 확인하기바람. 긁어온거라)





    참고

    https://okky.kr/article/415474

    https://m.blog.naver.com/sillllver/220593543939

    https://opentutorials.org/course/2428/13594





















    728x90

    '개발 > 개발관련' 카테고리의 다른 글

    지도 api  (0) 2019.04.15
    스크립트에서 this  (0) 2019.01.28
    log4j , slf4j 뭐지 이게  (0) 2019.01.25
    maven Gradle  (0) 2019.01.25
    아키텍처  (0) 2019.01.25
Designed by Tistory.