본문 바로가기

Spring

[Spring] 트랜잭션 & TCP와 UDP

Q. 트랜잭션이 무엇인지 설명해 주세요.

 

트랜잭션은 데이터베이스 상태를 변화시키기 위해 수행하는 작업의 단위를 말한다. 상태를 변화시킨다는 것은 데이터베이스에서 SQL 질의어(Select, Insert, Delete, Update)를 통해 DB에 접근하는 것을 의미한다.

작업 단위는 사람이 정하는 기준에 따라 정해진다. 예를들어 블로그에 글을 작성하고 업데이트 된 목록을 본다면, 글을 create하고 update하는 작업이 모두 수행되어야 하나의 작업 단위가 되는 것이다.

 

[트랜잭션의 4가지 원칙]

원자성(Atomicity)

  • 한 트랜잭션 내에서 실행한 작업들은 하나의 단위로 처리한다.
  • 모두 성공해 DB에 반영되거나, 실패해 전혀 반영되지 않아야 한다.

일관성(Consistency)

  • 트랜잭션은 일관성 있는 데이터베이스 상태를 유지한다.

독립성(Isolation)

  • 동시에 실행되는 트랜잭션이 있는 경우, 서로 영향을 미치지 않는다.

영속성(Durability)

  • 트랜잭션을 성공적으로 끝마치면 결과는 항상 저장된다.
  • 모든 트랜잭션은 로그로 남고, 시스템 장애 발생 전 상태로 되돌릴 수 있다.
  • 트랜잭션은 로그에 모든 것이 저장된 후에만 commit 상태로 간주될 수 있다.

 

트랜잭션 정리해두었던 블로그 링크

https://seulki1105.tistory.com/31

 

 

Q. TCP와 UDP의 공통점과 차이점을 설명해보세요.

 

TCP(Transmission Control Protocol)는 전송을 제어하는 프로토콜이다.

일반적으로 TCP와 IP를 함께 사용하는데, IP가 데이터 전달을 처리하면 TCP는 패킷*을 추적하고 관리한다.

TCP는 연결형 서비스를 지원하는 프로토콜로 인터넷 환경에서 기본으로 사용한다. 

연속성보다 신뢰성있는 전송이 중요할 때 사용하는 프로토콜이다.

예) 파일 전송

 

패킷?
인터넷상에서 데이터를 보내기 위한 경로 배정(라우팅)을 효율적으로 하기 위해 데이터를 여러 개의 조각들로 나누어 전송하는데, 이 조각을 패킷이라고 한다.

 

특징

  • 연결 지향 방식으로 패킷 교환 방식을 사용한다.(가상 회선 방식이 아니라 패킷을 전송하기 위한 논리적 경로를 배정한다.)
  • 3-way handshaking 과정을 통해 연결을 설정하고, 4-way handshaking을 통해 해제한다.
  • 흐름 제어 및 혼잡 제어
  • 높은 신뢰성을 보장한다.
  • UDP보다 속도가 느리다.
  • 전이중(Full-Duplex), 점대점(Point to Point) 방식

 

UDP(User Datagram Protocol)는 사용자 데이터그램 프로토콜이다.

데이터그램은 독립적인 관계를 지내는 패킷이라는 뜻.

UDP는 비연결형 프로토콜로 연결을 위해 할당되는 논리적인 경로가 없어서 각각의 패킷은 다른 경로로 전송되고, 각각의 패킷은 독립적인 관계를 지니게 된다. 

신뢰성보다 연속성이 중요한 서비스에 사용하는 프로토콜이다.

예) 실시간 서비스(streaming)

 

특징

  • 비연결형 서비스로 데이터그램 방식을 제공하여 연결을 설정하고 해제하는 과정이 존재하지 않는다.
  • 정보를 주고 받을 때 정보를 보내거나 받는다는 신호절차를 거치지 않는다.
  • UDP헤더의 CheckSum 필드를 통해 최소한의 오류만 검출한다.
  • 데이터의 전송을 보장하지 못해 신뢰성이 낮다.
  • 서로 다른 경로로 독립적으로 처리함에도 패킷에 순서를 부여하여 재조립하거나 흐름 제어 또는 혼잡 제어와 같은 기능도 처리하지 않기 때문에, TCP보다 속도가 빠르고 네트워크 부하가 적다.

 

 

 

 

 

 

참고

https://mangkyu.tistory.com/15