1) DB Lock 심화 (1) 개요 RDBMS 중 하나인 MySQL은 MariaDB와 같이 스토리지 엔진으로 InnoDB를 사용하고 있어 InnoDB 라고도 불린다. 데이터 무결성을 유지하는 데 있어 핵심적인 트랜잭션 모델 (Transaction Model), 격리성 수준 (Isolation Level), DB Lock은 스토리지 엔진인 InnoDB에 종속되기 때문에 MySQL과 MariaDB는 InnoDB의 트랜잭션 모델, 격리성 수준, DB Lock 메커니즘을 따르게 된다. 또한, 여기서 깊게 들어가보자면 MySQL에서 사용하는 DB Lock은 크게 MySQL 엔진에서 제공하는 DB Lock이 있고, 스토리지 엔진에서 제공하는 DB Lock이 있다. MySQL 엔진에서 제공하는 DB Lock과 In..
1) DB Lock 기초 (1) Lock이란 Lock이란 데이터베이스에서 동시성과 데이터 일관성을 보장하기 위해 사용되는 메커니즘이다. 예를 들어, 여러 사용자(트랜잭션)들이 동시에 같은 데이터에 접근하려고 할 때, 데이터베이스는 Lock을 사용하여 해당 데이터를 사용하고 있는 사용자(트랜잭션)와 다른 사용자(트랜잭션)들 간의 접근을 제어하여 충돌을 방지한다. 참고로 DBMS마다 Lock을 구현하는 방식과 세부적인 방법은 각각 다르므로 DBMS를 효과적으로 이용하기 위해서 해당 DB의 Document 문서를 정독하도록 하자! (2) Lock의 설정 범위 (2-1) 데이터 베이스 데이터베이스 범위의 Lock은 전체 데이터베이스를 기준으로 Lock 하는 것이며, 즉 1개의 세션만이 DB의 데이터에 접근이 가..
1) HTML5, CSS 관련 Extension 1. Prettier - 코드 Format 변경 (줄 맞춤) 2. Live Server - HTML5, CSS3 코드 변경 + 브라우저로 테스트 (실시간) 3. CSS Peak - CSS 클래스 선택 시, 해당 클래스 선언부로 이동 4. HTML CSS Support - CSS Class, ID, Attribute 자동 완성 5. Intellisense for CSS Class names in HTML - HTML에서 CSS 클래스명 자동 완성 (?) 6. Material Icon Thema - HTML5, CSS3, JS 파일의 아이콘을 바꿔줌
1) Git Repository 생성 및 초기 설정 명령어 # git init → 해당 경로에 .git 디렉토리를 만들며 새로운 git 저장소를 생성할 때 사용하는 명령어이다. # git config --global core.autocrlf true → 협업 시, 윈도우와 맥에서 엔터 방식 차이로 인한 오류를 방지하기 위함이다. # git config --global user.name "(본인 이름)" # git config --global user.email "(본인 이메일)" # git config --global init.defaultBranch main → 기존 Branch는 Master|Slave 명칭으로 사용되었으나 해당 용어는 인종차별로 이어질 수 있어 요즘에는 Main으로 바꾸어 사용한다...
1) Ansible 개요 (1) IaC (InfraStructure as a Code) “프로그래밍형 인프라”라고도 하는 IaC는 인프라 구성을 마치 소프트웨어를 프로그래밍처럼 하는 것처럼 처리하는 방식을 가리킨다. IT 인프라(서버와 네트워크)를 기반으로 미들웨어부터 애플리케이션, 추가적으로 애플리케이션 자체의 배포 및 외부 서비스와 모니터링등의 연결까지를 포함하여 시스템과 서비스를 운영하기 위한 모든 환경 요소등을 “자동으로” 실행할 수 있도록 코드로 기술하는 것이다. (1-1) IaC의 장점 가상 시스템에 대한 프로그래밍 방식의 관리를 지원하기 때문에 개별 하드웨어를 수동으로 구성하고 업데이트 할 필요가 없다. 이는 인프라에 “유연성”으로 즉, 반복성과 확장성을 부여하게 된다 → ex. 운영자 1명..
1) 프로세스 vs 스레드 지금까지 운영체제를 배우면서 프로세스와 스레드를 구분하였지만 프로세스와 스레드 간의 명확한 구분을 짓지 않는 운영체제가 있다. 대표적으로 Linux 운영체제가 그러하며 프로세스와 스레드 모두 실행의 문맥이라는 점에서 동등하다고 간주하고 이 둘을 크게 구분짓지 않고 프로세스와 스레드라는 말 대신에 태스크 (Task) 라는 이름으로 통일하여 명명하고 있다. 또한 “프로세스와 스레드의 개념을 조금 더 분명히 구분 지을 필요가 있다” 라는 질문에 Linux OS 창시자인 리누스 토르발스는 이에 대해 아래와 같이 답변하였다. 프로세스와 스레드를 별개의 것으로 구분할 이유가 없다. 전통적으로는 그렇게 해왔지만 개인적으로 그것은 역사적인 짐과도 같다고 생각한다. 프로세스와 스레드는 그냥 실..
1) 멀티스레드 모델 앞에서 이야기했듯이 프로세스는 커널 프로세스와 사용자 프로세스로 나뉘며 스레드에도 커널 스레드와 사용자 스레드가 있다. · 커널 스레드 : 커널이 직접 생성하고 관리하는 스레드이다. · 사용자 스레드 : 라이브러리에 의해 구현된 일반적인 스레드이다. 사용자 스레드가 커널 스레드를 사용하려면 시스템 호출로 커널 기능을 이용해야 하는데 이 때, 커널 스레드와 사용자 스레드의 대응 방식에 따라 다음과 같이 분류할 수 있다. (1) 사용자 수준 스레드 (User-Level Thread) (1-1) 이론 운영체제가 멀티 스레드를 지원하지 않을 때, 사용하는 방법으로 초기의 시스템에서 이용되었다. 이 스레드는 유저 레벨에서 스레드를 구현하기 때문에 관련 라이브러리를 사용하여 구현하며, 라이브러..
1) 운영체제의 구조 (1) 커널과 인터페이스 운영체제란 컴퓨터 시스템의 자원들을 효율적으로 관리해주며 사용자가 컴퓨터를 편리하고 효과적으로 사용할 수 있도록 환경을 제공하는 여러 프로그램들의 모임이다. 운영체제는 컴퓨터 사용자와 컴퓨터 하드웨어 간의 인터페이스로서 동작하는 시스템 소프트웨어의 일종으로 다른 응용 프로그램이 유용한 작업을 할 수 있도록 환경을 제공한다. 이러한 운영체제는 크게 두 부분으로 구성되는데 사용자와 응용 프로그램에 인접하여 커널에 명령을 전달하고 실행 결과를 사용자에게 알려주는 인터페이스와 운영체제의 핵심 기능을 모아 놓은 커널이다. 그리고 운영체제는 커널과 인터페이스를 분리하여 같은 커널을 사용하더라도 다른 인터페이스를 가진 형태로 제작할 수 있다. 즉, 같은 커널이라도 다른 ..