본문 바로가기

좋아하는 것_매직IT/1.spring

3.Spring, 스프링 프로젝트에는 어떤것이 있을까요? ^^

반응형

스프링 프로젝트에 대해서 알아볼까요?

  • Spring Framework 는 엔터프라이즈 애플리케이션의 핵심 기능을 위한 기반을 제공함.
    • 의존성주입
    • 데이터
    • 기타등등
  • Spring Framework 이외의 프로젝트는 아래 기능을 제공한다.
    • 배포
    • 클라우드
    • 빅데이터
    • 배치 
    • 보안
    • 즉, 엔터프라이즈 공간의 다른 문제에 대한 통합 및 솔루션을 제공.
  • 그럼, 주요 스프링 프로젝트는 무엇이 있을까?
    • Spring Boot
    • Spring Cloud
    • Spring Data
    • Spring Batch
    • Spring Security
    • Spring HATEOAS
    • 이외의 여러 프로젝트들이 진행되고 있음. 자세한 사항은 아래 참고페이지를 참고하시면 될것 같습니다. ^^
      • 아래는 참고페이지임.
        • https://spring.io/projects
        • 해당 페이지 서두에 아래와 같이 적혀 있음.
          • From configuration to security, web apps to big data—whatever the infrastructure needs of your application may be, there is a Spring Project to help you build it. Start small and use just what you need—Spring is modular by design.

Spring Boot

  • 애플리케이션을 어떻게 개발해야 하는지에 대한 고민을 해결해줌.

Spring Cloud

  • 클라우드용 애플리케이션을 개발하기 위한 고민을 해결해줌.
    • 즉, 클라우드용 애플리케이션을 개발하기 위해 빠르게 진보하고 있는중임.
  • 분산 시스템의 일반적인 패턴을 위한 솔루션을 제공함.
  • 개발자가 공통 패턴을 구현하는 애플리케이션을 신속하게 생성할 수 있게 해줌.
    • 아래와 같은 주요 패턴을 지원함.
      • 구성관리
      • 서비스 디스커버리
      • 서킷 브레이커
      • 지능형 라우팅

Spring Data

  • 현재 자주 쓰이고 있는 SQL 데이터 베이스 및 다양한 NoSQL 데이터베이스와 관련된 여러 종류의 데이터베이스에 일관된 데이터 액세스 방식을 제공함.
  • 즉, 다양한 스펙 및 Data Repository와의 통합을 제공함.
    • JPA(JAVA Persistence API)
    • MongoDB
    • Redis
    • Solr
    • Gemfire
    • Apache Cassandra
  • 주요기능은 아래와 같음.
    • Method 이름에서 쿼리를 결정해 Repository 및 Object mapping 에 대한 추상화를 제공함.
    • 간단한 Spring Integration 
    • Spring MVC Controller 와의 통합.
    • 고급 자동 감사 기능 
      • 생성자, 생성일, 마지막 수정자, 마지막 수정일

Spring Batch

  • 고성능 요구사항이 있는 대용량 배치 프로그램을 위한 솔루션을 제공함.
  • 주요기능은 아래와 같음
    • 작업을 시작, 중지 및 재시작하는 기능
    • 데이터를 Chunks 로 처리하는 기능
    • 단계를 재시도하거나 실패한 단계를 건너뛸 수 있는 기능
    • 웹기반 관리 인터페이스

Spring Security

Spring HATEOAS

  • HATEOAS는 Hypermedia As The Engine Of Application State의 약자로 하이퍼미디어를 REST API의 상태 정보를 관리하기 위한 매커니즘으로 활용하는 것을 말함
    • REST API에서 클라이언트에 리소스를 넘겨줄 때 특정 부가적인 리소스의 링크 정보를 넘겨줌
      • 이를 통해서 REST API의 리소스 상태에 따른 관리를 진행함.
    • 그럼, HATEOAS를 쓰는 이유는 몰까요? ^^ 
      • 공부한 바로는, 아래와 같은 기존 REST API의 단점을 보완하려고..^^
      • 단점은 아래와 같습니다.
        • 하나, REST API는 앤드포인트 URL이 정해지고 나면 이를 변경하기 어렵다는 단점이 존재함. 
          • 만일 API의 URL을 변경하게 되면 모든 클라이언트의 URL까지 수정해야하기 때문에 번거로워지므로 기존 다른 API를 지속적으로 추가하게 됨.
          • 즉, URL 관리가 어렵게 됨. 
        • 둘, 전달받은 정적 자원의 상태에 따른 요소를 서버 단에서 구현하기 어렵기 때문에 클라이언트 단에서 이 부분에 대한 로직을 처리해야함
      • 다시말해서, 위의 단점들을 links 요소를 통해 href 값의 형태로 보내주기 때문에 자원 상태에 대한 처리를 링크에 있는 URL을 통해 처리할 수 있게됨.
  • 주요목표
    • 즉, 클라이언트로부터 서버를 분리하자는 것.
  • Spring HATEOAS는 HATEOAS 구현체를 제공함.
    • 특히, Spring MVC로 구현된 REST 서비스에 적합함.
  • 주요기능은 아래와 같음.
    • 링크가 깨지는 것을 줄이기 위해, 서비스를 제공하는 링크 정의를 단순화함.
    • JAXB(XML기반) 및 JSON 통합 지원
      • JAXB(Java Architecture for XML Binding)란?
      • JSON 이란?
        • JSON(제이슨[1], JavaScript Object Notation)은 속성-값 쌍( attribute–value pairs and array data types (or any other serializable value)) 또는 "키-값 쌍"으로 이루어진 데이터 오브젝트를 전달하기 위해 인간이 읽을 수 있는 텍스트를 사용하는 개방형 표준 포맷임.
        • 참고페이지
    • 서비스 소비자 지원
      • 클라이언트사이드

결론

  • Spring Framework 이외의 프로젝트는 아래 기능을 제공한다.
    • 배포
    • 클라우드
    • 빅데이터
    • 배치 
    • 보안
  • 즉, Spring 프로젝트트들은 엔터프라이즈 공간의 다른 문제에 대한 통합 및 솔루션을 제공하고 있음.
  • 오늘도 Spring Framework 외의 주요 프로젝트들이 무엇이 있는지에 대한 마술(?) 한가지 획득완료, 감사합니다.^^
300x250