이번글은 짧게쓸거야
길면 읽기 싫잔아 쓰는것도 힘든데다 ㅎ
일단 분산시스템을 쓰는 이유는 뭘까?
크게 두 가지 이유에서야
A. 사양을 높이는데는 한계가 있지만 데이터나 사용자 트래픽에는 한계가 없다. 그래서 여러대에서 처리해아만한다
B 모든 기계는 장애가 난다. 사양높은 한대가 절대 장애안나게 하는 것보다 사양 낮은 많은 기계들중 하나가 장애났을때 전체 서비스에 영향이 적게 만드는것이 현실성있다.
그럼 좋은 분산 시스템은 어떤걸까?
A. 여러대를 쓰는 이점을 가져가면서 사용자들은 한대를 쓸때랑 똑같은 사용자 경험을 주는거
Consistency나 synchronization에 관한 고민이 여기서 시작되는거야
B. 필요하면 언제든 새 기계를 갖다붙이면 붙이는만큼 시스템의 전체 처리량이 늘어나는거
linear scalibility 라고 하는거
C. 여러대의 기계가 노는 놈이나 혼자 일하는 놈없이 공평하게 일하는거.
Load distribution이고 이건 b랑 연결되지
D. 100대 중 1대가 장애나면 100분의 1만큼, 2대가 장애나면 100분의 2만큼만 전체서비스에 영향을 주는거에 그치는거
fault isolation 이라 그러고 spof 을 없애야 한다고 그래
E. D랑 이어지는데 장애가 발생해도 새로 기계를 갈아 넣으면 다시 100분의 100먄큼 작동하는거
그래서 분산 시스템에서 어려운 문제는 어떤 걸까?
사실 공유 상태가 없는 예를 들어 static한 웹페이지를 서비스하는 웹서버같은 것들은 고민해야할 문제가 b와 c야
그래서 앞에다가 로드밸런서같은걸 붙여주던가 하지
A, d, e는 정적인 웹페이지를 보여주는 웹서버 입장에선 b와 c가 되면은 딱히 고민안해도 되겠지
그런데 만일 공유되는 상태정보가 있는 dbms 같은거는 어떨까?
자기들끼리 입을 맞춰야겠지? Dbms 100대에 분산시켜 놓았는데 로드밸런서가 어느 dbms 인스턴스에다가 연결시키느냐에 따라 다른 값을 보여주면 그 시스템은 업무에 사용하기 힘들거야
그래서 이 입을 맞추는 문제 때문에 공유 상태가 있는 시스템들은 a와 d그리고 e가 어려운 문제가 돼
만일 무조건 다 입을 맞추게하면 그만큼 느려질거야
그리고 더 문제는 개중에 몇대가 장애나거나 통신이 안되거나 할때 어떻게 처리해야할지야
100대중에 10대랑 통신이 안되니까 방금한 write는 시스템에러라고 할까?
아니면은 나중에 입을 맞추지 하고 write를 받아줬는데 알고보니 그 10대가 장애가 아니라 자기들끼리 내부 네트워크에 문제가 있던 거였고 나머지 10대는 sync가 안맞은채로 서비스를 하고 있으면?
여기서 consistency 모델이니 cap이니 base니 하는 이론들이 나오고 하는데 또 글이 존나 길어져가지고
혹시 관심있는 형들 있으면 다음에 시간되면 다음글에 쓰던가 해볼게
- dc official App
해당 댓글은 삭제되었습니다.
네 오랜만에 왔읍니다 - dc App
더 더 써주.세여ㅛ..
어떻게 처리하는지 더..더주세요
네 넵 - dc App
예전에 쓰신글 보면서 기다리고있겠읍니다..
이런거 보면 consistency는 어떻게 맞추는지 (완전히 맞춘다고 하면), 결과적으로 consistency만 맞춘다고 하면 어느수준으로 맞추는지..(고객입장에서) 또 다른식으로 생각하면 분산하는순간 골아파지는데 언제부터 스케일업을 멈추고 스케일아웃을 하려고하는지.. 너무나 궁금증이 많이생기는 밤입니다.
해당 댓글은 삭제되었습니다.
데이터 엔지니어 코딩 많이 합니다 - dc App
전망은 모르겠는고 밑단의 그런 시스템개발은 사실 또 다른 영역이긴하지만 롤 옮기는거야 가능하다고 보네요 - dc App
제가 작년 10월에 쓴 데이터 엔지니어들 하는 일이 다 코딩이 필요한 일인데요 - dc App
해당 댓글은 삭제되었습니다.
규모 뿐만 아니라 응용서비스의 성격도 중요한데 굳이 사이즈를 말하자면 최소 수백기가에서 테라단위 이상되야 고민해볼 가치가 있지 않을까 개인적 생각에요 - dc App
국내외 원장급 시스템. 원장이란 '대부분의 원천 데이터를 가지는 데이터베이스' 정도로 이해하면 되고, 금융권, 통신권에서 가장 많이 고려하고 있는 요소임.
잘 보았습니다.
해당 댓글은 삭제되었습니다.
일단 나는 이쪽일 하다가 다시 일반적?인 백엔드 시스템 개발하다가 다시 이쪽 하고있어서 필요한 노하우나 스킬셋이 동떨어져 있다고는 생각하지 않는데 데이터를 다루는게 적성이 아닌 형들이 재미를 느낄거 같지는않음 - dc App
해당 댓글은 삭제되었습니다.
댓삭튀 멈춰!
DBMS라면 사실 대부분의 솔루션이 나오긴 했지 근데 그만큼 성능을 유지하는 것 또한 매우 힘들다는게 큰 문제고 ㅋㅋ 오라클은 데이터를 하나만 가져가는 shared-everything 구조를 택했고 1인스턴스 1데이터를 복제하거나 분산하는 shared-nothing 구조를 가지는 디비도 있음 mysql은 내가 정확하게 알진 않지만 오라클의 구조를 모방한 대신에 데이터를 다중 구조로 가져가기도 하더라. 그리고 많이 겪어 보니 실제로 D와 E를 충족하는 분산 DBMS 시스템이 가능하긴 한 건가 고민되는 부분들이 많다. 애초에 RDBMS 시스템 하에서 모든 노드의 스냅샷을 맞추지 않으면 안되는데 이것이 lock 개념으로 물고 들어갈 수 밖에 없어서 한 노드가 다른 노드에 영향을 끼치지 않기가 너무 힘듬.
댓글 추천 - dc App
db 직종에게 필요한 글 써줄 수 있어? 관련 직종을 희망하거든 ㅜㅜ
미안 나는 백엔드출신 데이터 엔지니어지 db전문가가 아니라 그건 그쪽에 형들이 잘 써줄 듯 노래형 이런형들이 그쪽 출신인걸로 알고있음 - dc App
그럼 이런글이라도 써줘 정말 도움됨
ha??
분산과 ha는 같이 갈 때가 많지만 엄연히 다른 개념임. 데이터 100을 10만큼 10개 분산해 놨으면 1개가 뒤지면 10만큼 데이터 못쓰는데 고가용성은 아니지. 단… 10데이터를 두세트 두는 방식으로 많이 구성해 - dc App
개추 - dc App
프갤의 희망