목록전체 글 (50)
백엔드 개발자
도커는 컨테이너 기반 가상화를 제공한다. 가상화란 무엇인가?가상화는 물리적인 하드웨어를 논리적으로 분리하여 여러 운영 체제나 애플리케이션을 독립적으로 실행할 수 있도록 하는 기술이다.하이퍼바이저 기반 가상화하드웨어 위에 하이퍼바이저(예: VMware, Hyper-V)를 설치해 각 가상 머신(VM)이 독립된 운영 체제를 실행할 수 있도록 한다.장점: 각 VM이 완전한 운영 체제를 포함해 높은 격리성과 호환성을 제공한다.단점: 무겁고, 많은 리소스를 소모한다.OS 수준 가상화 (컨테이너)호스트 운영 체제 위에서 컨테이너를 실행하며, 커널을 공유하지만 애플리케이션과 라이브러리는 독립적으로 실행된다.장점: 경량화되어 빠르게 시작되고, 리소스 소모가 적다.단점: 같은 운영 체제 커널을 사용하므로 호환성은 제한적이..
그래프 최단 거리 알고리즘벨만 포드 알고리즘은 그래프 최단 거리를 구하는 알고리즘 중 하나이다.대표적으로 다익스트라 알고리즘은 모든 간선의 가중치가 양수일 때만 가능하다.다익스트라다익스트라가 어떻게 동작하는지 간단하게 살펴보자.이런 그래프가 있다고 가정한다. A에서 E까지의 최단거리를 구할 것이다.A에서 가능한 경로 중 가장 빠른 경로를 선택하여 이동할 것이다. A에서 B로 가는 경로가 선택되어 A에서 B까지의 경로는 최단 거리가 3인 것을 알 수 있다.이후 B에서 갈 수 있는 경로를 큐에 넣고 다시 탐색을 반복할 것이다. 이렇게 각 최단거리를 구하다 보면 E까지의 최단거리가 11이라는 것을 알 수 있다.그런데 이 방법은 모든 가중치가 양수일 때만 가능하다. 그림처럼 D에서 B로 가는 경로는 -100이기..
데이터베이스 인덱스란?인덱스는 책의 목차처럼 테이블에 저장된 데이터에 빠르게 접근하기 위해 사용되는 구조이다.인덱스에 사용되는 키를 기준으로, 데이터를 정렬된 방식으로 저장하여 데이터의 검색 속도를 크게 향상한다.그 대신 데이터를 추가, 수정, 삭제할 때 정렬 과정과, 추가적인 저장 공간을 차지하기 때문에 오버헤드를 유발할 수 있다.클러스터드 인덱스와 논클러스터드 인덱스인덱스는 클러스터드 인덱스와 논클러스터드 인덱스로 나뉜다.클러스터드 인덱스는 테이블의 데이터 자체가 인덱스에 의해 정렬이 된다. 물리적인 데이터 정렬을 의미하기 때문에 하나만 존재한다.논클러스터드 인덱스는 인덱스를 위한 별도의 테이블이 생성된다.클러스터드 인덱스 (Clustered Index):물리적 데이터 정렬: 테이블의 데이터 자체가 ..
TCP/IP란 무엇인가?TCP/IP는 인터넷과 네트워크의 기본이 되는 통신 규약(Protocol)의 모음이다.네트워크에서 애플리케이션 간의 데이터 전송, IP 주소간의 통신 등 다양한 규칙이 필요한데 이런 규칙들을 모아놓은 것이다.TCP/IP는 서로 다른 기기 간에 신뢰성 있고 효율적으로 전송될 수 있도록 설계된 구조로, 계층적 설계(layered architecture)를 기반으로 동작한다. 이를 통해 TCP/IP는 다양한 하드웨어와 소프트웨어 환경에서도 통합적으로 작동할 수 있다.Layered 계층 구조란?Layered 계층 구조는 네트워크를 여러 독립적인 계층으로 나누어 각각의 계층이 특정 기능을 담당하도록 설계된 모델이다. 각 계층은 상위 계층이나 하위 계층과 상호작용하지만, 자신의 역할에만 집중..
레이스 컨디션(Race Condition)과 동기화 기법의 필요성레이스 컨디션은 여러 스레드가 동일한 자원에 동시에 접근하거나 작업을 수행할 때 발생하는 동기화 문제다. 각 스레드의 실행 순서에 따라 매번 결과가 달라질 수 있어 데이터 무결성이 깨지거나 의도치 않은 동작이 발생할 수 있다.동기화 기법 Lock멀티스레드 환경이나 멀티프로세스 시스템에서는 여러 작업이 동일한 자원에 동시에 접근할 경우 데이터 일관성이 깨지거나 충돌이 발생할 수 있다(Race Condition 문제). 이를 방지하기 위해 동기화(Synchronization) 기법이 필요하며, 이 중 가장 널리 사용되는 것이 바로 Lock 기법이다.Lock은 특정 자원에 대한 접근 권한을 하나의 스레드나 프로세스가 독점적으로 가지도록 보장하여 ..
가상 메모리란?메모리 공간을 추상화해서 제공하는 것이라고 할 수 있다.프로세스는 RAM에 올라와서 실행이 되는 것인데, 이 메모리 공간(RAM)은 보호 영역에서 운영체제가 관리한다. 그렇기 때문에 운영체제에서 이러한 메모리 영역을 추상화하여 제공하고 각 프로세스에 독립적인 메모리 주소 공간을 제공하여 메모리를 보호한다. 또한, 실제 메모리 보다 큰 메모리로 보이도록 하고, 실제보다 더 큰 메모리 사용을 가능하게 만들어주는 방법이다.요구 페이징가상메모리의 핵심 요소 중 하나는 필요한 메모리만 올려서 실행하여 실제보다 더 큰 메모리 사용이 가능하도록 해주는 것이다.예를 들어 어떤 프로그램은 3G의 메모리를 사용해야 하는데 실제 메모리 크기가 2G라면 전체 데이터를 모두 올리지 못할 것이다. 또, 멀티프로그래..
프로세스 (Process)1. 간단한 정의프로세스는 프로그램을 실행해서 메모리에 올라와 CPU 할당을 받을 수 있는 상태라고 할 수 있다.프로그램을 실행하면 OS는 프로그램을 메모리에 적재하고, 이를 위한 프로세스 제어 블록(PCB)을 초기화한다. 그리고 Ready Queue에 추가되어 CPU 할당을 받을 수 있는 준비 상태가 된다.2. 메모리 구조2.1. 코드 영역실행할 프로그램의 명령어(코드)가 저장된 영역이다.예를 들어, 함수 정의, 루프, 조건문 등의 실제 기계어 코드가 여기에 포함된다.읽기 전용(Read-Only)으로 설정되어 보통 변경되지 않는다.2.2. 데이터 영역전역 변수와 정적 변수 등이 저장된다.초기화된 변수는 초기화 데이터 세그먼트에 저장되며, 초기화되지 않은 변수는 BSS(Block..
다양한 공격 기법1. Cross-Site Scripting (XSS)공격대상 : 사용자 => 사용자가 서버를 신뢰한다는 점을 악용.XSS는 공격자가 악성 스크립트를 웹 애플리케이션에 삽입하여 사용자의 브라우저에서 실행되도록 만드는 공격이다. 이를 통해 공격자는 사용자의 세션 쿠키를 탈취하거나, 브라우저에서 악성 명령을 실행하여 데이터 노출, 계정 탈취 등을 유도할 수 있다.XSS는 주로 다음과 같은 방식으로 발생한다:Stored XSS: 공격자가 서버에 악성 스크립트를 저장하고, 다른 사용자가 이를 로드하면서 실행된다.Reflected XSS: 사용자가 클릭한 URL에 포함된 악성 스크립트가 브라우저에서 즉시 실행된다.DOM-based XSS: 클라이언트 측 코드에서 DOM 조작을 통해 악성 스크립트가 ..