본문 바로가기

반응형

발로 그리는 분산 시스템

(9)
Two Phase Commit(2PC) 들어가며.. "Two Phase Commit"(이하 2PC)이란 독립적인 머신에서 구동되는 프로세스들의 분산 트랜젝션 보장을 위한 프로토콜이다. '트랜잭션(transaction)'이란 용어는 주로 DB에서 많이 다루어지는데, 여러 개의 쿼리 실행을 하나의 작업 단위로 보고 모든 쿼리가 성공하거나, 그 중 하나라도 실패하면 모든 쿼리를 취소하는 작업 단위를 의미한다. 이것을 분산 시스템으로 옮겨 오면 독립적인 머신에서 구동 되는 프로세스들에게 동일한 작업들을 적용함에 있어서 모든 프로세스들에게 적용되거나 반대로 아무 프로세스에게도 적용되지 않는 작업단위를 의미한다. 예를 들어 분산 시스템 내에 A, B, C 프로세스가 구동 되고 있다고 가정하자. 프로세스 A에서 발생한 업데이트가 B, C에 도 동일하게 적..
분산 시스템 설계 - 컴포넌트간 공통 기능 분산에 대한 생각 정리 요구 사항 지금 부터 상상을 해보자. 여러분은 게임 서버를 만들고 있는 개발자다. 여러분이 만들고 있는 서버 시스템은 간단한 캐주얼 게임으로써 유저들이 플레이를 하기전에 모여 있는 채널(채널 서버)이라는 곳과 실제 게임 플레이를 하는 게임룸(게임서버)이 있다고 가정하자. 플레이어들은 게임에 접속하게 되면 가장 먼저 채널 서버에 머무르게 된다. 채널서버에서 게임방을 만들고 다른 유저를 초대하거나 다른 유저가 방에 접속하길 기다리다 게임을 플레이 할 수 있는 조건이 완성되면 게임서버로 컨넥션을 옮기고 유저간 인터렉션하며 게임을 즐기게 된다. 지금까지는 "게임 서버"는 유저 인터렉션을 통한 게임 진행만 담당했었다. 아이템 사용과 골드 소모 같은 요소들은 모두 채널 서버에서 담당 했다. 한마디로 "채널 서버와 ..
발로 그리는 분산 시스템 #Day 3 - 채팅 시스템 트래픽이 너무 많이 발생해요!! #Day 3 - 채팅 시스템 트래픽이 너무 많이 발생해요!!! 책상에서 꾸벅꾸벅 졸고 있는데 다시 전화가 왔다. 전화 : "안녕하세요 시스템팀 김미영 팀장입니다. 어제 신규 패치된 채팅 서버가 추가 될때 마다 IDC 내부 트래픽 그래프가 기하급수적으로 상승하고 있습니다. 아직은 괜찮지만 이대로라면 조만간 최대 허용 트래픽을 초과 할것 같습니다. 확인 부탁 드립니다." (읭?! 김미영 팀장 어디서 많이 듣던 이름인데...기분 탓이겠지..) 이 사실을 팀장님께 보고 드리니 아무래도 어제 투입된 채팅 시스템의 브로드캐스팅이 이런 문제를 발생 원인인것 같다고 말씀하시며 팀장님의 생각을 설명 해주셨다. 팀장 : "머신당 수용가능 최대 인원을 1000이라고 가정해보자. 그리고 머신 대수를 M 이라는 변수로 대채 해..
발로 그리는 분산 시스템 #Day 2 - 채팅 서버에 접속이 안되요!! Day 2 - 채팅 서버에 접속이 안되요!! 채팅 서버를 실서버에 반영하고 피로에 지쳐 잠이 들었다. 전지현과 손예진이 서로 나랑 사귀겠다며 싸우는 꿈을 한참 꾸고 있는데 전화가 왔다. 여자다. 전화 : "안녕하세요. 운영팀 김미영 팀장입니다. 12시 부터 게임에 접속 할 수 없다는 메시지와 함께 클라이언트가 다운 되고 있습니다. 조속한 조치 부탁드립니다." 젠장..접속이 안된다니. 게임에 접속해 보니(처음으로 우리 회사 게임에 접속했다!!) 정말 게임에 접속 할 수 없다는 메시지와 함께 클라이언트가 다운된다. 클라이언트 개발자에게 디버깅을 문의하니 채팅 서버에서 더 이상 접속을 받을 수 없다는 에러 코드를 리턴한단다. 우리 게임 평균 동접이 1만인데 채팅 서버는 동접 1천 밖에 받지 못 했던 것이다. ..
발로 그리는 분산 시스템 #Day 1 - 발로 그리는 채팅 시스템 /** 한 대의 머신이 처리 할 수 있는 cpu 파워와 memory, kernel object에는 한계가 있고 이를 극복하기 위해 분산 시스템이라는 것을 구축한다. 이번 포스팅 시스즈에서는 connection 한계를 극복하는 방법과 그러기 위해 고려할 사항들을 생각 해보자. */ 나는 대학을 졸업하자 마자 꿈에도 그리던 게임 업계에 취직했다. 직원이 채 10명도 안되는 작은 회사이긴 하지만 청년 실업 60만에 육박하는 이 사회에서 졸업과 동시에 취업이라니 얼마나 뿌듯한가!! 첫 출근하니 팀장이라는 분이 나를 맞아 주었다. '우리 회사는 출시한 게임은 몇개 안되지만 그래도 최대 동접 네 자리를 자랑하는..' 주저리 주저리..뭔 말인지도 모를 회사 소개가 끝나고 팀원들 소개로 이어졌다..아니..그냥 팀원 소..
분산 시스템 개념(Distributed System Concept) 오래간만에 휴가 기간이다. 아무런 생각도 하지말고 '분산 시스템'이라는 주제에 대해 포스팅을 시작해 보자. 분산 시스템(Distributed System)? 분산 시스템의 교과서 적인 Distributed System Concepts (Andrew S. Tanenbaum) 의 말을 빌리자면 "하나의 시스템 처럼 보이는 독립된 컴퓨터들의 집합"(A distributed system is a collection of independent computers that appears to its users as a single coherent system)이라고 정의하고 있다. 하나의 시스템 처럼 보이는 독립된 컴퓨터들의 집합 위의 정의를 두 가지 주요한 관점으로 바라 볼 수 있다. 한가지는 하드웨어 - 독립되어..
Totally Ordered Multicasting 이전 포스트에서 Lamport 타임스템프와 Lamport 알고리즘에 사용되는 개념에 대해)과 알고리즘에 사용되는 개념에 대해 알아 본적이 있다. 오늘은 좀 더 심화된 과정으로써 Lamport 알고리즘을 이용하는 Totally Ordered Multicasting에 대해 살펴 보자. Totally Ordered Multicasting이란? Totally Ordered Multicasting이란 "모든 프로세스가 바라 보는 모든 메시지(이벤트)의 순서가 동일함을 보장하는 멀티캐스팅 방법이다. 그리고 여기에 우리가 이전에 공부했던 Lamport 알고리즘이 사용될 수 있다. 왜 필요 한가? 먼저 왜 이런 멀티 캐스팅이 필요한지 예를 살펴 보자 : 전국에 걸친 지점을 가진 어떤 은행이 있다. 이 은행은 전국에 각..
Election - Bully Algorithm 용도 분산 시스템에서 특정 1개 프로세스를 coordinator로 지정하는 알고리즘. 여기서 coordinator는 leader라고도 불리며 클라우드 컴퓨팅에서 분산 시스템의 각 노드들에게 작업을 나눠 할당 해준다던지, 각각의 노드들 작업을 완료하고 결과를 돌려주면 취합하는 것과 같은 중앙 집중형 작업을 하는 노드다. 원리 각 프로세스들에게 고유한 아이디를 부여하고, 가장 큰 아이디를 가진 프로세스가 항상 coordinator 역할을 하도록 한다. 장점 여러 개의 분산된 (서버)프로세스 중 coordinator 역할을 할 프로세스를 동적으로 선정 할 수 있다. Coordinator (서버)프로세스 장애시 설정의 변경, 시스템 재시작 필요 없이 다른 프로세스가 해당 역할을 넘겨 받을 수 있다. 단점 동적인..
Logical clock 들어가며 실세계에서 완벽한 동기화란 없다. 아무리 짧은 시간을 주기로 동기화를 시도해도 결국 네트워크 지연이나 기타등등의 여러가지 이유로 아주 근소한 차이라도 오차는 있기 마련이다. 해서 나온것이 'Logical clock'라는 개념이다. Locgical clock에서 중요하게 생각하는 것은 각 이벤트 간의 인과관계다. 즉 사건 A가 사건 B보다 먼저 발생했다는 것이 중요하지, 사건 A가 B보다 얼마나 빨리 발생 했느냐 같은 것은 고려 대상이 아니다. 예를 들어, 프로세스 P1가 메시지를 보내고 프로세스 P2가 그 메시지를 받았다고 가정하자. P1가 1이라는 시간에 메시지를 보냈다면 P2가 메시지를 받는 시간은 어쨋거나 1보다만 크면 된다. 2가 됐든 100이 됐든 그것은 중요한 것이 아니라 1의 시간 ..

반응형