본문 바로가기
Spring

[Spring] PSA 란? (Portable Service Abstraction)

by jungha_k 2022. 10. 12.

PSA란? (Portable Service Abstraction)


추상화(Abstraction)의 개념

클래스의 본질적인 특성만을 추출해서 일반화 하는 것

 

*설계 관점에서는 추상화 < 일반화가 더 적절!

 

* Java에서 코드로 추상화 방법? = 추상 클래스, 인터페이스

 

 

추상화의 예

 

일반적인 특성을 뽑아낸 A 클래스를 작성하고,

A 클래스를 확장받은 B, C, D 클래스는 

A클래스의 일반화된 동작을 자신만의 고유한 동작으로 재구성 가능하다.

 

클라이언트는 B, C, D 클래스를 사용할때

객체를 자신의 타입에 할당하지 않고, A클래스 변수에 할당을 해서 접근을 한다.

 

 

추상화를 하는 이유

 

클라이언트(웹브라우저) 입장에서는 A클래스만 일관되게 바라보며

하위 클래스의 기능을 사용할 수 있다.

 

So, PSA(일관된 서비스 추상화) =

클라이언트가 추상화 된 상위 클래스를 일관되게 바라보며 하위 클래스의 기능을 사용하는 것!

 


서비스에 적용하는 PSA 기법

 

서비스 추상화 = 추상화의 개념을 애플리케이션에서 사용하는 서비스에 적용하는 기법

 

ex)

JdbcConnector 인터페이스를 통해

OracleJdbcConnector, MariaDBJbcConnector, SQLiteJdbcConnector 과 간접적으로 연결됨

(= 느슨한 결합)

 

= 일관된 방식으로 해당 서비스의 기능 사용 가능

 

 

PSA의 장점 

1. 서비스의 기능에 접근 방식 자체를 일관되게 유지 가능

2. 기술 자체를 유연하게 사용할 수 있음

 


PSA가 필요한 이유

 

= 서비스를 이용하기 위한 접근 방식을 일관된 방식으로 유지!

 

➡ 애플리케이션에서 사용되는 기술이 변경되더라도, 

최소한의 변경만으로 변경된 요구 사항 반영하기 위함

 

➡ 애플리케이션의 요구 사항 변경에 유연하게 대체 가능

 

 

* Spring : 트랜잭션 서비스, 메일 서비스, Spring Data 서비스 등에 PSA 적용됨

댓글