개발공부

Spring 삼각형의 요소 PSA

holimc 2023. 6. 15. 00:40

PSA ( Portable Service Abstraction, 휴대용 서비스 추상화 ) 

스프링 삼각형의 3대 요소는 DI (+ IoC), DI, PSA 세가지다.

스프링에서는 환경의 변화와 상관 없이, 기술을 내부에 은닉하고 개발자에게 편의적으로 제공하는 서비스 추상화가 존재한다. 서비스 추상화를 예시로 설명하자면 트랜잭션을 사용하기 위해 @Transactional 어노테이션을 쓴다거나, 컨트롤러에서 @GetMapping 을 사용할 때 추상화를 통해 기술은 내부적으로 숨겨지고 서비스를 제공한다. 앞에서 나온 말처럼 '기술은 내부에 은닉하고, 개발자에게 편의적으로 제공' 한다. 더 나아가 서비스 추상화로 제공되는 서비스를 묶고, 다른 기술 스택으로 바꿀 수 있는 확장성을 갖춘것이 PSA (Portable Service Abstraction) 이다.

 

PSA의 Portable은 휴대용이라는 뜻이지만, 비즈니스 로직을 수정하지 않고 다른 기술 스택으로 변경할 수 있다는 것을 의미한다. DB 사용을 예로 들면 JDBC를 사용할 수도 있고, JDBC에서 MySQL을 사용할수도있으며 Oracle로 변경할 수도 있고 JPA로 ORM을 이용할 수도 있는 것이다. 이는 추상화 계층에서 여러가지 서비스를 제공하기에 가능하며 이는 OOP 5대 원칙의 OCP에 들어 맞는다. '확장엔 열려있고, 수정에는 닫혀있는' 형식이다. PSA에 맞게 구현될수록 스프링을 더 객체지향적으로 쓸 수 있게 되는것이다.