리셋 되지 말자

PSA - 일관성 있는 서비스 추상화 본문

Java(폐지)/spring 책

PSA - 일관성 있는 서비스 추상화

kyeongjun-dev 2020. 8. 13. 17:23

PSA(Portable Service Abstraction)

서비스 추상화의 예로 JDBC를 들 수 있다. JDBC라고 하는 표준 스펙으로 인해 오라클을 사용하던 MySQL을 사용하던 Connection, Statement, ResultSet을 이용해 공통된 방식으로 코드를 작성할 수 있다.
이처럼 DB의 종류에 관계없이 같은 방식으로 제어할 수 있는 이유는 디자인 패턴중 어댑터(변환기) 패턴을 활용했기 때문이다.
이처럼 어댑터 패턴을 적용해 같은 일을 하는 다수의 기술을 공통의 인터페이스로 제어할 수 있게 한 것을 서비스 추상화 라고 한다.

Spring Framework에서는 서비스 추상화를 위해 다양한 어댑터를 제공한다. 예를 들어, OXM(Object XMI Mapping: 객체와 XML 매핑) 기술만 하더라도 Castor, JAXB, XMLBeans, JiBX, XStream 등 다양한 기술이 있는데, 이 다양한 기술들이 제공하는 API는 제각각이다. 스프링은 제각각인 API를 위한 어댑터를 제공함으로써 실제로 어떤 OXM 기술을 쓰든 일관된 방식으로 코드를 작성할 수 있게 지원한다. 또한 하나의 OXM 기술에서 다른 OXM 기술로 변경할 때 큰 변화 없이 세부 기술을 교체해서 사용할 수 있게 해준다.
이처럼 서비스 추상화를 해주면서, 그것도 일관성 있는 방식을 제공한다고 해서 이를 PSA(일관성 있는 서비스 추상화)라고 한다. 스프링은 OXM뿐만 아니라 ORM, 캐시, 트랜잭션 등 다양한 기술에 대한 PSA를 제공한다.

Comments