분류 전체보기
-
데이터베이스의 스토리지엔진database 2023. 11. 15. 01:05
스토리지 엔진이란? - 데이터베이스 내에서 데이터 들을 다루는 엔진이다. 스토리지 엔진의 역할 1. 트랜잭션(transaction manager): 트랜잭션을 스케줄링하고 데이터베이스 상태의 논리적 일관성 보장. -> 트랜잭션 기능 제공 2. 잠금 매니저(lock manager): 트랜잭션에서 접근하는 데이터베이스 객체에 대한 잠금을 제어. 동시 수행 작업이 물리적 데이터 무결성을 침해하지 않도록 함. -> 트랜잭션과 함꼐 데이터의 무결성, 동시성, 격리성을 담당 3. 엑세스 메서드(access method): 디스크에 저장된 데이터에 대한 접근 및 저장 방식을 정의. 힙 파일/B-트리/LSM 트리 등의 자료구조 사용. -> 데이터의 수정, 읽기, 추가, 삭제 등에 관여하고 저장방식을 정의 4. 버퍼 매..
-
RDBMS와 NoSQLdatabase 2023. 11. 15. 00:43
RDBMS(Relational Database Management System)란 - DBMS의 한 종류로, 행과 열을 가지는 표 형식 데이터를 저장하는 평태의 데이터베이스이다. - 예시로 MySQL, PostgreSQL, Oracle 등이 있다. NoSQL(Not Only SQL)이란 - SQL을 사용하지 않는 데이터 베이스이다. - 테이블간의 정의를 하지 않아 테이블 간의 Join이 불가능하다. - 유연한 스키마, 확장성이 특징이다. - 대용량이다. - 예시로 MongoDB와 Redis가 있다. NoSQL의 종류 1. Key-Value Database - Key-Value 형태로 저장되는 형태 - 이미지나 비디오 등 다양한 형태로 저장할 수 있다. - 속도가 매우 빠르다 - Redis, Riak, A..
-
트랜잭션 격리 수준과 현상database 2023. 11. 14. 22:57
트랜잭션의 격리성 트랜잭션은 서로 끼어들지 못한다는 정의 하지만 무조건적으로 아예 끼어들지 못하는것이 아니라 격리 수준에 따라 끼어들 수 있는 수준이 있음. 단, 격리수준이 낮아 끼어들게 될 경우 동시성이 높아져 성능은 좋아지지만 안정성이 떨어지고, 격리 수준이 너무 높으면 동시성이 낮아져 성능이 안좋아진다. 트랜잭션 격리 수준(Level)과 그에 따른 현상 현상 1. 팬텀리드(phantom reads) : 한 트랜잭션 내에서 동일한 쿼리를 2번 이상 보냈을 때 해당 조회 결과가 다른 것을 의미. -> 다른 트랜잭션에서 삽입을 한 경우 2. 반복 가능하지 않은 조회 (None-repeatable Reads) : 한 트랜잭션 내의 같은 행에 두번 이상 조회가 발생했는데 그 값이 다른 것을 의미 -> 다른 ..
-
브라우저 렌더링 과정CS지식의 정석/네트워크 2023. 11. 3. 18:06
리다이렉트 -> 캐싱 -> DNS -> IP라우팅 & ARP -> TCP 연결 -> TTFB -> 브라우저 렌더링 풀어서 설명하면 1. 리다이렉트 요청이 있는지 확인 2. 서버와 클라이언트 사이에 브라우저 캐싱이나 프록시 서버를 통해 캐싱 값을 받아오고 3. DNS를 통해 주소를 IP로 변환한다. (DNS도 캐싱이 있다.) 4. 이후 IP 라우팅을 통해 ARP과정(IP주소를 통해 서버의 MAC 주소를 찾는 과정) 을 거쳐 실제 서버를 찾고 5. TCP 3웨이 - 핸드셰이크 및 SSL을 통해 서버와 연결을 함 (TCP연결은 HTTP/2까지, HTTP/3부터는 QUIC를 통해 연결한다.) 6. 연결된 이후 컨텐츠들을 다운로드 받고 7. 받은 컨텐츠들을 바탕으로 브라우저 렌더링이 일어나 화면을 띄운다. Ref..
-
대규모 트래픽 과부하 해결 방법 #3CS지식의 정석/네트워크 2023. 11. 2. 19:34
그 외에 컨텐츠 관리 1. 불필요한 컨텐츠 제거 쿼리등 최적화 2. CDN을 통한 컨텐츠 제공 메인 서버에 대한 부하를 줄인다. 3. 컨텐츠 캐싱 브라우저 캐시(쿠키, 로컬저장소, 세션저장소)를 통해 해당 요청에 관한 항목을 캐시에서 응답을 읽어 네트워크 요청에 관한 비용을 모두 제거 4. 컨텐츠 압축 텍스트 기반 리소스는 gzip 또는 Brotli를 통해 압축해야 한다. 압축하면 70% 정도까지 압축할 수 있습니다. 압축을 풀기위해 서버에서 자원(CPU)를 사용하기는 하지만 보통은 압축하는 것이 좋다. 5. 컨텐츠의 우하한 저하 정적 페이지를 제공하거나 특정 기능을 비활성화 또는 일부분만 제공하여 서버에 대한 부하를 줄인다. 예를 들어 긴급상황시 간소화되는 네이버 뉴스 페이지가 있다. Reference..
-
대규모 트래픽 과부하 해결 방법 #2(서킷 브레이커, 로드 밸런싱)CS지식의 정석/네트워크 2023. 11. 2. 19:30
1. 서킷 브레이커 패턴 서비스 장애를 감지하고 연쇄적으로 생기는 에러를 방지하는 기법 서킷 브레이커의 상태 - closed(정상) - open(장애 발생 상태) - half_open(open 상태에서 time out으로 설정된 시간 마다 확인 후 상태를 전환 하는 상태) 클라이언트와 서버 사이에 서킷 브레이커를 설치하여 각 상태에 맞게 동작하며, 에러가 발생했을 경우 연쇄적인 에러를 방지하고, 에러 상태임을 사용자에게 빨리 전하기 위해 사용한다. 서킷 브레이커 패턴을 사용함으로써 얻을 수 있는 이점 1. 장애 감지 및 격리(부하 감소) 2. 자동 시스템 복구 3. 빠른 실패 및 고객 응답 2. 로드 밸런싱 로드밸런싱 기술을 제공하는 서비스 또는 장치(로드밸런서)를 통해, 네트워크 또는 서버에 가해지는 ..
-
대규모 트래픽 과부하 해결 방법 #1(모니터링)CS지식의 정석/네트워크 2023. 11. 2. 19:26
서버 과부하란 서버가 리소스를 소진하여 들어오는 요청을 모두 처리하지 못할 때 발생 응답없음와 503에러가 뜨게 된다. 1. 모니터링을 통한 자원의 적절한 할당 1. 어떤 페이지에 어떤 트래픽이 얼마나 발생했는지 알수 있다. 2. 어떤 네트워크에서 병목현상이 일어났는지 알 수 있다 3. 활용도가 낮은 페이지, 높은 페이지를 파악할 수 있어 나중에 서비스 개선에도 도움이 됨 2. AWS 오토 스케일링 AWS가 지원하는 트래픽 과부하가 일어나기전에 cloud watch가 계속 모니링하여 자동으로 서버 대수를 늘려주는 방법 (구성에 시간이 걸림) 3. netdata를 이용한 모니터링 AWS가 아닐때 사용할 수 있는 무료 모니터링 서비스
-
로그인 #2. 토큰 기반 인증 방식CS지식의 정석/네트워크 2023. 11. 1. 18:29
작동방식 1. 클라이언트가 인증요청 2. 사용자 확인 3. 서버에서 인증로직에 따른 JWT 토큰 등을 생성 4. 반환 5. 클라이언트에 토큰 저장 6. 필요시 토큰도 같이 전달 7. 토큰 검증 8. 데이터 조회 9. 데이터 전달 JWT토큰이란 - JSON Web Token, JSON객체로 인코딩되며 메세지 인증, 암호화에 사용 - 현재 토큰 인증에서 가장 많이 사용되는 인터넷 표준 JWT 구조 Header - 토큰 유형과 서명 알고리즘을 담고 있음, base64URI로 인코딩 Payload - 데이터, 토큰 발급자, 토큰 유효기간을 담고 있음, base64URI로 인코딩 Signature - (인코딩된 header + payload) + 비밀키를 기반으로 헤더에 명시된 알고리즘으로 다시 생성한 서명값 장..