서론

특정 개발 지식을 공부하며 개념을 몇 시간이고 찾아보며 결국 이해하고나서 느꼈던건 ‘그렇게 어려운 개념이 아니었네’ 라는 생각이었다. 처음에는 괜히 쉬운 말들을 왜 이렇게 어려운 말들로 써놓았을까 싶었다. 물론, 어떤 개념을 설명하는 사람에 따라 차이가 있겠지만, 이러한 어휘들이 많은 이유는 분명히 있었다.

개발은 모호하면 큰 문제가 생기기 마련이고, 특정 상황, 특정 기술 등을 압축하여 한단어에 정확한 의미를 전달해야한다.

또한, 전 세계 개발자들이 같은 개념을 동일한 단어로 이해하려면 전문 용어가 필요하고 표준화된 용어가 없다면 사람마다 다른 의미로 이해하게 돼서 협업이 어렵다.

이 때문에 항상 느꼈던 건 ‘어휘’ 의 의미를 아는게 정말 중요하다고 생각했다.

간혹 모르는 개념을 찾아볼 때 예를 들면, ‘Lock’ 이라는 단어가 나오는 설명이 있었는데, 현재 내가 찾는 개념의 이해를 돕는 보조적인 수단이라 완벽하게 이해하지 않고 넘어가는 상황이 많았다. 그래서 앞으로는 공부를 하며 모르는 어휘를 만났을 때 꼭 기록하고 넘어가는 습관을 가지고 해당 글을 채워나가려고 한다.

어휘 목록

X-LOCK

  • 분류 : 데이터베이스 락
  • 정의 : 한 트랜잭션이 특정 데이터를 수정할 때 다른 트랜잭션이 읽거나 수정하지 못하도록 베타적으로 잠그는 락
  • 주요 용도 : 동시성 문제 방지, 트랜잭션 격리 유지
  • 관련 개념 : S-Lock (읽기 전용 잠금), Perssimistic Write (JPA 에서 X-lock을 걸기 위한 옵션)

S-LOCK

  • 분류 : 데이터베이스 락
  • 정의 : 한 트랜잭션이 특정 데이터를 읽을 때 다른 트랜잭션도 읽을 수 있지만, 수정은 못하게 막는 잠금
  • 주요 용도 : 동시에 여러 트랜잭션이 데이터를 읽어도 안전하게 조회할 수 있도록 동시성 문제 방지
  • 관련 개념 : X-LOCK (쓰기 전용 잠금, 읽기/ 쓰기 모두 막음) , Perssimistic Read (JPA에서 S-LOCK을 걸기 위한 옵션)

Dirty Read

  • 분류 : 트랜잭션 동시성 문제
  • 정의 : 한 트랜잭션이 다른 트랜잭션에서 아직 커밋되지 않은 데이터를 읽는 상황

Flush

  • 분류 : JPA / 영속성 컨텍스트
  • 정의 : 영속성 컨텍스트에 있는 변갱 내용을 DB에 동기화 하는 행위
  • 주요 특징 : 트랜잭션 커밋 시 자동으로 발생, 수동으로도 호출 가능
  • 주의 : flush 와 commit 은 다르다.

CDN

  • 분류 : 웹/네트워크 인프라
  • 정의 : 전 세계 여러 서버에 콘텐츠(이미지,JS,CSS) 를 복제해 두고, 사용자가 가까운 서버에서 빠르게 받아볼 수 있도록 하는 분산 네트워크
  • 주요 특징 : 지리적으로 가까운 서버에서 콘텐츠 제공 , 트래픽 부하 분산, 정적 리소스에 주로 사용

Middleware

  • 분류 : 서버/백엔드 아키텍처
  • 정의 : 클라이언트와 서버, 혹은 다른 애플리케이션 사이에서 요청과 응답을 처리해주는 소프트웨어 계층
  • 주요 역할 : 요청, 응답처리, 인증/인가, 로깅, 트랜잭션 관리 등..