Next-Squad/Interview-Question

[Spring] 21. PSA(서비스 추상화)란 무엇인가요?

zbqmgldjfh opened this issue · 1 comments

PSA란 무언인가?

Spring의 Triangle의 3요소 중 하나인 PSA에 대하여 면접용으로 간략하게 설명합니다.

키워드

Spring, Spring Triangle

PSA(서비스 추상화)

Spring을 사용하면 서비스 추상화를 통해 특정 환경이나 서버, 기술에 종속되지 않으며 유연한 애플리케이션을 개발할 수 있다.
스프링에서는 추상화 계층을 통해 구체적인 기술과 환경에 종속되지 않도록 한다.
즉, 추상화 계층을 사용해 어떤 기술을 내부에 숨기고 개발자에게 편의성을 제공하는 것 이다.

대표적인 예로 Spring Web MVC 라는 추상화 계층과 Transaction이 있다.


1. Web MVC

Spring에서 Servlet기반의 Application을 만들고 있음에도 불구하고, Servlet 코드는 전혀 보이지 않는다.
단순하게 Controller만 봐도 @GetMapping, @PostMapping등의 에노테이션을 통해 편하게 코드를 작성한다.
그 기반에서는 사실 Servlet기반으로 코드가 구현되는 것 이다.

기존의 Servlet을 개발할때 처럼 HttpServlet을 상속받고 doGet(), doPost()를 구현하는 등의 작업을 하지 않아도 되는 것 입니다.

즉, Service Abstraction(서비스 추상화)의 목적 중 하나가 이러한 편의성을 제공하는 것입니다.


2. Transaction

원래는 JDBC를 사용해서 Transaction을 걸때는 다음과 같이 auto commit을 꺼줘야 합니다.

dbConnection.setAutoCommit(false);
 ~~
dbConnection.commit()

이후 명시적으로 commit을 호출하면서 Transaction처리를 할 수 있게되죠.
즉, Low level로 트랜잭션 처리를 하려면 명시적으로 setAutoCommit(false)와 commit(), rollback()을 호출해줘야만 합니다.

하지만 Spring에서는 @transactional 에노테이션을 메서드에 추가하면, 알아서 Transaction처리가 되죠!

PSA를 통해 내부적으로 복잡함을 감춘것입니다!


References
https://blogshine.tistory.com/480