스터디 진행 일시
날짜 : 5월 30일 (금요일) 시간 : 오후 3시 ~ 9시 (6시간) 장소 : 강남 (오프라인)


🔧 금주 스터디 일정
  • 개발 책 6장과 7장 읽기
  • Echo 프로젝트에 그라파나 연동
  • 라이브 코테 진행


📖 개발 책 6장 & 7장
  • 6장
    • CAP 정리
      • CP : 데이터 일관성 (consistency)을 충족하는 시스템
      • AP : 가용성 (availability)을 충족하는 시스템
      • CAP 한줄로 설명하자면, “지금 조회하려는 데이터가 최신 데이터가 아닐 수 있는데, 이거 받을래(AP) ? 아니면 거절할래(CP) ?”
    • 높은 가용성과 안정성을 확보하기 위해서는 데이터 다중화가 중요하다.
    • 정족수 합의 (Quorum Consensus) 프로토콜를 사용하면 읽기/쓰기 연산 모두에 일관성을 보장할 수 있다.
      • 정족수 합의(Quorum Consensus) 프로토콜은 다수결 원칙처럼 일정 수 이상의 노드가 응답하면 OK! 라고 합의하는 방식을 말한다.
      • W(쓰기 작업에 필요한 노드 수) + R(읽기 작업에 필요한 노드 수) > N(복제본의 총 개수)를 만족한다면 일관성이 보장될 수 있다.
    • 데이터를 다중화하면 가용성은 높아지지만, 사본 간 일관성이 깨질 가능은 높아진다.
      • 버저닝과 벡터시계는 데이터 일관성 문제를 해결할 수 있는 기술이다.
    • 가십 프로토콜(Gossip Portocol)은 노드들이 주기적으로 이웃 노드들과 정보를 주고받으며, 시스템 전체에 정보를 점진적으로 전파하는 분산 통신 프로토콜이다.
    • 머클 트리(Merkle Tree)는 해시 트리(Hash Tree)라고도 불리며, 각 노드가 자식 노드들의 해시 값을 이용해 만든 해시를 저장하는 구조의 트리다.
  • 7장
    • auto increment 속성은 분산 환경에서 기본 키로 쓰기엔 문제가 있다.
    • 분산 시스템에서 유일성이 보장되는 ID를 만들는 방법은 여러 가지다.
      • 다중 마스터 복제 (multi-master-replication)
      • UUID
      • 티켓 서버
      • 트위터 스노플레이크(twitter snowflake) 접근법


💻 라이브 코테
  • 문제 : https://leetcode.com/problems/find-all-numbers-disappeared-in-an-array/description/
    • 제한 시간 내 풀 것.
    • 왜 이렇게 풀었는지 설명할 것.
    • 공간복잡도와 시간복잡도가 어떤지 설명할 것.