본문 바로가기

개발자 면접준비

[Daily] 4월 3일 데일리 과제

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

A. 트랜잭션이란 데이터베이스 관리 시스템(DBMS)에서 수행되는 작업 단위를 의미합니다.

트랜잭션은 하나 이상의 쿼리나 명령문들을 묶어서 하나의 작업으로 처리하는 것을 말하며, 데이터베이스의 상태를 변화시키는 연산들의 논리적 단위입니다. 

 

트랜잭션은 ACID라는 속성을 갖습니다.

 

원자성(Atomicity): 하나의 트랜잭션은 모든 작업이 완료되거나 모두 취소되어야 합니다. 즉, 중간에 어떠한 문제가 발생하더라도 롤백(undo)하여 이전 상태로 복구할 수 있어야 합니다.

일관성(Consistency): 트랜잭션의 수행 결과는 항상 일관성 있는 상태를 유지해야 합니다. 데이터베이스의 제약 조건과 일치하고, 트랜잭션 이전과 이후의 상태가 일관되어야 합니다.

고립성(Isolation): 트랜잭션은 서로 간섭하지 않고 독립적으로 수행되어야 합니다. 즉, 여러 개의 트랜잭션이 동시에 수행될 때도 각각의 트랜잭션은 다른 트랜잭션에 영향을 미치지 않아야 합니다.

지속성(Durability): 트랜잭션이 성공적으로 완료되면, 그 결과는 영구적으로 데이터베이스에 저장되어야 합니다.

 

트랜잭션은 데이터베이스에서 데이터의 무결성을 유지하고, 데이터의 일관성을 보장하는 중요한 개념입니다. 또한, 복수의 쿼리나 명령어를 실행할 때 중간에 문제가 생겼을 때 롤백을 통해 데이터베이스의 이전 상태로 돌아갈 수 있으므로 데이터베이스의 안정성을 보장하는 데에 큰 역할을 합니다.

 

 

Q. 웹 서버와 WAS의 차이는?

A. 웹 서버는 정적인 리소스를 제공하는 역할을 하고, WAS는 동적인 리소스를 실행하고 데이터베이스와 연동하여 처리하는 역할을 합니다. 대부분의 경우 웹 서버와 WAS를 함께 사용하여 클라이언트의 요청을 처리하도록 구성되며 

기능, 처리방식, 서버구성, 스케일 아웃 등에서 두가지 차이점을 설명할 수 있습니다. 

 

[기능]

웹 서버: 정적인 리소스(html, css, js 등)를 제공하며, 웹 프로토콜(HTTP)을 이용하여 클라이언트와 통신합니다.

WAS: 동적인 리소스(JSP, Servlet 등)를 실행하고, 데이터베이스와의 연동, 트랜잭션 관리, 보안 등의 기능을 수행합니다.

[처리 방식]

웹 서버: 클라이언트로부터 요청을 받으면 정적인 리소스를 바로 반환하므로 빠르게 처리됩니다.

WAS: 클라이언트로부터 요청을 받으면 동적인 리소스를 실행하고 데이터베이스와 연동하여 처리하므로 웹 서버보다는 처리 속도가 느릴 수 있습니다.

[서버 구성]

웹 서버: 일반적으로 클라이언트의 요청을 받아 정적인 리소스를 제공하는 역할만 수행합니다. 대표적인 웹 서버로는 Apache, Nginx 등이 있습니다.

WAS: 웹 서버와 WAS를 함께 사용하여 클라이언트의 요청을 받아 처리하도록 구성됩니다.

[스케일 아웃]

웹 서버: 로드 밸런싱 등의 기능을 사용하여 여러 대의 웹 서버를 구성하면 쉽게 스케일 아웃할 수 있습니다.

WAS: 여러 대의 WAS를 구성하여 스케일 아웃할 수 있지만, WAS는 데이터베이스와 연동하므로 WAS의 수를 늘리면 데이터베이스와의 부하도 증가하게 됩니다.