[기술면접 스터디] [230228] WS & WAS, 자료구조 (stack, queue, array, linked list)
Q1. 웹서버와 WAS의 차이에 대해 말씀해주세요. 웹서버는 HTTP 기반에서 클라이언트의 요청을 서비스하는 기능을 담당합니다. 주로 정적인 컨텐츠의 경우 WAS를 거치지 않고 바로 자원을 제공하기도 하고, 동적인 컨텐츠 제공을 위해 WAS에 요청을 전달하는 역할을 담당하기도 합니다. WAS 앞에 WS로 reverse proxy를 하는 이유는 크게 세가지로 분류할 수 있습니다. 첫째, WAS의 포트나 민감 정보를 감추거나 특정 사용자의 요청에만 응답하고, SSL 인증서를 적용하여 보안을 강화 할 수 있습니다. 둘째, 캐시 서버로 사용이 가능하여, 정적 리소스를 요청하는 경우, WAS를 거치지 않고 바로 응답을 할 수 있습니다. 마지막으로 여러대의 WAS 앞에 두고 로드 밸런싱이 가능합니다. 무중단 배포시..
[기술면접 스터디] [230227] 트랜잭션, TCP & UDP
Q1. 트랜잭션이 무엇인지 설명해주세요. 트랜잭션은 DB에서 하나의 논리 기능을 수행하기 위한 쿼리 묶음입니다. 트랜잭션의 특징으로는 원자성, 일관성, 격리성, 지속성의 ACID가 있습니다. 원자성이란, "all or nothing"을 의미하며, 커밋과 롤백으로 이를 보장합니다. 일관성은 "허용된 방식"으로만 데이터를 변경하는 것을 의미합니다. 예를 들어, 계좌 잔고가 0원이라면 5만원을 타 계좌로 입금할 수 없습니다. 격리성이란 트랜잭션 중 서로 끼어들지 못하는 것을 의미합니다. 격리 수준에는 SERIALIZABLE, REPEATABLE_READ, READ_COMMITED, READ_UNCOMMITED의 격리 수준이 존재하고, 격리 수준에 따라 한 트랜잭션 내에서 동일한 쿼리를 보냈을 때 해당 조회 결..
[기술면접 스터디] [230224] parameter vs argument, process vs thread
Q1. parameter와 argument의 차이에 대해 설명해주세요. parameter는 함수 등에 사용되는 매개변수고, argument는 어떤 연산을 위해 전달 받는 인자 값입니다. 예를 들어, 배열의 특정 인덱스의 값을 찾아주는 findValue 함수가 있습니다. 이때, 함수를 선언하면서 parameter로 array와 index를 선언합니다. 이후, findValue 함수를 호출하며 argument로 [1, 2, 3]을 순서대로 갖는 배열과 찾고자 하는 인덱스 2를 입력하여 3이라는 값을 리턴 받을 수 있습니다. function findValue(array, index) {// array와 index가 parameter return array[index] } findValue([1,2,3], 2)..
[기술면접 스터디] [230223] MAS / generics / List, Set, Map, HashTable
Q1. MSA (Microservice Atchitecture)란? MSA는 작은 레고 블럭 여러개를 쌓아 큰 구조물을 만들 듯, 하나의 큰 어플리케이션을 여러개의 작은 어플리케이션으로 쪼개어 변경과 조합이 가능하도록 만든 아키텍쳐라고 할 수 있습니다. 각각의 서비스는 크기가 작은 모노리틱 아키텍처와 유사한 구조를 가지고, 독립적으로 배포가 가능합니다. 또, 다른 서비스에 대한 의존성이 최소화 되어 독립적 운영이 가능합니다. 마지막으로 개별 프로세스로 구동 되며, REST와 같은 가벼운 방식으로 통신되어야 합니다. MSA의 장점으로는 서비스 별 배포가 가능하므로, 전체 서비스의 중단 없이 개별 서비스를 배포할 수 있으며, 확장이 쉽고, 클라우드 사용에 적합한 아키텍처입니다. 장애의 관점에서 부분적 장애가..