본문 바로가기
IT 이야기

QConSF2010 Thursday - noSQL

by csk 2010. 11. 5.

QCon 4일째 세션 내용입니다. 오늘은 noSQL을 집중적으로 들었습니다.

 

□ 시작하기 전에

- noSQL이란 기존의 RDB로는 대용량 분산 환경에 적합하지 않자
  간단한 데이터 구조에 분산에 최적화된 형태를 지원하기 위해 등장한 새로운 DB 구조.
  그러니까, DB의 분류에 새로등장해 HDB, RDB, noSQL 이런식으로 나열된다고 보면 되겠음

- noSQL 저장방식은 크게 아래 네가지 정도로 나눌 수 있음
  1) Key-Value-stores (opensource인 Cassandra)
  2) BigTable-implementations (구글의 app에 거의 사용됨)
  3) Document-stores ( mongoDB)
  4) Graph Databases (NW 구조에 데이터가 산재된 형태)

- CAP란 Strong Consistency, High Availability, Partition-tolerance의 약자로
  분산 시스템에서 중요한 세가지 개념이나 서로 상충되어, 전략적으로 한두개에 집중하게 됨.
  Concsistency를 약하게 생각하는 BASE(Basically Available, Soft-state, Eventually consistent)
  전략도 그중하나


□ 세션별 내용

 

■ noSQL at Twitter

- noSQL의 대표적 사례일테고, twitter니 확실한 대용량이고... 사람이 엄청 몰림
- Cassandra를 사용하고, 필요한 기능 몇가지는 내부 프로젝트에서 만들어 사용중
- CAP 모델에서 BASE 전략을 취하고 있음
- 데이터 구조를 보여줄때마다, 아 정말 저기는 모델이랄게 없겠구나 싶었음.
  id(키가되는 id), user id(입력한 사용자 id), text (트윗날린내용)이 거의 전부.
  이 세가지를 성능을 위해 이렇게 저렇게 조합한 테이블을 만들고 여기저기 많이 중복시킴.
- RDB기반의 기업 시스템과는 완전히 다른 새로운 세상인듯.
- id가 매우 길어야하고 신속하게 부여되야 해서, 그부분에 비공개 알고리즘을 가진듯 했음

 

■ Where to put Data

- data를 어떤 형태의 DB 또는 저장장치(hard, memory) 어디에 넣을것인지 고민하자는 내용
- 무조건 RDB가 아님을 주장하는 세션이었음
- 고려사항이라면, 사용자 수에 따른 Response time 그래프의 원하는 유형, scalibility등이 있겠음
- consistency를 강력히 원한다면, domain model(ERD형태를 말하는듯) 그려라
  하지만 SQL을 통해서는 scalibility를 기대하기는 무리다 라고 함
- 앞으로 여러 형태가 mix 된 DB 구조(noSQL/SQL이 섞인구조?), Layered 된 구조(noSQL위에
  SQL 써야하는 응용이 올라간 구조?) 등에 대한 도전이 필요함
- Data는 App 보다 생명주기가 길다. 를 불편한 진실로 소개하며 마무리.

 

■ Consistency Models in New Generation

- DB 시장이 바뀌고 있으며, RDBMS, OLAP/BI, noSQL이 시장을 삼등분 하고 있음
  (noSQL이 정말 저만큼은 아닐건데, 구글, twitter가 쓴다고 이렇게까지? --)
- noSQL은 less transactional, no joins, no complex tnx 라는 세가지 특징이 있음
- R+W>N 을 가지고 consistency를 계산하는 것을 설명했는데 잘 이해 못함.
  (R:read 해야하는 서버수 W:응답을 받아야하는 서버수 W:Replication factor)
- NW  partition이 어떤 형태인가에 따라서도 persistency 처리 방식이 달라짐
- 10gen이라는 회사였는데, mongoDB소개로 이어지는것으로 보아 그제품을 만드는 회사인듯
- 앞으로의 예견 세가지를 내놓음
  1.JSON이 널리 퍼질것임
  2.모든제품이 consistency를 조절할 수 있어야 할것임
  3.일부 형태의 SQL은 API로 제공해야 할것임

 

□ 소감

- noSQL을 주로 들었는데, 역시 아는게 많아야 건지는 것도 많더라는 진리를 절감

- 대용량 분산처리에는 수학이 많이 등장하더라는 것. 이대목에선 인도인들이 질문을 많이 하더라는 것.

  (역시 인도는 수학의 강국? ^^;)
- 중간중간 Lesson-Learned 트랙에 머리식히러 갔는데,^^;
  Agile의 Retrospective(회고)를 개인 차원에 적용하는 방법에 대해 소개하고 있었음
  내가보기엔 값싼 자기개발 서적에 1장에나올만한 내용인데, Agile을 억지로 엮었고,
  사람은 매우 적었지만 그래도 진지하게 소개하고, 진지하게 듣는 모습만은 인상적이었음.
  이번 세미나에서는 Agile이 온갖곳에! 어설프게! 엮여있다는 느낌을 강하게 받음.


마지막으로 keynote 내용 간략 정리함.

 

■ Being Elastic - Evolving Programming for the Cloud

 

- Cloud는 새로운 eco-system임
- resource rich, inexpensive, available, elastic managed, remote, virtual,
  variable, ephemeral, metered 등의 특징을 가짐
- cloud 프로그래머가 알아야 할 11가지
  1) paralleism : 병렬처리여야 cloud 환경에서 smart하게 동작
  2) layering : 깔끔한 layering이 중요. config, failure mngt등을 하위에서 깔끔하게처리
  3) services : composition/dependency/addressing/persistent/deployemnt의 단위가 됨
  4) state mngt : stateless 및 durable state 둘다 가능
  5) key value data model : noSQL의 한 형태로 분산환경에 적합하므로
  6) failure handling
  7) testing : TDD가 특히 더 적합한 영역임
  8) DevOps Mindset : 모두가 개발의주인 관리의 주인이어야함
  9) Configuration injection : 늘 환경의 주입이 가능해야
  10) monitoring : cloud는 뭐가 정상/비정상인지 조차 정의되지 않았음
  11) Metering : 늘 효율성을 측정할 수 있어야함

'IT 이야기' 카테고리의 다른 글

분석 그리고 설계  (0) 2011.04.30
QConSF2010 Friday  (0) 2010.11.06
QConSF2010 - Wednesday  (2) 2010.11.04
Innovation at Google  (1) 2010.11.04
Continuous Delivery  (0) 2010.11.03