본문 바로가기
반응형

전체 글376

WAS, 웹 서버 차이점 웹 서버웹 서버는 정적 컨텐츠(HTML, CSS, JS, 이미지 등)를 제공하는 역할을 수행한다. 동적 컨텐츠 요청 시 요청을 WAS로 전달할 수도 있다. 대표적인 웹 서버로는 Apache, Nginx 등이 있다.WAS반면, 자바 진영에서 WAS(Web Application Server) 는 서블릿 컨테이너 기능을 제공하고, 동적 컨텐츠를 생성하거나, 애플리케이션 로직을 실행하는 데 특화되어 있다. 대표적인 WAS로는 Tomcat이 있습니다.정리하자면, 웹 서버는 정적 컨텐츠 제공에 특화되어 있으며, WAS는 동적인 컨텐츠 생성과 데이터 처리에 특화되어 있다.WAS 도 정적 컨텐츠를 제공할 수 있는데 웹 서버가 따로 필요한 이유WAS가 너무 많은 역할을 담당하면 과부하될 수 있다. 웹 서버를 따로 분리하.. 2025. 4. 7.
자료구조 스택 스택(Stack) 은 후입선출이라는 개념을 가진 선형 자료구조다. 스택 자료구조에서 삭제(pop)는 가장 최상단(top)에서만 이루어진다. 비어있는 스택에서 값을 추출하려고 시도하는 경우를 스택 언더플로우라고 하며, 스택이 넘치는 경우를 스택 오버플로우라고 한다. 대표적인 활용 사례는 스택 메모리, 브라우저 뒤로가기 기능, 언두 기능, 수식 괄호 검사 등이 있다.자바 스택 사용 방법Stack이라는 클래스를 사용할 수 있다. 하지만, Deque 인터페이스 구현체를 사용하는 것이 권장된다. 왜냐하면, Stack 클래스는 내부적으로 Vector를 상속 받고 있기 때문이다. Vector를 상속받은 Stack은 인덱스를 통한 접근, 삽입, 제거 등이 실질적으로 가능하다. 이는 후입선출 특징에 맞지 않기 때문에 개.. 2025. 4. 7.
유니온-파인드 알고리즘 집합 알고리즘에 주로 사용되는 연산: 합치기, 탐색Union: 합치기, Find: 탐색활용 시나리오조건: 여러 개의 그룹이 형성되어 있음문제: 특정 원소가 주어졌을 때, 이 원소들이 같은 그룹인지 판단해야 할 경우유니온-파인드 알고리즘과 경로 압축 알고리즘 활용파인드 연산특정 노드의 루트 노드가 무엇인지 탐색하는 방법특정 노드가 같은 집합에 있는지 확인할 때 사용A, B 두 노드가 있을 때 이 노드의 루트 노드가 서로 같다면 같은 집합에 속한 것특정 노드부터 재귀로 거슬러 올라가며 루트 노드를 찾음과정현재 노드의 부모 노드를 확인한다. 부모 노드를 확인하다가 부모 노드가 루트 노드이면 찾기 연산을 종료한다.1에서 찾기 연산이 종료되지 않으면 1을 반복한다.1단계집합을 정의하고, 노드 7의 루트 노드를 찾.. 2025. 4. 4.
MySQL InnoDB 갭락과 넥스트키 락 정의 및 팬텀 리드 방지 팬텀 리드(Phantom Read)Phantom Read는 트랜잭션이 동일한 조건의 쿼리를 반복 실행할 때, 나중에 실행된 쿼리에서 처음에는 존재하지 않았던 새로운 행이 나타나는 현상을 말한다. 이는 주로 읽기 일관성(Read Consistency) 을 유지하는 과정에서 발생할 수 있는 문제로, 데이터의 삽입이나 삭제가 다른 트랜잭션에 의해 이루어질 때 발생한다.-- 트랜잭션 A 시작START TRANSACTION;-- 트랜잭션 A 첫 번째 조회SELECT * FROM orders WHERE amount > 150;-- 트랜잭션 B 시작START TRANSACTION;-- 트랜잭션 B 새로운 행 삽입INSERT INTO orders (customer_id, amount) VALUES (4, 250);--.. 2025. 4. 4.
데이터베이스 시스템 동시성 제어 방법 MVCC(Multi-Version Concurrency Control)MVCC는 데이터의 여러 버전을 유지하여 트랜잭션이 동시에 데이터를 읽고 쓸 수 있도록 하는 방식이다. 각 트랜잭션은 자신만의 일관된 스냅샷을 기반으로 데이터를 읽어, 다른 트랜잭션의 변경 사항에 영향을 받지 않는다.데이터의 각 버전을 유지하여 읽기 작업이 쓰기 작업과 독립적으로 이루어질 수 있다. 트랜잭션은 시작 시점의 스냅샷을 기반으로 데이터를 읽어, 다른 트랜잭션의 변경 사항을 보지 못한다.또한 읽기 작업 시 잠금을 사용하지 않아 높은 동시성을 제공한다. 읽기 작업이 잠금에 의해 지연되지 않아, 읽기 중심의 애플리케이션에서 우수한 성능을 보인다. 읽기 작업 시 잠금을 사용하지 않으므로, 쓰기 작업과의 충돌이 줄어든다. 하지만 여러.. 2025. 4. 2.
HTTP 메서드 멱등성 연산을 여러 번 적용하더라도 결과가 달라지지 않는 성질을 멱등성이라고 한다. HTTP 메서드의 멱등성은 동일한 요청을 한번 보내는 것과 여러번 보내는 것이 서로 동일한 효과를 지니며, 서버의 상태도 동일하게 남을 경우에 멱등하다고 이야기할 수 있다. 대표적으로 멱등한 메서드는 GET, HEAD, PUT, DELETE, TRACE, OPTIONS 가 있다.멱등성 활용모종의 이유로 전송 커넥션이 끊어졌을 때, 멱등성은 클라이언트가 다시 같은 요청을 해도 되는가에 대한 판단 근거가 될 수 있다. 멱등하다면 요청을 재시도할 때 같은 서버의 상태를 보장하기 때문에 문제가 없다. 반면, 멱등하지 않다면 재시도 요청시 중복 요청을 보내 문제를 발생 시킬 수 있다. 예를 들어, 사용자가 결제하는 시점에 타임아웃으로 인.. 2025. 4. 1.
웹사이트 처음 접근 시 일련의 과정 사용자가 www.google.com을 입력한다고 가정한다.브라우저는 HTTP 프로토콜을 사용해 구글 웹 서버와 통신하려고 한다.HTTP는 OSI 7계층 중 애플리케이션 계층에서 동작하는 프로토콜이때 브라우저는 요청한 도메인 이름(www.google.com)에 대한 IP 주소를 알아야 하기 때문에 DNS(Domain Name System) 서버에 질의한다.이 질의 과정 또한 애플리케이션 계층에서 이루어지며, DNS 서버는 해당 도메인에 대한 IP 주소(예를 들어, 142.250.190.78)를 응답한다.IP 주소를 얻은 후, 브라우저는 구글 서버와 통신을 시작한다. HTTP는 TCP/IP를 기반으로 작동하므로, 데이터를 주고받기 전에 TCP 3-Way Handshake 과정이 필요하다.이 단계는 전송 계층.. 2025. 3. 31.
데이터베이스 커넥션 풀 미사용 시 발생 문제 애플리케이션과 데이터베이스가 통신을 하기 위해서는 데이터베이스 커넥션이 필요하다.데이터베이스 커넥션의 생애주기 :데이터베이스 드라이버를 사용하여 데이터베이스에 연결데이터 읽기/쓰기를 위한 TCP 소켓 열기소켓을 통한 데이터 읽기/쓰기연결 종료소켓 닫기커넥션 풀이 없다면 애플리케이션에서 데이터베이스에 접근해야하는 요청을 처리할 때마다 커넥션을 새로 생성하여 연결하고 해제하는 과정을 반복해야 한다. 이 과정은 비용이 상당히 많이 들기 때문에 요청의 응답시간이 길어진다.또 동시에 많은 요청이 들어올 경우 매번 새로운 커넥션을 생성하게 되는데, 데이터베이스의 최대 연결 수를 초과할 수 있다. 데이터베이스는 일반적으로 동시에 처리할 수 있는 요청 개수에 제한이 있는데, 이 제한을 초과하면 요청이 거부되어 사라지거.. 2025. 3. 28.
스레드, 프로세스, 코어 수 증가에 따른 성능 스레드, 프로세스, 코어의 수가 많을수록 시스템 성능이 향상된다고 생각할 수 있지만, 실제로는 그렇지 않을 확률이 크다.스레드가 많으면?스레드가 지나치게 많아지면 운영체제가 스레드 간 컨텍스트 스위칭을 자주 수행해야 하여 CPU 자원이 스레드 관리에 소모된다. 이로 인해 실제 작업 수행 효율이 떨어질 수 있으며, 많은 스레드가 동시에 실행될 경우 메모리나 캐시, 락 등의 자원을 경쟁하게 되어 성능 저하나 데드 락이 발생할 가능성이 높아진다. 또한, 스레드가 많아지면 동기화와 상태 관리가 복잡해져 버그 발생 가능성도 커진다.프로세스가 많으면?각 프로세스는 독립된 메모리 공간을 가진다. 그래서 많은 프로세스가 동시에 실행되면 메모리 사용량이 급격히 증가할 수 있다. 또한, 프로세스를 생성하고 관리하는 데는 .. 2025. 3. 25.
728x90
반응형