분류 전체보기79 DB Lock 과 Isolation Level 공유 락과 배타 락구분공유 락 (Shared Lock, Read Lock, S-Lock)배타 락 (Exclusive Lock, Write Lock, X-Lock)목적읽기(Read) 안전 보장-> 여러 트랜잭션이 같은 행 읽도록 함쓰기(Write) 안전 보장-> 하나의 트랜잭션만 이 행에 대해 변경 가능다른 트랜잭션의 읽기허용불가다른 트랜잭션의 쓰기불가불가나와 같은 락의 동시 획득가능 (S + S 가능)불가 (X + X 불가)쓰기 락과의 동시 획득S + X 불가X + S 불가사용 예시SELECT … FOR SHARE(또는 기본 SELECT 상황 일부)INSERT, UPDATE, DELETE 블로킹 (Blocking)Lock 간의 경합이 발생하여 특정 트랜잭션이 실행되지 못하고 대기하는 상태 데드락 (.. 2025. 11. 30. [쿠버네티스 교과서] k8s 스터디 6주차 - 11장, 12장 24.09.27 ~24.09.30k8s 사내 스터디에서 쿠버네티스 교과서 11, 12 장을 읽으며 공부한 내용 11. 애플리케이션 개발: 개발 워크플로와 CI/CD Dockerfile - 스크립트 어플리케이션 빌드 및 패키징docker-compose, 쿠버네티스 - 어플리케이션 실행 쿠버네티스의 이미지 구분 방법태그 명시적 지정 X -> 레지스트리에서 이미지 내려받기태그 지정 -> 로컬 이미지나 노드 내 이미지 캐시 사용 가능 개발 워크 플로개발자 깃 푸시깃 변경 확인 시 빌드 파이프라인 실행이미지 빌드클러스터에 어플리케이션 배치 곡스 (Gogs) -> 빌드팩 (BuildPack) 을 사용한 빌드킷 (BuildKit)곡스 (Gogs) : 깃 서버빌드킷 (BuildKit) : 도커 엔진 대신 이미지 빌드.. 2024. 9. 30. [쿠버네티스 교과서] k8s 스터디 5주차 - 9장, 10장 24.09.11 ~24.09.26k8s 사내 스터디에서 쿠버네티스 교과서 9, 10 장을 읽으며 공부한 내용 9. 롤아웃과 롤백을 이용한 애플리케이션 릴리스 관리 디플로이먼트의 두 가지 업데이트 전략롤링 업데이트 (rolling update)리크리에이트 (recreate) 롤아웃레플리카셋 새로 생성레플리카를 지정된 숫자만큼 생성기존 레플리셋의 레플리카 수를 0으로 낮춤 롤아웃은 파드의 정의가 변경될 때만 일어남 버전번호를 넣은 레이블 정의하여 레플리카셋에 부여 시 업데이트 내용 추적하기 수월파드 정의 에 version 레이블 선언 가능 롤아웃의 주 기능은 릴리스 관리롤아웃 히스토리 확인롤아웃 중단이전 리비전 롤백 핫 리로드 (hot reload)컨피그맵/비밀값 업데이트 시 어플리케이션 동작이 변화롤아웃.. 2024. 9. 29. [쿠버네티스 교과서] k8s 스터디 4주차 - 7장, 8장 24.09.04 ~24.09.10k8s 사내 스터디에서 쿠버네티스 교과서 7, 8 장을 읽으며 공부한 내용 7. 멀티컨테이너 파드를 이용하여 애플리케이션 확장하기 파드는 네트워크 및 파일 시스템을 제공하는 가상환경파드 내 컨테이너들은 파드의 네트워크 공유localhost 주소를 통해 컨테이너 간 통신외부 트래픽 받을 시 다른 포트 사용해야함파드 내 컨테이너들은 파드의 볼륨 공유 가능컨테이너는 자신만의 파일시스템을 가짐컨테이너는 파드에서 제공한는 볼륨을 마운트할 수 있음볼륨을 공유하여 컨테이너 간 정보 교환 가능 파드는 어플리케이션을 구성하는 단위이므로, 한 파드내에 다른 어플리케이션을 함께 넣는 것은 지양할 것 사이드카 패턴 (sidecar pattern)추가 컨테이너가 어플리케이션 컨테이너를 지원하는.. 2024. 9. 10. [쿠버네티스 교과서] k8s 스터디 3주차 - 5장, 6장 24.08.28 ~24.09.03k8s 사내 스터디에서 쿠버네티스 교과서 5, 6 장을 읽으며 공부한 내용 5. 볼륨, 마운트, 클레임을 이용한 데이터 퍼시스턴시 파드내에만 데이터를 저장한다면 데이터의 손실이 일어나므로, 어떤 노드 내 파드에서라도 동일하게 접근 가능한 저장소가 필요 컨테이너는 각각 파일시스템을 가지므로, 파드의 재시작은 컨테이너의 데이터 손실을 유발함4장에서 컨피그맵/비밀값을 볼륨을 통해 사용했던 것 처럼, 볼륨에 데이터를 저장하여 파드의 생애주기와 상관없이 데이터를 유지하고 접근 가능하다 노드 내부 저장 방법공디렉터리 (EmptyDir)파드와 같은 생애주기를 가지는 볼륨의 유형파드가 생성된 노드의 임시 디스크 (임시 파일 시스템) 에 기록컨테이너가 대체되더라도 데이터가 유지되지만, .. 2024. 9. 3. [쿠버네티스 교과서] k8s 스터디 2주차 - 3장, 4장 24.08.21 ~24.08.27k8s 사내 스터디에서 쿠버네티스 교과서 3, 4 장을 읽으며 공부한 내용 3. 네트워크를 통해서 서비스에 파드 연결하기 쿠버네티스 내부의 통신 방법쿠버네티스 내에서는 모든 파드끼리 통신이 가능해야 함파드끼리의 통신을 위해 IP 를 사용하는데, 파드 대체시 IP 가 변경되는 문제를 해결하기 위해 서비스(Service)라는 통신 트래픽의 라우팅을 맡는 리소스를 사용 변경되는 파드의 IP 주소를 사용하는 통신 대신, 도메인 네임과 클러스터 내 DNS 서버를 사용해 파드간 통신 구현 서비스 생성 시, 서비스에 정적 ip 주소인 클러스터IP(ClusterIP) 가 할당되며 서비스 마다 고유한 클러스터 도메인이 설정됨클러스터IP 는 클러스터 DNS 에 등록됨클러스터 도메인 네임을 .. 2024. 8. 27. [쿠버네티스 교과서] k8s 스터디 1주차 - 1장, 2장 24.08.14 ~24.08.20k8s 사내 스터디에서 쿠버네티스 교과서 1, 2 장을 읽으며 공부한 내용 내용 업로드 예정 파드와 디플로이먼트 2024. 8. 26. [JPA] Soft Delete 적용과 @Where, @SQLDelete 프로젝트 중 hard delete 에서 soft delete 로 리팩토링한 과정과 @Where, @SQLDelete 에 관한 생각이다. Spring boot + JPA 로 프로젝트 진행 중, delete 관련 에러가 생겼고 관련 코드를 보며 앞으로의 delete 에러를 줄이기 위해서는 hard delete 가 아닌 soft delete 로 리팩토링 해야겠다는 생각을 했다. Soft Delete vs Hard Delete soft delete (물리 삭제) 는 SQL 의 delete 를 사용해 실제로 데이터를 삭제하는 방법이다. hard delete (논리 삭제) 는 삭제 여부를 판단하는 필드를 만든 후, 해당 필드를 SQL 의 update 를 통해 변경하여 삭제가 되었다고 표기하는 방법이다. 이때, 다른.. 2023. 9. 6. [OS] Deadlock Deadlock 위의 사진의 경우, S = Q = 1 일 때, P0 의 wait(S) 에 의해 S는 0이, P1의 wait(Q) 에 의해 Q 는 0 이된다. P0 가 wait(Q) 를 실행할 때, P1 이 signal(Q) 를 실행할 때까지 대기해야한다. 비슷하게 P1 이 wait(S) 를 실행할 때, P0가 signal(S) 를 실행할 때까지 기다려야 한다. 결국 P0 와 P1은 무한 대기하게 되며 이를 deadlock 되었다고 한다. resource 를 가지고 있고 다른 프로세스가 보유한 resource 를 얻기 위해 대기하는 block 된 프로세스들의 집합을 Deadlock 이라고 한다. Deadlock Necessary Conditions Deadlock 이 발생하려면 다음 네 가지 조건을 동시에.. 2023. 8. 21. 이전 1 2 3 4 ··· 9 다음