Spring PSA

PSA (Portable Service Abstraction)란?

PSA는 Portable Service Abstraction 의 약자로 이동이 쉬운 서비스 추상화라는 의미를 가진다. 환경의 변화와 관계없이 일관된 방식의 기술로의 접근 환경을 제공하려는 추상화 구조를 말한다. 외부 라이브러리들은 Spring에서 사용할 때 내부구현이 달라지더라도 동일한 인터페이스로 동일한 구동이 가능하게끔 설계되어 있으며 의존성을 고려할 필요가 없다.

서비스 추상화란? 성격이 비슷한 여러 종류의 기술을 추상화하고 이를 일관된 방법으로 사용할 수 있도록 하는 것이다. 서비스 추상화의 좋은 예는 바로 JDBC이다. JDBC라는 표준 스펙이 존재하기 때문에 DBMS를 Oracle을 사용하던, MySQL을 사용하던 공통된 방식으로 코드를 작성할 수 있다. 데이터베이스 종류에 관계없이 같은 방식으로 제어 할 수 있는 디자인패턴(어댑터 패턴)을 적용해 다수의 기술을 공통 인터페이스로 제어할 수 있도록 한 것을 서비스 추상화라고 한다.
스프링에서는 OXM, ORM, 캐시, 트랙잭션등 다양한 기술에 대한 PSA를 제공한다.

이러한 점에서 Spring PSA 는 확장에는 열려있고 수정에는 닫혀 있어야 한다는 OCP(Open Closed Principle)OCP에 대표적인 예시라고 할 수 있다.