[Spring] 스프링 삼각형: PSA

공부하는 감자·2024년 1월 31일
0

Spring Framework

목록 보기
4/5
post-thumbnail

PSA

개발자가 특정 기술에 구속되지 않고 쉽게 기술 스택을 변경하고 확장할 수 있도록 하는 것

일관성 있는 서비스 추상화

PSA(Portable Service Abstraction)는 일관성 있는 서비스 추상화를 의미한다.

서비스 추상화란, 어댑터 패턴을 적용해 같은 일을 하는 다수의 기술을 공통의 인터페이스로 제어할 수 있게 한 것이다.

  • 하위 시스템을 알지 못하거나, 변경이 있더라도 일관된 방식으로 접근할 수 있게 한다.
    • JDBC를 사용하면 데이터베이스 종류에 관계 없게 같은 방식으로 제어할 수 있다.
  • 서비스 추상화를 함으로써 SRP(단일 책임 원칙)을 준수하게 된다.
    • 코드가 간결해지고 작업 목적이 분명히 드러난다.

스프링의 PSA 지원

스프링 프레임워크에서는 서비스 추상화를 위해 다양한 어댑터를 제공한다.

  • OXM, 캐시, 트랜잭션 등 다양한 기술에 대한 PSA 제공

예: OXM

예를 들어, OXM(Object XML Mapping, 객체와 XML을 매핑) 기술의 경우 다음과 같은 기술들이 있다.

그리고 이 기술들이 제공하는 API는 제각각이다.

  • Castor
  • JAXB
  • XMLBeans
  • JiBX
  • XStream

스프링은 이 제각각인 API를 위한 어댑터를 제공함으로써, 실제로 어떤 OXM 기술을 쓰든 일관된 방식으로 코드를 작성할 수 있게 지원한다.

또한, 하나의 OXM 기술에서 다른 OXM 기술로 변경할 때 큰 변화 없이 세부 기술을 교체해서 사용할 수 있게 해준다.

이처럼 서비스 추상화를 해주면서 그것도 일관성 있는 방식을 제공한다고 해서 이를 ‘일관성 있는 서비스 추상화’, 다시 말해 PSA라고 한다.

참고 사항

PSA와 DI

추상화를 사용하면 특정 기술 환경에 종속되지 않게 개발할 수 있다.

  • 객체 간 혹은 기술 환경 간 결합도를 낮춘다.
  • 서로 독립적으로 확장할 수 있다.

그리고 이렇게 지원해주는 것에는 스프링의 DI가 매우 중요한 역할을 하고 있다.

DI는 모든 스프링 기술의 기반이 되는 핵심 엔진이자 원리이다.

PSA와 단일 책임 원칙

서비스 추상화를 통해 객체지향 설계의 원칙 중 하나인 단일 책임 원칙(SRP)를 충족할 수 있다.

단일 책임 원칙은 하나의 클래스(모듈)이 바뀌는 이유는 한 가지여야 한다는 원칙이다.

Reference

참고 서적

📔 스프링 입문을 위한 자바 객체 지향의 원리와 이해

참고 사이트

[Spring] 서비스 추상화(PSA)

profile
책을 읽거나 강의를 들으며 공부한 내용을 정리합니다. 가끔 개발하는데 있었던 이슈도 올립니다.

0개의 댓글