Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Loading in …3
×
1 of 64

Dynamodb 삽질기

18

Share

Download to read offline

AWSKRUG WInter Meetup
김승연/Studysearch CTO

Related Books

Free with a 30 day trial from Scribd

See all

Dynamodb 삽질기

  1. 1. Dynamodb 삽질기 김승연(Acuros) / 최보철(Teddy)
  2. 2. Dynamodb 매우 삽질기 김승연(Acuros) / 최보철(Teddy)
  3. 3. 서브 프로젝트
  4. 4. •Nginx •CPython 2.7 •uwsgi •django •mysql
  5. 5. •Nginx •Pypy •Gunicorn + eventlet •Flask •Dynamodb
  6. 6. Dynamodb
  7. 7. •NoSQL •유연한 throughput •설치 필요 없음
  8. 8. • Mongodb 16mb > Dynamodb 400kb • Index를 바꿀 수 없음 • Boto를 못만들었음
  9. 9. 시작부터 난관
  10. 10. 로컬에서 어떻게 테스트하지?
  11. 11. Sqlite + HTTP Server (http://aws.amazon.com/ko/blogs/aws/dynamodb-local-for-desktop-development/ 2013.09.12)
  12. 12. 로컬에 연결은 어떻게 하지?
  13. 13. boto
  14. 14. 망할 boto
  15. 15. boto.dynamodb boto.dynamodb2
  16. 16. ??? Connection은 ???
  17. 17. Boto config
  18. 18. Region만 입력할 수 있다
  19. 19. 1. Hosts 수정 2. boto.endpoints_path 수정 3. AWS real server에 테스트하기 4. 그만두기
  20. 20. 1. Hosts 수정 2. boto.endpoints_path 수정 3. AWS real server에 테스트하기 4. 그만두기
  21. 21. 포트는?
  22. 22. 1. 테스트 DB 서버를 sudo로 2. Iptables로 port redirection 3. 다른 방법 찾아보기 4. 그만두기
  23. 23. 1. 테스트 DB 서버를 sudo로 2. Iptables로 port redirection 3. 다른 방법 찾아보기 4. 그만두기
  24. 24. boto
  25. 25. 망할 boto
  26. 26. Table(table_name, schema=None, throughput=None, inde xes=None, global_indexes=None, connection=None) Optionally accepts a connection parameter, which should be a DynamoDBConnection instance (or subclass). This is primarily useful for specifying alternate connection parameters.
  27. 27. Table('User', connection)
  28. 28. 이게 뭐야
  29. 29. 1. 매번 Table(name, connection) 2. Monkey patching 3. 그만두기
  30. 30. 1. 매번 Table(name, connection) 2. Monkey patching 3. 그만두기
  31. 31. Table(table_name, schema=None, throughput=None, inde xes=None, global_indexes=None, connection=None) Optionally accepts a connection parameter, which should be a DynamoDBConnection instance (or subclass). This is primarily useful for specifying alternate connection parameters.
  32. 32. DynamoDBConnection.init monkey patching
  33. 33. app.config host, port, is_secure 우선순위
  34. 34. 39슬라이드만에 테스트를 할 수 있게 되었다
  35. 35. 이제 본격적인 개발코드를 작성해볼까
  36. 36. …불편하다
  37. 37. 1. schemaless • user[‘likes’] ? user[‘like’]? • type(user[‘likes’] == list)? type(user[‘likes’] == set)? 42
  38. 38. 2. Document type support 43
  39. 39. 3. Complex Lookup 46
  40. 40. 누군가는 이것들을 해결해놨을거야!
  41. 41. 있다! Schema!
  42. 42. 해결!
  43. 43. ..망할 PynamoDB
  44. 44. boto와 연관없는 자체 구현
  45. 45. 하지만
  46. 46. 1. DynamoDB 명세를 모두 구현하지 않음 • Complex Lookup 기능이 존재하지 않음 • 자체구현임에도 불구하고 List, Map Type을 구현하지 않음 55
  47. 47. 2. 다른 Library들과 호환되지 않는 동작 56 • Set type을 문자열로 저장해서 사용
  48. 48. 1. Boto와 PynamoDB 같이 쓰기 2. PynamoDB를 수정해서 쓰기 3. Boto wrapping을 구현하기 4. 그만두기
  49. 49. 1. Boto와 PynamoDB 같이 쓰기 2. PynamoDB를 수정해서 쓰기 3. Boto wrapping을 구현하기 4. 그만두기
  50. 50. BynamoDB https://github.com/teddychoi/BynamoDB
  51. 51. 1. Boto의 저수준 인터페이스 감쌈 2. 스키마 정의 3. 복잡한 조건검색 지원 4. 어느 호스트에도 쉽게 접속 가능
  52. 52. 61 Before
  53. 53. 62 After
  54. 54. 63 Before After
  55. 55. QNA

×