Database

CAP 이둠 - λ°μ΄ν„°λ² μ΄μŠ€μ˜ λΆ„μ‚° μ‹œμŠ€ν…œ 이둠

ν”„λ‘œκ·Έλž˜λ¨Έ μ˜€μ›” 2024. 9. 28.

μ‹œμŠ€ν…œ μ•„ν‚€ν…μ²˜λ₯Ό κ³΅λΆ€ν•˜λ‹€λ³΄λ‹ˆ λ°μ΄ν„°λ² μ΄μŠ€μ˜ λΆ„μ‚°μ‹œμŠ€ν…œμ— κ³΅λΆ€ν•˜κ²Œ λ˜λŠ” 일이 생겼닀. κ·Έλ•Œ CAP μ΄λ‘ μ΄λΌλŠ” 단어λ₯Ό 처음 λ΄€λŠ”λ°, Capability 의 μ•žκΈ€μžλ₯Ό λ”°μ„œ λΆ„μ‚° μ‹œμŠ€ν…œμ—μ„œ 데이터 베이슀 κ°€μš© λŠ₯λ ₯μ΄λ‚˜ 데이터 베이슀 μ„±λŠ₯에 κ΄€λ ¨λœ 이둠인쀄 μ•Œμ•˜λ‹€.

ν•˜μ§€λ§Œ κ³΅λΆ€ν•΄λ³΄λ‹ˆ μ „ν˜€ λ‹€λ₯Έ κ°œλ…μ΄μ—ˆκ³ , CAP 이둠은 λΆ„μ‚° μ‹œμŠ€ν…œμ˜ DB ν™˜κ²½μ—μ„œ λ„€νŠΈμ›Œν¬ 뢄할이 λ°œμƒν•˜λ©΄ μ‹œμŠ€ν…œμ€ μΌκ΄€μ„±κ³Ό κ°€μš©μ„± μ€‘ ν•˜λ‚˜λ₯Ό 선택해야 ν•˜λ©°, λ‘˜ λ‹€λ₯Ό λ™μ‹œμ— μ™„λ²½ν•˜κ²Œ 보μž₯ν•  수 μ—†λ‹€λŠ” μ΄λ‘ μ΄μ—ˆλ‹€. 되게 μ€‘μš”ν•œ κ°œλ…μΈ 것 κ°™μ•„μ„œ 기둝으둜 남겨두렀고 ν•œλ‹€.

κ°œλ…

λ¨Όμ € κ°œλ…μ„ λ§ν•˜μžλ©΄ λ‹€μŒκ³Ό κ°™λ‹€.

CAP 이둠(CAP theorem)은 λΆ„μ‚° μ‹œμŠ€ν…œμ—μ„œ μ„Έ κ°€μ§€ μ£Όμš” νŠΉμ„±μΈ 일관성(Consistency), κ°€μš©μ„±(Availability), 그리고 λ„€νŠΈμ›Œν¬ λΆ„ν•  ν—ˆμš©(Partition Tolerance) μ‚¬μ΄μ—μ„œ λ™μ‹œμ— λͺ¨λ“  νŠΉμ„±(CAP μ…‹ λͺ¨λ‘)을 μ™„λ²½ν•˜κ²Œ 보μž₯ν•  수 μ—†λ‹€λŠ” 이둠이닀. 이 이둠은 Eric Brewerκ°€ μ œμ•ˆν•œ κ²ƒμœΌλ‘œ, λΆ„μ‚° λ°μ΄ν„°λ² μ΄μŠ€μ˜ μ„€κ³„μ—μ„œ μ€‘μš”ν•œ 역할을 ν•œλ‹€.

 

  • 일관성(Consistency): λͺ¨λ“  λ…Έλ“œμ—μ„œ 데이터λ₯Ό 읽을 λ•Œ 항상 λ™μΌν•œ μ΅œμ‹  데이터λ₯Ό λ°˜ν™˜ν•˜λŠ” 것을 μ˜λ―Έν•œλ‹€. 즉, ν•œ λ…Έλ“œμ—μ„œ 데이터가 μ—…λ°μ΄νŠΈλ˜λ©΄ λͺ¨λ“  λ…Έλ“œμ— μ¦‰μ‹œ λ°˜μ˜λ˜μ–΄μ•Ό ν•œλ‹€.
  • κ°€μš©μ„±(Availability): 데이터λ₯Ό μš”μ²­ν•˜λŠ” λͺ¨λ“  ν΄λΌμ΄μ–ΈνŠΈκ°€ ν•˜λ‚˜ μ΄μƒμ˜ λ…Έλ“œκ°€ λ‹€μš΄λœ κ²½μš°μ—λ„ 응닡을 λ°›λŠ”λ‹€λŠ” 것을 μ˜λ―Έν•œλ‹€. 즉, λΆ„μ‚° μ‹œμŠ€ν…œμ˜ λͺ¨λ“  μž‘μ—… λ…Έλ“œκ°€ μ˜ˆμ™Έ 없이 λͺ¨λ“  μš”μ²­μ— λŒ€ν•΄ μœ νš¨ν•œ 응닡을 λ°˜ν™˜ν•œλ‹€.
  • λ„€νŠΈμ›Œν¬ λΆ„ν•  ν—ˆμš©(Partition Tolerance): λΆ„μ‚° μ‹œμŠ€ν…œμ—μ„œ λ„€νŠΈμ›Œν¬κ°€ λΆ„ν• λ˜μ—ˆμ„ λ•Œλ„ μ‹œμŠ€ν…œμ΄ κ³„μ†ν•΄μ„œ λ™μž‘ν•  수 μžˆλŠ” λŠ₯λ ₯을 μ˜λ―Έν•œλ‹€. 즉, 일뢀 λ…Έλ“œ 간에 톡신이 λΆˆκ°€λŠ₯ν•œ μƒν™©μ—μ„œλ„ μ‹œμŠ€ν…œμ΄ 계속 μž‘λ™ν•΄μ•Ό ν•œλ‹€.

λ¨Όμ € λ„€νŠΈμ›Œν¬ λΆ„ν•  ν—ˆμš©μ„ μ•Œκ³  κ°€μ•Όν•œλ‹€.

λ„€νŠΈμ›Œν¬ λΆ„ν•  ν—ˆμš©μ˜ 핡심은 λΆ„μ‚° μ‹œμŠ€ν…œμ΄ λ„€νŠΈμ›Œν¬ 문제둜 μΈν•œ λ…Έλ“œ κ°„ 톡신 λ‹¨μ ˆμ΄ λ°œμƒν•˜λ”λΌλ„, κ°€λŠ₯ν•œ λ§Žμ€ κΈ°λŠ₯을 μœ μ§€ν•˜κ³  λ‚˜μ€‘μ— 데이터 일관성을 볡ꡬ할 수 μžˆλŠ” 섀계λ₯Ό μ˜λ―Έν•œλ‹€. 즉, λ„€νŠΈμ›Œν¬κ°€ λΆ„λ¦¬λœ λ™μ•ˆμ—λ„ μ‹œμŠ€ν…œμ˜ 일뢀 λ…Έλ“œκ°€ μ •μƒμ μœΌλ‘œ λ™μž‘ν•  수 있고, λ„€νŠΈμ›Œν¬κ°€ 볡ꡬ되면 λ°μ΄ν„°μ˜ 일관성이 νšŒλ³΅λ˜λ„λ‘ ν•˜λŠ” 것이 λͺ©ν‘œμ΄λ‹€.

예λ₯Ό λ“€μ–΄, λΆ„μ‚° λ°μ΄ν„°λ² μ΄μŠ€ μ‹œμŠ€ν…œμ—μ„œ μ•„λž˜ κ·Έλ¦Όκ³Ό 같이

  • μš”μ²­μ΄ A λ°μ΄ν„°λ² μ΄μŠ€ λ…Έλ“œλ‘œ κ°€λŠ” κ²½μš°μ™€ B λ°μ΄ν„°λ² μ΄μŠ€ λ…Έλ“œλ‘œ κ°€λŠ” κ²½μš°κ°€ μžˆλ‹€.
  • λ„€νŠΈμ›Œν¬ 문제둜 인해 A와 B λ…Έλ“œ κ°„μ˜ 연결이 λŠμ–΄μ‘Œμ§€λ§Œ, 각각의 λ…Έλ“œλŠ” μ—¬μ „νžˆ ν΄λΌμ΄μ–ΈνŠΈ μš”μ²­μ„ μ²˜λ¦¬ν•  수 μžˆλ‹€.

이 경우, λ„€νŠΈμ›Œν¬ 뢄할이 λ°œμƒν–ˆμŒμ—λ„ 각 λ…Έλ“œλŠ” λ…λ¦½μ μœΌλ‘œ λ™μž‘ν•˜λ©΄μ„œ κ°€λŠ₯ν•œ λ§Žμ€ μš”μ²­μ„ μ²˜λ¦¬ν•˜λ €κ³  λ…Έλ ₯ν•œλ‹€. λ„€νŠΈμ›Œν¬κ°€ 볡ꡬ되면, 각 λ…Έλ“œκ°€ μ²˜λ¦¬ν•œ 데이터λ₯Ό λ™κΈ°ν™”ν•˜μ—¬ μ΅œμ’… 일관성을 λ§žμΆ˜λ‹€.

 

 

μ—¬λŸ¬ IT μ„œλΉ„μŠ€ νšŒμ‚¬λ“€μ€ λ‹Ήμ—°ν•˜κ²Œλ„ λΆ„μ‚° λ°μ΄ν„°λ² μ΄μŠ€ 섀계λ₯Ό κ°–κ³  κ°„λ‹€. λ§Œμ•½ 데이터 λ² μ΄μŠ€κ°€ ν•˜λ‚˜λ§Œ 있고 κ·Έ ν•˜λ‚˜μ— μž₯μ• κ°€ λ‚œλ‹€λ©΄ 단일 μž₯애지점 μ‹€νŒ¨λ‘œ λͺ¨λ“  μ„œλΉ„μŠ€κ°€ λ§ˆλΉ„λ  것이닀. 이렇기 λ•Œλ¬Έμ— 데이터 λ°±μ—… μΈ‘λ©΄, νŠΈλž˜ν”½ λΆ„μ‚° μΈ‘λ©΄, 지리적 물리적 μΈ‘λ©΄ λ•Œλ¬Έμ΄λΌλ„ λΆ„μ‚° μ‹œμŠ€ν…œμ„ κ°–κ²Œ λœλ‹€.

그럼 μš°λ¦¬λŠ” 기본적으둜 P λ₯Ό ν—ˆμš©ν•˜κ³  λ‹€μŒ 단계λ₯Ό 밟게 λ˜λŠ” 것이닀.

 

CAP 이둠의 νŠΈλ ˆμ΄λ“œμ˜€ν”„

λΆ„μ‚° λ°μ΄ν„°λ² μ΄μŠ€μ—μ„œ λ„€νŠΈμ›Œν¬ 뢄할이 λ°œμƒν•œ 경우, μ‹œμŠ€ν…œμ€ 일관성과 κ°€μš©μ„± μ‚¬μ΄μ—μ„œ νŠΈλ ˆμ΄λ“œμ˜€ν”„λ₯Ό 선택해야 ν•œλ‹€. 이 선택은 μ‹œμŠ€ν…œμ˜ μš”κ΅¬μ‚¬ν•­μ— 따라 λ‹¬λΌμ§€κ²Œ λœλ‹€.

λ¨Όμ € μ•„λž˜ κ·Έλ¦Όκ³Ό 같은 경우λ₯Ό μ˜ˆμ‹œλ‘œ μƒκ°ν•΄λ³΄μž. λΆ„μ‚° λ°μ΄ν„°λ² μ΄μŠ€ μ‹œμŠ€ν…œμ—μ„œ λ„€νŠΈμ›Œν¬ 뢄할이 μΌμ–΄λ‚˜μ„œ A 데이터 λ² μ΄μŠ€μ™€ C λ°μ΄ν„°λ² μ΄μŠ€ κ°„μ˜ 톡신이 끊기게 λ˜μ—ˆκ³ , κ·Έλ•Œ λ•Œλ§ˆμΉ¨ 1번 μ‚¬μš©μžμ˜ 포인트 μ‚¬μš©μœΌλ‘œ ν¬μΈνŠΈκ°€ 0으둜 됐닀고 κ°€μ •ν•΄λ³΄μž. A 와 C의 톡신이 λ‹¨μ ˆλμœΌλ―€λ‘œ 볡제된 정보λ₯Ό 전솑할 수 μ—†μ–΄, 데이터일관성이 λ§žμ§€ μ•Šκ²Œ 되고 각 λ°μ΄ν„°λ² μ΄μŠ€μ— 1번 μ‚¬μš©μžμ— λŒ€ν•œ 포인트λ₯Ό λ¬Όμ–΄λ³Έλ‹€λ©΄ 0 κ³Ό 10으둜 각기 λ‹€λ₯Έ 응닡이 올 것이닀.

1. CP μ‹œμŠ€ν…œ (Consistency + Partition Tolerance)

  • 일관성과 λ„€νŠΈμ›Œν¬ λΆ„ν•  ν—ˆμš©μ„±μ„ μš°μ„ ν•˜λŠ” μ‹œμŠ€ν…œμ΄λ‹€. λ„€νŠΈμ›Œν¬ 뢄할이 λ°œμƒν•˜λ©΄, μ‹œμŠ€ν…œμ€ 일관성을 μœ μ§€ν•˜κΈ° μœ„ν•΄ κ°€μš©μ„±μ„ ν¬κΈ°ν•œλ‹€. 즉, 일뢀 μš”μ²­μ€ μ²˜λ¦¬λ˜μ§€ μ•Šκ³  μ‹€νŒ¨ν•  수 μžˆμ§€λ§Œ, λͺ¨λ“  응닡은 항상 μ΅œμ‹  μƒνƒœμ˜ μΌκ΄€λœ 데이터 λ°˜ν™˜μ„ 보μž₯ν•œλ‹€.
    그림을 μ˜ˆμ‹œλ‘œ λ“€λ©΄, λ„€νŠΈμ›Œν¬ 뢄할이 μΌμ–΄λ‚ μ‹œ CP μ„€κ³„μ΄λ―€λ‘œ λ„€νŠΈμ›Œν¬κ°€ 볡ꡬ되고 A λ°μ΄ν„°λ² μ΄μŠ€μ— μˆ˜μ •λœ 정보가 C λ°μ΄ν„°λ² μ΄μŠ€μ—λ„ 반영이 λ˜μ–΄ 데이터 일관성이 보μž₯ λ˜μ—ˆμ„ λ•Œ 응닡을 μ •μƒμ μœΌλ‘œ 보낸닀. λ„€νŠΈμ›Œν¬κ°€ λ³΅κ΅¬λ˜μ–΄ λ°μ΄ν„°λ² μ΄μŠ€κ°„μ˜ 일관성 싱크λ₯Ό λ§žμΆ”λŠ” κ³Όμ • λ™μ•ˆμ˜ μš”μ²­μ€ μ‹€νŒ¨ μ²˜λ¦¬κ°€ λ˜λ―€λ‘œ κ°€μš©μ„± μΈ‘λ©΄μ—μ„œλŠ” 뢀정적이닀.
  • μ˜ˆμ‹œ: 은행 거래 μ‹œμŠ€ν…œ. 금육 μ‹œμŠ€ν…œμ—μ„œλŠ” λͺ¨λ“  데이터가 λ°˜λ“œμ‹œ 일관성을 μœ μ§€ν•΄μ•Ό ν•˜λŠ” 것이 μ€‘μš”ν•˜λ‹€. 예λ₯Ό λ“€μ–΄, ν•œ μ‚¬μš©μžκ°€ 은행 κ³„μ’Œμ—μ„œ λˆμ„ 이체할 λ•Œ λͺ¨λ“  μ‹œμŠ€ν…œμ— λ™μΌν•œ κ³„μ’Œ μž”μ•‘μ΄ λ°˜μ˜λ˜μ–΄μ•Ό ν•œλ‹€. λ§Œμ•½ λ„€νŠΈμ›Œν¬ 뢄할이 λ°œμƒν•œλ‹€λ©΄, κ°€μš©μ„±μ„ ν¬μƒν•˜λ”λΌλ„ 일관성을 μœ μ§€ν•΄μ•Ό ν•˜λŠ” 것이 μ„œλΉ„μŠ€ νŠΉμ„±μƒ 더 λ§žλ‹€.

2. AP μ‹œμŠ€ν…œ (Availability + Partition Tolerance)

  • κ°€μš©μ„±κ³Ό λ„€νŠΈμ›Œν¬ λΆ„ν•  ν—ˆμš©μ„±μ„ μš°μ„ ν•˜λŠ” μ‹œμŠ€ν…œμ•„λ‹€. λ„€νŠΈμ›Œν¬ 뢄할이 λ°œμƒν•˜λ©΄, μ‹œμŠ€ν…œμ€ κ°€μš©μ„±μ„ μœ μ§€ν•˜κΈ° μœ„ν•΄ 일관성을 포기할 수 μžˆλ‹€. 즉, λͺ¨λ“  μš”μ²­μ€ 정상 μ²˜λ¦¬λ˜μ§€λ§Œ, κ·Έ 응닡 데이터가 μΌμ‹œμ μœΌλ‘œ μΌκ΄€λ˜μ§€ μ•Šμ„ 수 μžˆλ‹€λŠ” 것이닀.
  • μ˜ˆμ‹œ: μ†Œμ…œ λ―Έλ””μ–΄ ν”Œλž«νΌ. μ†Œμ…œ λ―Έλ””μ–΄μ—μ„œλŠ” μ‚¬μš©μžκ°€ λŒ“κΈ€μ„ λ‹¬κ±°λ‚˜ μ’‹μ•„μš”λ₯Ό λˆ„λ₯΄λŠ” λ“±μ˜ μž‘μ—…μ€ μ‚¬μš©μž κ²½ν—˜ 츑면에 μžˆμ–΄ μ¦‰κ°μ μœΌλ‘œ λ°˜μ˜λ˜μ–΄μ•Ό ν•œλ‹€. λ„€νŠΈμ›Œν¬κ°€ λΆ„ν• λ˜λ”λΌλ„ κ°€μš©μ„±μ„ μœ μ§€ν•˜λŠ” 것이 μ€‘μš”ν•˜λ©°, 일관성은 λ‚˜μ€‘μ— 볡ꡬ될 수 μžˆλ‹€. μ•„λž˜ 그림을 생각해보면 μ’‹μ•„μš” 수 11이 C λ°μ΄ν„°λ² μ΄μŠ€μ—λŠ” 아직 반영이 λͺ»λœ 채 λ„€νŠΈμ›Œν¬ 뢄할이 일어 났닀. μ΄λ•Œ C 데이터 λ² μ΄μŠ€μ— μ’‹μ•„μš”λ₯Ό μš”μ²­μ΄ μ μš©λœλ‹€κ³  κ°€μ •ν•΄λ³΄μž. μš”μ²­μ— λŒ€ν•œ μ‹€νŒ¨ 처리λ₯Ό ν•œ ν›„, λ„€νŠΈμ›Œν¬κ°€ λ³΅κ΅¬λ˜μ–΄ μ’‹μ•„μš” 수 데이터λ₯Ό 11둜 일관성을 맞좘 ν›„, λ‹€μ‹œ μ’‹μ•„μš”λ₯Ό λˆ„λ₯΄λ©΄ 12 둜 μ¦κ°€μ‹œν‚€λŠ” 일관성 μ€‘μ‹œ ν”„λ‘œμ„ΈμŠ€κ°€ μ•„λ‹Œ 일단 10μ—μ„œ 11둜 증가 μ‹œμΌœ 즉각적인 μ‚¬μš©μž κ²½ν—˜μ΄ κ°€λŠ₯ν•˜κ²Œλ” κ°€μš©μ„±μ„ μ§€ν‚€κ³ , 이후 μ •ν™•ν•œ μ’‹μ•„μš” μˆ˜μ— λŒ€ν•œ 일관성은 λ„€νŠΈμ›Œν¬ 볡ꡬ λ’€ λ‚˜μ€‘μ— λ§žμΆ”κ² λ‹€λŠ” λœ»μ΄λ‹€.

 

κ²°λ‘ 

CAP 이둠은 λΆ„μ‚° μ‹œμŠ€ν…œ μ„€κ³„μ—μ„œ μ€‘μš”ν•œ 이둠으둜, λ„€νŠΈμ›Œν¬ λΆ„ν•  μ‹œ 일관성과 κ°€μš©μ„± κ°„μ˜ νŠΈλ ˆμ΄λ“œμ˜€ν”„λ₯Ό λ‹€λ£¨λŠ” 방식이닀. 섀계 μ‹œ μš”κ΅¬ 사항에 따라 μ–΄λ–€ νŠΉμ„±μ„ μš°μ„ μ‹œν• μ§€ κ²°μ •ν•΄μ•Ό ν•˜λ©°, 은행 κ±°λž˜μ™€ 같은 μ‹œμŠ€ν…œμ€ 일관성을, μ‹€μ‹œκ°„ μ±„νŒ…μ΄λ‚˜ μ†Œμ…œ λ―Έλ””μ–΄λŠ” κ°€μš©μ„±μ„ μš°μ„ μ‹œν•˜λŠ” κ²½μš°κ°€ λ§Žλ‹€. 각각의 λ„λ©”μΈμ˜ νŠΉμ„±κ³Ό μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ μš”κ΅¬μ‚¬ν•­μ„ νŒŒμ•…ν•˜κ³  κ·Έ νŠΉμ„±μ— 맞게 이둠을 μ μš©μ‹œν‚€κ²Œ μ€‘μš”ν•˜λ‹€κ³  μƒκ°λœλ‹€.

 

μ°Έκ³ 

https://www.ibm.com/kr-ko/topics/cap-theorem

λŒ“κΈ€