Section 3. 모의 면접

Kim·2022년 11월 17일
0

Retrospect

목록 보기
7/11
post-thumbnail

오늘은 Section 3 마지막 날이기 때문에 기술면접 실습이 있었다. 아래는 내가 받은 질문과 그에 대한 답변을 정리해보았다.
기술면접을 해보면서 느낀점은 아직 개념이 머릿속에 정리되어 있지 않았다는 점이다. 어떤 것인이는 대강 알지만, 스크립트 없이 다른 사람이 이해하도록 설명하는게 쉽지 않았다.
그래도 기술면접을 준비하는 과정에서 개념을 다시 학습하면서, 준비하기 전보다는 어느정도 이해도가 높아지는 것 같다.


트랜잭션의 정의

트랜잭션은 여러 작업들을 하나의 그룹으로 묶어서 처리하는 단위입니다.
여러 개의 작업들이 하나의 그룹으로 묶여 처리되는 도중에 단 하나라도 처리에 실패할 경우 트랜잭션이라고 할 수 없습니다.
물리적으로 여러 개의 작업이지만, 논리적으로는 하나의 작업으로 인식되어 모두 성공하거나, 모두 실패하거나 둘 중 하나로만 처리되어야 합니다.

트랜잭션의 특징

트랜잭션의 특징으로는 ACID 원칙을 얘기할 수 있습니다.

  1. A는 원자성입니다. 원자성은 작업을 더 이상 쪼갤 수 없다는 것인데, 어떤 작업은 처리하고 어떤 작업은 처리하지 않는 식으로 쪼갤 수 없다는 의미입니다.

  2. C는 일관성입니다. 일관성은 트랜잭션이 에러 없이 성공적으로 종료될 경우, 비즈니스 로직에서 의도하는 대로 일관적이게 저장되거나 변경되는 것입니다.
    만약 3문제를 맞추면 3점이 증가할 것이라고 예상했는데, 다른 수만큼 증가했다면 일관성에 위배됩니다.

  3. I는 격리성입니다. 격리성은 여러 개의 트랜잭션을 실행하는 경우, 각각의 트랜잭션이 다른 트랜잭션에 영향을 주지 않고 독립적으로 실행되어야 한다는 것입니다.

  4. D는 지속성입니다. 지속성은 트랜잭션이 완료되면, 결과는 지속되어야 한다는 것입니다. 즉, 데이터베이스가 종료되어도 데이터는 저장소에 저장되어 지속적으로 유지되어야 한다는 의미입니다.


Given - When - Then 패턴

Given-when-then이라는 용어는 BDD 테스트 방식에서 사용하는 용어로 테스트 케이스의 가독성을 높여주는 표현 방식입니다.

Given은 테스트를 위한 준비 과정을 명시하는 영역입니다.
즉, 테스트에 필요한 전제 조건이 포함되며 테스트 대상에 전달되는 입력 값도 포함됩니다.

When은 테스트 할 대상이나 동작을 지정하는 영역입니다.

마지막으로 Then은 테스트의 결과를 검증하는 영역입니다. 예상하는 결과와 테스트 대상 메서드의 동작 수행 결과 값을 비교하여 기대한 결과대로 동작하는지를 검증하는 코드가 포함됩니다.


Swagger와 Spring Rest Docs의 장단점

Swagger

Swagger는 애너테이션 기반의 API 문서화 방식으로, 애플리케이션 코드에 문서화를 위한 애너테이션을 추가해서 사용하는 방식입니다.

Swagger는 간편하게 적용할 수 있고 문서 내에서 API를 테스트할 수 있다는 장점이 있습니다.
또한 API 툴로써 기능을 사용할 수 있습니다.

반면에, 가독성과 유지 보수성이 떨어지며, 테스트 코드 없이 문서를 생성할 수 있기 때문에 API 문서와 API 코드 간의 정보 불일치 문제가 발생할 수 있습니다.

Spring Rest Docs

Spring Rest Docs는 테스트 코드 기반의 API 문서화 방식으로, 애플리케이션 코드에 문서화를 위한 정보가 포함되지 않습니다.

API 문서를 작성하기 위해 테스트 코드를 반드시 작성해야 하므로 문서의 신뢰성이 높고, Spring Boot Starter로 매우 간편하게 설정할 수 있다는 장점이 있습니다.

반면에 테스트 코드가 강제된다는 점과 문서에서 API를 바로 테스트할 수 없으며, API 툴로써 기능은 제공하지 않습니다.

0개의 댓글