전체 글

Computer Science/Operating System

[OS] Blocking/Non-blocking & Synchronous/Asynchronous

Blocking/Non-blocking 블럭/논블럭은 호출된 함수가 호출한 함수에게 제어권을 건네주는 유무의 차이이다. Blocking A 함수가 B 함수를 호출할 때, B 함수가 자신의 작업이 종료되기 전까지 A 함수에게 제어권을 돌려주지 않는 것 예를 들어, 파일에서 데이터를 읽는 작업이 'Blocking'으로 수행되면, 해당 작업이 완료되어 데이터가 준비될 때까지 프로그램의 실행이 잠시 중지된다. 이는 프로그램이 데이터를 사용할 수 있을 때까지 아무런 작업도 수행하지 못하게 되어, 자원을 비효율적으로 사용할 수 있다는 단점이 있다. Non-blocking A 함수가 B 함수를 호출 할 때, B 함수가 제어권을 바로 A 함수에게 넘겨주면서, A 함수가 다른 일을 할 수 있도록 하는 것 즉, 특정 작업..

Computer Science/Network

[Network] 로드 밸런싱 (Load Balancing)

로드 밸런싱 (Load Balancing) 로드 밸런싱은 분산식 웹 서비스로, 네트워크 트래픽이나 어플리케이션의 요청을 여러 서버에 균등하게 분배하는 프로세스를 의미한다(= Scale-out). 즉, Load Balancer를 클라이언트와 서버 사이에 두고, 부하가 일어나지 않도록 여러 서버에 분산시켜주는 방식이다. 서비스를 운영하는 사이트의 규모에 따라 웹 서버를 추가로 증설하면서 로드 밸런서로 관리해주면 웹 서버의 부하를 해결할 수 있다. Scale-up & Scale-out Scale-up : 하드웨어의 성능을 올리는 것 Scale-out : 여러 대의 서버가 나눠서 일하도록 만드는 것 로드 밸런싱의 주요 목적 서버의 부하 분산 시스템의 가용성과 신뢰성 향상 응답 시간 줄이기 L4 로드 밸런싱 & ..

Computer Science/Database

[Database] 레디스 (Redis)

Redis Redis(REmote Dictionary Server)는 오픈 소스, 인 메모리 데이터 구조 스토어로서, 데이터베이스, 캐시, 메시지 브로커 등의 역할을 수행할 수 있다. 다양한 종류의 데이터 구조를 지원하며, 데이터 구조는 key-value 값이다. 따라서 Redis는 비정형 데이터를 저장하는 비관계형 데이터베이스 관리 시스템이다. Redis의 주요 특징 1. In-Memory Data Store Redis는 모든 데이터를 메모리에 저장하고 관리함으로써 빠른 성능을 제공한다. 하지만 영구적인 데이터 저장을 위해 디스크에 스냅샷(snapshot)을 저장하거나 AOF(Append Only File) 등의 방법으로 데이터 유실을 방지할 수 있다. snapshot : 특정 지점을 설정하고 디스크에..

Computer Science/Database

[Database] 트랜잭션 격리 수준 (Transaction Isolation Level)

Isolation Level 데이터베이스에서 여러 트랜잭션을 동시에 처리할 때, 특정 트랜잭션에서 수행하는 작업이 다른 트랜잭션에 얼마나 '보이는가'를 결정하는 것이다. 즉, 트랜잭션에서 일관성 없는 데이터를 허용하도록 하는 수준을 말한다. Isolation Level의 필요성 여러 트랜잭션이 동시에 데이터베이스에 접근할 때 발생하는 문제를 해결하기 위해 Isolatino Level이 필요하다. 1. Dirty Read 한 트랜잭션이 아직 커밋되지 않은 다른 트랜잭션의 변경을 읽는 현상 이로 인해 트랜잭션의 실패로 롤백이 발생하더라도 이미 읽혀진 데이터가 원래의 값으로 돌아가지 않는 문제가 생긴다. 2. Non-Repeatable Read 같은 트랜잭션 내에서 같은 쿼리를 두 번 실행했을 때, 그 결과가..

북 스터디/스프링 부트 핵심 가이드

[스프링부트] 13장. 서비스의 인증과 권한 부여

이 글은 '스프링 부트 핵심 가이드 - 스프링 부트를 활용한 애플리케이션 개발 실무' 책을 통해 학습한 내용을 정리한 글입니다. 보안 용어 인증 (Authentication) 사용자가 누구인지 확인하는 단계를 의미 ex) 로그인 로그인에 성공하면 어플리케이션 서버는 응답으로 사용자에게 토큰(token)을 전달하고, 로그인에 실패한 사용자는 토큰을 전달받지 못해 원하는 리소스에 접근할 수 없다. 인가 (Authorization) 인증을 통해 검증된 사용자가 어플리케이션 내부의 리소스에 접근할 때 사용자가 해당 리소스에 접근할 권리가 있는지를 확인하는 과정 ex) 관리자 게시판은 관리자만 접근을 허가한다. 접근 주체 (Principal) 어플리케이션의 기능을 사용하는 주체를 의미 접근 주체는 사용자/디바이스..

Computer Science/Database

[Database] 트랜잭션 (Transaction)

트랜잭션 (Transaction) 데이터베이스의 상태를 변화시키기 위해 수행하는 작업 단위 데이터의 무결성과 일관성을 보장하기 위해 사용 상태 변화: DML을 통해 DB에 접근하는 것(SELECT, INSERT, DELTE, UPDATE) 트랜잭션의 상태 활동(Active): 트랜잭션이 실행 중인 상태 실패(Failed): 트랜잭션의 실행 중에 오류가 발생하여 작업이 중단된 상태. 이 단계에서는 트랜잭션이 이전 상태로 롤백되어야 한다. 부분 완료(Partially Committed): 트랜잭션의 모든 작업이 성공적으로 실행되었지만, 아직 커밋되지 않은 상태. 이 단계에서는 트랜잭션의 결과를 데이터베이스에 영구적으로 반영하기 전에 커밋 여부를 결정해야 한다. 완료(Committed): 트랜잭션이 성공적으로..

Computer Science/Database

[Database] 정규화 (Normalization)

정규화 (Normalization) 데이터베이스에서 중복을 최소화하고 데이터의 일관성을 유지하기 위해 관계형 데이터베이스(RDBMS) 스키마를 재구성하는 과정 정규화의 목적 불필요하거나 중복되는 데이터(data redundancy)들을 제거한다. 이상현상(Anomly)을 방지한다. 데이터베이스 구조를 확장에 용이하도록 한다. 이상현상(Anomaly)의 종류 삽입 이상(Insertion Anomaly): 데이터를 삽입할 때 데이터의 부분적인 정보로 인해 원하는 데이터를 삽입할 수 없는 현상 갱신 이상(Update Anomaly): 데이터를 업데이트할 때 일부 튜플만 갱신되어 데이터의 불일치가 발생하는 현상 삭제 이상(Deletion Anomaly): 데이터를 삭제할 때 의도하지 않은 데이터의 손실이 발생하..

Computer Science/Network

[Network] TSL/SSL HandShake

TSL/SSL HandShake 클라이언트와 서버 간에 안전한 연결을 설정하기 위한 과정으로 TLS(Transport Layer Security) 또는 SSL(Secure Sockets Layer) 프로토콜에서 사용된다. TLS는 SSL의 후속 버전으로, SSL 보다 안전하고 강력한 암호화 기능을 제공한다. TLS/SSL HandShake 과정 클라이언트 Hello 클라이언트가 서버에게 연결을 시작하기 위해 "client hello" 메시지를 보낸다. 이 메시지에는 클라이언트의 TLS/SSL 버전, 지원하는 암호화 알고리즘, 압축 방식 등의 정보가 포함된다. 서버 Hello 서버는 "client hello" 메시지를 받고, "server hello" 메시지를 생성하여 클라이언트에게 보낸다. 이 메시지에는..

Computer Science/Network

[Network] HTTP & HTTPS

HTTP와 HTTPS는 웹에서 데이터를 전송하는데 사용되는 프로토콜이다. HTTP (Hypertext Transfer Protocol) 인터넷에서 웹 페이지, 이미지, 동영상 등의 리소스를 전송하기 위한 통신 규약 클라이언트(웹 브라우저)와 서버 간에 요청(request)과 응답(response)을 주고받는 방식으로 동작 암호화되지 않은 텍스트 기반 프로토콜이므로 데이터 전송 과정에서 보안에 취약하다. 요청과 응답의 내용이 암호화되지 않기 때문에 중간에 제3자가 데이터를 도청하거나 조작할 수 있는 위험이 있다. 따라서, 민감한 정보를 전송하는 경우 보안 상의 문제가 발생할 수 있다. HTTPS (Hypertext Transfer Protocol Secure) HTTP의 보안 문제를 해결하기 위해 나온 프..

Computer Science/Network

[Network] 대칭키 & 비대칭키

암호화🔒& 복호화🔓 암호화: 원래의 데이터를 알 수 없게 만들거나 숨기는 과정 대칭키 (Symmetric Key) 암호화와 복호화에 동일한 키를 사용하는 암호화 방식 대표적인 대칭키 알고리즘으로는 DES(Data Encryption Standard), AES(Advanced Encryption Standard), 3DES(Triple Data Encryption Standard) 등이 있다. 장점: 암호화와 복호화가 빠르고 효율적이다. 단점: 키를 안전하게 전달하고 관리하는 것이 어려우며, 통신하는 모든 사용자가 동일한 키를 공유해야 한다. 비대칭키 (Asymmetric Key) 공개키(public key)와 개인키(private key)라는 서로 다른 두 개의 키를 사용하는 암호화 방식 (공개키 암호화..

dbssk
K.Back-end