STUDY
-
RAC(Real Application Clusters)STUDY/DB 2023. 5. 24. 01:35
DB 이중화 구성은 데이터베이스 시스템의 가용성과 내결합성을 향상시키기 위해 사용된다. HA(Hign Availability: 고가용성) OPS(Oracle Parallel Server) RAC(Real Application Clusters) HA(Hign Availability: 고가용성) 두 대의 서버를 동일하게 구성해서 서버 1대는 Active 상태로 두고 다른 1대는 Standby 상태로 설정해서, 만약 Active 상태의 서버에 장애가 발생할 경우 Standby 서버가 즉시 Active 상태로 바뀌면서 서비스 중단이 발생하지 않도록 하는 구성이다. 문제점 비용이 많이 든다. Active 상태의 서버에서 작업을 하다 장애가 발생하면 Standby 상태의 서버로 작업은 가능하지만, 데이터가 동기화 ..
-
DBCP(Database Connection Pool)STUDY/DB 2023. 5. 17. 22:42
DBCP란? 웹 컨테이너(WAS)가 실행되면서 DB와 미리 일정 갯수의 connection(연결)을 만들어 pool에 저장해두었다가, 클라이언트 요청이 오면 connection을 제공하고고, 처리가 끝나면 pool에 다시 반환하여 보관하는 방식을 의미한다. DBCP를 사용하는 이유는 무엇일까? 데이터베이스와 Connection을 맺는 작업은 매우 느리며 자원을 많이 소모하는, 비용이 큰 작업이다. 연결을 매번 생성하면 매 요청마다 연결 생성 비용이 발생하여 애플리케이션의 성능을 저하시킬 수 있고, 만약 다수의 사용자들이 동시다발적으로 데이터베이스의 Connection 연결을 요청한다면 최악의 경우 서버가 다운될 수 있다. 이러한 비용과 같은 문제들을 해결하기 위해 DBCP를 사용할 수 있다. 여러 개의 ..
-
컨테이너 인프라 환경 구축을 위한 쿠버네티스/도커 3.2.2STUDY/Docker 2023. 5. 16. 23:17
6. 파드의 컨테이너 자동 복구 방법 쿠버네티스는 거의 모든 부분이 자동 복구되도록 설계되어 있는데, 특히 파드의 자동 복구 기술을 셀프 힐링(Self-Healing)이라고 한다. 제대로 작동하지 않는 컨테이너를 다시 시작하거나 교체해 파드가 정상적으로 작동하게 한다. 7. 파드의 동작 보증 기능 쿠버네티스는 파드 자체에 문제가 발생하면 파드를 자동 복구해서 파드가 항상 동작하도록 보장하는 기능이 있다. 하지만 파드의 동작을 보증하기 위해서는 디플로이먼트로 생성해야 하는 조건이 있다. 디플로이먼트에 속한 파드가 아니면 어떤 컨트롤러도 해당 파드를 관리하지 않기 때문에, 해당 파드가 삭제되어도 다시 생성되지 않기 때문이다. 반면에 디플로이먼트에 속한 파드가 삭제될 경우에는 새로운 파드가 생성된다. repl..
-
Spring TransactionalSTUDY/DB 2023. 5. 10. 23:08
트랜잭션이란? 데이터베이스의 상태를 변경시키는 작업 또는 한번에 수행되어야하는 연산들을 말한다. 트랜잭션 작업이 끝나면 commit 또는 rollback 되어야한다. 트랜잭션 성질 원자성(Atomicity) : 한 트랜잭션 내에서 실행한 작업들은 하나의 단위로 처리한다. 즉 모두 성공 또는 모두 실패이다. 일관성(Consistency) : 트랜잭션은 일관성 있는 데이터베이스 상태를 유지한다. 격리성(Isolation) : 동시에 실행되는 트랜잭션들이 서로 영향을 미치지 않도록 격리해야한다. 지속성(Durability) : 트랜잭션이 성공적으로 처리되면 결과가 항상 저장되어야 한다. Spring에서의 트랜잭션 활용 비즈니스 로직과 결합 읽기 전용 트랜잭션의 공통화 테스트의 DB 커밋을 롤백 Spring이 ..
-
컨테이너 인프라 환경 구축을 위한 쿠버네티스/도커 3.2.1STUDY/Docker 2023. 5. 9. 23:58
쿠버네티스 기본 사용법 배우기 1. 파드 생성 방법 파드를 생성하는 방법에는 'kubectl run' 명령을 사용하는 방법과 'kubectl create' 명령을 사용하는 방법이 있다. kubectl create 명령을 사용해 파드를 생성할 경우 deployment를 추가해서 실행해야 한다. kubectl run nginx-pod --image=nginx O kubectl create nginx --image=nginx X kubectl create deployment test-nginx --image=nginx O run과 create deployment로 파드를 생성하는 것은 무슨 차이가 있을까? run으로 파드를 생성하면 단일 파드 1개만 생성되고 관리된다. 반면 create deployment로 ..
-
Database LockSTUDY/DB 2023. 4. 26. 00:06
Database Lock이란? Lock은 여러 트랜잭션이 공유 데이터에 접근할 때 데이터를 잘못 업데이터하거나 잘못된 데이터 구조를 변경하는 것을 방지하는 것으로 데이터베이스 동시성과 일관성을 유지하는 데 중요한 역할을 한다. 일반적으로 데이터베이스는 베타적 락(Exclusive Locks)과 공유 락(Share Locks) 두 종류의 락을 사용하는데, 하나의 리소스(행 또는 테이블)에는 하나의 베타적 락만 획득할 수 있고, 여러 개의 공유 락을 동시에 획득할 수 있다. Lock의 설정 범위(Level) 데이터베이스 데이터베이스 범위의 Lock은 전체 데이터베이스를 기준으로 Lock을 하는 것을 의미한다. 즉, 1개의 세션만이 DB의 데이터에 접근이 가능하다. 파일 데이터베이스 파일을 기준으로 Lock을..
-
Isolation LevelSTUDY/DB 2023. 4. 25. 23:06
Isolation Level이란? 데이터베이스 트랜잭션 처리에서의 격리 수준을 의미하며, 동시에 수행되는 여러 트랜잭션들이 서로 영향을 주지 않도록 데이터베이스 시스템에서 제공하는 기술이다. 이를 통해 동시성과 일관성 사이의 균형을 조절할 수 있다. 1. READ UNCOMMITTED(읽기 미완료) 가장 낮은 격리 수준으로, 트랜잭션들이 아직 커밋되지 않은 데이터를 읽을 수 있다. 이로 인해 dirty read, non-repeatable, phantom read와 같은 문제가 발생할 수 있다. [예] 트랜잭션A가 어떤 값을 x에서 y로 변경하고 아직 커밋하지 않은 상황에서 트랜잭션B가 해당 값을 읽을 경우 트랜잭션B에 y가 조회되는 것이다. 하지만 속도가 빠르기 때문에 데이터의 일관성이 떨어지더라도, ..
-
컨테이너 인프라 환경 구축을 위한 쿠버네티스/도커 3.1STUDY/Docker 2023. 4. 25. 17:31
마스터 노드 kubectl : 쿠버네티스 클러스터에 명령을 내리는 역할로, API 서버와 주로 통신을 한다. API 서버 : 쿠버네티스 클러스터의 중심 역할을 하는 통로로, 주로 상태 값을 저장하는 etcd와 통신한다. etcd : 구성 요소들의 상태 값이 모두 저장되는 곳으로, etcd 외의 다른 구성 요소는 상태 값을 관리하지 않는다. 따라서 etcd의 정보만 백업돼 있으면 장애 상황에서 쿠버네티스 클러스터는 복구가 가능하다. 또한 etcd는 분산 저장이 가능한 key-value 저장소이므로, 복제해 여러 곳에 저장해 두면 하나의 etcd에서 장애가 발생하더라도 시스템의 가용성을 확보할 수 있다. 컨트롤러 매니저 : 쿠버네티스 클러스터의 오브젝트 상태를 관리한다. 노드 컨트롤러 - 상태 체크와 복구 ..